Java入门学习笔记有哪些?

2026-05-19 12:521阅读0评论SEO问题
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计3623个文字,预计阅读时间需要15分钟。

Java入门学习笔记有哪些?

《ZINC Java学习笔记前言:所有笔记总结自狂神的Java基础视频 + Bilibili链接:https://www.bilibili.com/video/BV12J41137hu?p=1 IDEA小技巧:psvm+回车给一个main方法 + Ctrl+d复制当前行到下一行 + sout+回车直接输出》

ZINC java_study笔记 前言:

所有笔记均总结自狂神的java基础视频

www.bilibili.com/video/BV12J41137hu?p=1

idea小技巧
  • psvm+回车直接给一个main方法
  • ctrl+d复制当前行到下一行
  • sout+回车直接输出
  • 输入的时候 new Scanner(System.in); 然后alt+回车
  • 100.for 直接生成一个for循环
  • 数组名.for自动生成一个for-each循环
  • alt+insert生成构造器 同样也可以生成get/set方法
  • ctrl+alt+t自动设置嵌套
java三大版本
  • javaSE:标准版(桌面程序,控制台开发.....)
  • javaME:嵌入式开发
  • javaEE:企业版
JDK,JRE,JVM

JDK包含了JRE 开发时使用

JRE是java运行时的环境 包含了java的虚拟机

JVM是java的虚拟机

java内存分析

基础语法 变量分类:

java是强语言类型

java的数据类型分为两大类:

Java入门学习笔记有哪些?

  • 基本类型
  • 引用类型

注意一下float+f long+l就行了

变量的类型
  • 类静态变量,写在类内方法外

static int a=0;

  • 实例变量,写在类内方法外

int a=0;

  • 局部变量,写在方法内

int a=0;

  • 常量,可以是类的,可以是局部,也可以是实例

final int a=0; 基本运算符

  • 算术运算符:

+,-,*,/,%,++,--

  • 赋值运算符

=

  • 关系运算符

>,<,<=,>=,==,!=,instanceof

  • 逻辑运算符

&&,||,!

  • 位运算符

&,|,^,~,>>,<<,>>>

  • 条件运算符

?:

  • 扩展赋值运算符

+=,-=,*=,/=

  • 很多运算会使用工具类 比如Math等等
包机制

定义一个包用的是package 导入一个包用的是Import //import base.*;

  • 包的本质就是一个文件夹 或者是一个命名空间,一般用公司域名倒置用作包名
  • 有时候当我们需要用到某些包里面的方法的时候,要导入包
java Doc
  • javadoc命令是用来生成自己api文档的
  • 加在类上就是类注释 加在方法里面就是方法的注释

@author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws 异常抛出情况

使用方法:

javadoc -encoding UTF-8 -charset UTF-8 Doc.java java流程控制 用户交互Scanner

  • java.utilScanner java5的新特性,可以通过Scanner类来获取用户的输入
  • 基本语法

Scanner s=new Scanner(System.in);

  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用hasNext()与hasNextLine()判断是否还有输入的数据

  • sanner用完之后要关闭

scanner.close()

  • next()和nextLine()的区别就是 一个不能读空白分割 一个可以读取整行,以换行符为结束符
if选择结构

if(){ } else if{ } else{ } switch多选择结构

switch(expression){ case value1: break; case value2: break; default: }

  • switch 语句中的变量类型可以是:
  • byte、short、int、char
  • 从java se7开始switch可以支持String 同时case标签必须为字符串常量或字面量
  • 注意break的使用 否则会出现case穿透现象
循环
  • while

while(){}

  • do while
  • 即使不能进入循环也能至少执行一次

do{ }while()

  • for
  • for 支持迭代的最有效的结构

for(;;){ }

  • 增强for循环

for(int x:number){ sout(numbers[i]) } 跳出循环 break

  • 终止循环,强制退出循环
continue----------
  • 终止某次循环
方法

System.out.println()

  • 格式

public 返回值 名字(形式参数){ }

public static 返回值 名字(形式参数){ }

  • 如果是静态方法可以直接在其他的方法中被调用 是属于类的 即类中的就可以随便用 用.
值传递和引用传递
  • 重载就是在一个类中有相同的名称但是参数不同
  • 方法名称必须相同,参数列表必须不同 满足两个条件即可
命令行传参
  • 依靠命令行参数传递给main

public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("arg["+i+"]:"+args[i]); } }

在加载一个类的时候要到包的路径 包.类才能引用

可变参数
  • 可以传递很多个值 也叫做不定向参数

用法:

  • 指定类型后面加一个...省略号
  • 一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数必须在它之前声明

public static void main(String[] args) { demo02 de=new demo02(); de.test(1,2,3,4,5); } public void test(int ...i){ System.out.println(i[0]); }

此时传递的参数可以是多个同一类型的参数 也可以是数组,因为本质上可变参数就是一个数组

new int[]{1,2,3,4,5} 数组 数组的声明和创建

  • 数组长度是固定的,一旦声明不可改变
  • array.length 获得数组的长度

声明方式:

类型[] 变量名; //首选 或者 类型 变量名[];

数组的创建:

int[] nums; nums=new int[10]; 数组的三种初始化

  • 静态初始化

int[] a={1,2,3}; Man[] mans={new Man(1,1),new man(2,2)}

  • 动态初始化

int[] b=new int[10]; b[0]=10;

  • 默认初始化

数组也是一种引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化 数组的使用

  • for-each循环

for (int arrau : arraus) { System.out.println(arrau); } 多维数组

  • 本质上就是数组的嵌套 就是数组里面有数组
Arrays类
  • java.util.Arrays
  • Arrays.toString(a) 打印出数组a
稀疏数组
  • 对于有的数组利用率比较低的就可以使用稀疏数组

  • 本质还是一个二维数组

面向对象

public class pat{ public String name; public int age; public void say(){ sout("交了一声"); } }

  • 类=属性+方法
  • 本质:以类的方式组织代码,以对象的组织封装数据
  • 三大特性:继承 封装 多态
静态方法的调用
  • 类名.方法名

非静态方法的调用:

  • new一个对象 然后对象.方法名

static的区别 就是static是和类一起创建的 而非静态的是和对象一起加载的 所以静态与非静态之间无法相互调用 静态可以直接掉静态 非静态可以直接掉非静态

值传递和引用传递

e.g:传对象就是传引用 传数就是传值 对象与类的关系

  • 类是一种抽象的数据类型,他是对某一类事物整体描述/定义,但是不能代表某一个具体的事物
  • 对象是抽象概念的具体实例
类的构造函数
  • 一个类即使什么都不写 也会有默认的东西 那是因为存在构造方法

  • 构造器可以用于初始化一些属性,默认是无参构造

  • 如果定义了有参构造 就必须显式定义有参构造

  • 构造器特性:1.和类名相同 2.没有返回值

  • 构造器作用:1.new 本质在于调用构造方法 2.初始化对象的值

  • 注意点:1.定义有参构造之后,如果向使用无参构造,显示的定义一个无参的构造

封装 核心:set/get
  • 该露的露 该藏的藏,提高安全性,隐藏代码实现细节
  • 程序设计追求:高内聚,低耦合
  • 核心就是 即对于私有的属性 我们要提供public的方法来进行调用
继承
  • extends的意思是"扩展",子类是父类的的扩展
  • 继承的本质是对一批类的抽象,从而实现对现实世界更好的建模
  • java中只有单继承没有多继承
  • 子类继承了父类 就拥有了父类的全部方法 私有的无法继承、
  • java中所有的类 直接或者间接继承object类
  • 默认会调用父类的无参构造 相当于一个super()
super
  • 和this差不多 不过是调用父类的一些方法和属性(私有除外)

super注意点: 1.super调用父类的构造方法,必须在构造方法的第一个 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造方法 vs this: 代表的对象不同: this:本身调用者这个对象 super:代表父类对象的应用 前提: this:没有继承也可以使用 super:只能在继承条件下才可以使用 构造方法: this():本类的构造 super():父类的构造 方法重写

  • 对象能执行那些方法主要看左边 和右边的关系不大

  • 重写都是方法的重写

  • 静态方法和非静态方法不一样

  • 重写的关键就是 public和static

重写:需要有继承关系,子类重写父类的方法! 1.方法名必须相同 2.参数列表必须相同 3.修饰符:范围可以扩大 4.抛出的异常:范围 可以被缩小 但是不能被扩大 重写,子类的方法和父类一致 方法体不同 为什么要重写: 1.父类的功能,子类不一定需要或者不一定满足 多态

  • instanceof 判断一个实例是否属于某个类
  • 子类对象转父类对象可以直接转
  • 父类对象转子类对象需要强制类型转换
  • 方便方法的调用 减少重复的代码

注意事项: 1.多态是方法的多态 2.父类和子类,有联系 类型转换异常 classcastException 3.存在条件: 继承关系 方法需要重写 父类引用指向子类对象! Father f1=new Son(); 无法多态的: 1.static 方法,属于类,他不属于实例 2.final 常量; 3.private方法

多态是什么:

即同一方法可以根据发送对象的不通而采用不同的行为方式

static关键字

用法:

package base.lei; public class student { private static String name; private int age; public static void main(String[] args) { student s1=new student(); System.out.println(s1.age); System.out.println(s1.name); System.out.println(student.name); System.out.println(name); } }

静态代码快:

static{ }

匿名代码快:

{ }

静态导入包

import static java.lang.Math.random

抽象类

public abstract void Action{ public abstract void dosomething(){ } }

  • abstract用在方法上边是只有方法的名字,没有方法的实现,他的子类必须重写父类的方法 除非子类也是abstract
  • 抽象类不能new 只能通过子类来约束
  • 抽象方法必须在抽象类中 抽象类可以实现普通方法
接口-interface
  • 只有规范!自己无法写方法~专业的约束 约束和实现分离 接口就是规范 定义的就是一组规则
  • 接口中的所有定义都是抽象的 public abstract
  • 接口中所有定义的属性都是静态常量 public static final
implements

实现了接口的类,就需要重写接口,可以用java实现多继承

public interface userimp implements user{ alt+回车 }

作用:

1.约束 2.定义一些方法,让不同的人实现 3.public abstract 4.public static final 5.接口不能被是实例化~,接口中没有构造方法~ 6.implements可以实现多个接口 7.必须要重写接口中的方法 内部类

  • 在一个类里面再写一个类就是内部类
  • 内部类可以获得外部类的方法以及私有属性私有方法!!!
  • 一个java类中可以有多个class类 但是只能有一个public class
  • 直接new就是匿名对象
异常机制

Exception

需要掌握的三种异常:

  • 检查性异常:最具代表的检查异常就是用户错误或者问题引起的异常,这是程序员无法预见的 例如要打开一个不存在的文件,异常发生且编译时不能被忽略
  • 运行时异常:运行时异常是可能被程序员忽略的异常
  • 错误ERROR:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如 栈溢出时一个错误就发生了,他们在编译也检查不到

异常分为 error和exception

  • error都是虚拟机的事 exception是用户的事
java处理异常的关键字

try,catch,finally,throw,throws

try{}catch{}是必要的 可以不要finally,一般用来做善后工作

catch可以多个 打印栈信息

e.printStackTrace(System.err); throw

  • 主动抛出异常

一般在方法中使用

throws
  • 假设方法中处理不了异常 那么把方法网上抛

一般配合try catch然后解决

自定义异常
  • 自定义异常用来处理一些小问题
  • 只需要继承继承Expection类就行

本文共计3623个文字,预计阅读时间需要15分钟。

Java入门学习笔记有哪些?

《ZINC Java学习笔记前言:所有笔记总结自狂神的Java基础视频 + Bilibili链接:https://www.bilibili.com/video/BV12J41137hu?p=1 IDEA小技巧:psvm+回车给一个main方法 + Ctrl+d复制当前行到下一行 + sout+回车直接输出》

ZINC java_study笔记 前言:

所有笔记均总结自狂神的java基础视频

www.bilibili.com/video/BV12J41137hu?p=1

idea小技巧
  • psvm+回车直接给一个main方法
  • ctrl+d复制当前行到下一行
  • sout+回车直接输出
  • 输入的时候 new Scanner(System.in); 然后alt+回车
  • 100.for 直接生成一个for循环
  • 数组名.for自动生成一个for-each循环
  • alt+insert生成构造器 同样也可以生成get/set方法
  • ctrl+alt+t自动设置嵌套
java三大版本
  • javaSE:标准版(桌面程序,控制台开发.....)
  • javaME:嵌入式开发
  • javaEE:企业版
JDK,JRE,JVM

JDK包含了JRE 开发时使用

JRE是java运行时的环境 包含了java的虚拟机

JVM是java的虚拟机

java内存分析

基础语法 变量分类:

java是强语言类型

java的数据类型分为两大类:

Java入门学习笔记有哪些?

  • 基本类型
  • 引用类型

注意一下float+f long+l就行了

变量的类型
  • 类静态变量,写在类内方法外

static int a=0;

  • 实例变量,写在类内方法外

int a=0;

  • 局部变量,写在方法内

int a=0;

  • 常量,可以是类的,可以是局部,也可以是实例

final int a=0; 基本运算符

  • 算术运算符:

+,-,*,/,%,++,--

  • 赋值运算符

=

  • 关系运算符

>,<,<=,>=,==,!=,instanceof

  • 逻辑运算符

&&,||,!

  • 位运算符

&,|,^,~,>>,<<,>>>

  • 条件运算符

?:

  • 扩展赋值运算符

+=,-=,*=,/=

  • 很多运算会使用工具类 比如Math等等
包机制

定义一个包用的是package 导入一个包用的是Import //import base.*;

  • 包的本质就是一个文件夹 或者是一个命名空间,一般用公司域名倒置用作包名
  • 有时候当我们需要用到某些包里面的方法的时候,要导入包
java Doc
  • javadoc命令是用来生成自己api文档的
  • 加在类上就是类注释 加在方法里面就是方法的注释

@author 作者名 @version 版本号 @since 指明需要最早使用的jdk版本 @param 参数名 @return 返回值情况 @throws 异常抛出情况

使用方法:

javadoc -encoding UTF-8 -charset UTF-8 Doc.java java流程控制 用户交互Scanner

  • java.utilScanner java5的新特性,可以通过Scanner类来获取用户的输入
  • 基本语法

Scanner s=new Scanner(System.in);

  • 通过Scanner类的next()与nextLine()方法获取输入的字符串,在读取前我们一般需要 使用hasNext()与hasNextLine()判断是否还有输入的数据

  • sanner用完之后要关闭

scanner.close()

  • next()和nextLine()的区别就是 一个不能读空白分割 一个可以读取整行,以换行符为结束符
if选择结构

if(){ } else if{ } else{ } switch多选择结构

switch(expression){ case value1: break; case value2: break; default: }

  • switch 语句中的变量类型可以是:
  • byte、short、int、char
  • 从java se7开始switch可以支持String 同时case标签必须为字符串常量或字面量
  • 注意break的使用 否则会出现case穿透现象
循环
  • while

while(){}

  • do while
  • 即使不能进入循环也能至少执行一次

do{ }while()

  • for
  • for 支持迭代的最有效的结构

for(;;){ }

  • 增强for循环

for(int x:number){ sout(numbers[i]) } 跳出循环 break

  • 终止循环,强制退出循环
continue----------
  • 终止某次循环
方法

System.out.println()

  • 格式

public 返回值 名字(形式参数){ }

public static 返回值 名字(形式参数){ }

  • 如果是静态方法可以直接在其他的方法中被调用 是属于类的 即类中的就可以随便用 用.
值传递和引用传递
  • 重载就是在一个类中有相同的名称但是参数不同
  • 方法名称必须相同,参数列表必须不同 满足两个条件即可
命令行传参
  • 依靠命令行参数传递给main

public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("arg["+i+"]:"+args[i]); } }

在加载一个类的时候要到包的路径 包.类才能引用

可变参数
  • 可以传递很多个值 也叫做不定向参数

用法:

  • 指定类型后面加一个...省略号
  • 一个方法中只能指定一个可变参数,他必须是方法的最后一个参数,任何普通的参数必须在它之前声明

public static void main(String[] args) { demo02 de=new demo02(); de.test(1,2,3,4,5); } public void test(int ...i){ System.out.println(i[0]); }

此时传递的参数可以是多个同一类型的参数 也可以是数组,因为本质上可变参数就是一个数组

new int[]{1,2,3,4,5} 数组 数组的声明和创建

  • 数组长度是固定的,一旦声明不可改变
  • array.length 获得数组的长度

声明方式:

类型[] 变量名; //首选 或者 类型 变量名[];

数组的创建:

int[] nums; nums=new int[10]; 数组的三种初始化

  • 静态初始化

int[] a={1,2,3}; Man[] mans={new Man(1,1),new man(2,2)}

  • 动态初始化

int[] b=new int[10]; b[0]=10;

  • 默认初始化

数组也是一种引用类型,它的元素相当于类的实例变量,因此数组一经分配空间,其中的每个元素也被按照实例变量同样的方式被隐式初始化 数组的使用

  • for-each循环

for (int arrau : arraus) { System.out.println(arrau); } 多维数组

  • 本质上就是数组的嵌套 就是数组里面有数组
Arrays类
  • java.util.Arrays
  • Arrays.toString(a) 打印出数组a
稀疏数组
  • 对于有的数组利用率比较低的就可以使用稀疏数组

  • 本质还是一个二维数组

面向对象

public class pat{ public String name; public int age; public void say(){ sout("交了一声"); } }

  • 类=属性+方法
  • 本质:以类的方式组织代码,以对象的组织封装数据
  • 三大特性:继承 封装 多态
静态方法的调用
  • 类名.方法名

非静态方法的调用:

  • new一个对象 然后对象.方法名

static的区别 就是static是和类一起创建的 而非静态的是和对象一起加载的 所以静态与非静态之间无法相互调用 静态可以直接掉静态 非静态可以直接掉非静态

值传递和引用传递

e.g:传对象就是传引用 传数就是传值 对象与类的关系

  • 类是一种抽象的数据类型,他是对某一类事物整体描述/定义,但是不能代表某一个具体的事物
  • 对象是抽象概念的具体实例
类的构造函数
  • 一个类即使什么都不写 也会有默认的东西 那是因为存在构造方法

  • 构造器可以用于初始化一些属性,默认是无参构造

  • 如果定义了有参构造 就必须显式定义有参构造

  • 构造器特性:1.和类名相同 2.没有返回值

  • 构造器作用:1.new 本质在于调用构造方法 2.初始化对象的值

  • 注意点:1.定义有参构造之后,如果向使用无参构造,显示的定义一个无参的构造

封装 核心:set/get
  • 该露的露 该藏的藏,提高安全性,隐藏代码实现细节
  • 程序设计追求:高内聚,低耦合
  • 核心就是 即对于私有的属性 我们要提供public的方法来进行调用
继承
  • extends的意思是"扩展",子类是父类的的扩展
  • 继承的本质是对一批类的抽象,从而实现对现实世界更好的建模
  • java中只有单继承没有多继承
  • 子类继承了父类 就拥有了父类的全部方法 私有的无法继承、
  • java中所有的类 直接或者间接继承object类
  • 默认会调用父类的无参构造 相当于一个super()
super
  • 和this差不多 不过是调用父类的一些方法和属性(私有除外)

super注意点: 1.super调用父类的构造方法,必须在构造方法的第一个 2.super必须只能出现在子类的方法或者构造方法中 3.super和this不能同时调用构造方法 vs this: 代表的对象不同: this:本身调用者这个对象 super:代表父类对象的应用 前提: this:没有继承也可以使用 super:只能在继承条件下才可以使用 构造方法: this():本类的构造 super():父类的构造 方法重写

  • 对象能执行那些方法主要看左边 和右边的关系不大

  • 重写都是方法的重写

  • 静态方法和非静态方法不一样

  • 重写的关键就是 public和static

重写:需要有继承关系,子类重写父类的方法! 1.方法名必须相同 2.参数列表必须相同 3.修饰符:范围可以扩大 4.抛出的异常:范围 可以被缩小 但是不能被扩大 重写,子类的方法和父类一致 方法体不同 为什么要重写: 1.父类的功能,子类不一定需要或者不一定满足 多态

  • instanceof 判断一个实例是否属于某个类
  • 子类对象转父类对象可以直接转
  • 父类对象转子类对象需要强制类型转换
  • 方便方法的调用 减少重复的代码

注意事项: 1.多态是方法的多态 2.父类和子类,有联系 类型转换异常 classcastException 3.存在条件: 继承关系 方法需要重写 父类引用指向子类对象! Father f1=new Son(); 无法多态的: 1.static 方法,属于类,他不属于实例 2.final 常量; 3.private方法

多态是什么:

即同一方法可以根据发送对象的不通而采用不同的行为方式

static关键字

用法:

package base.lei; public class student { private static String name; private int age; public static void main(String[] args) { student s1=new student(); System.out.println(s1.age); System.out.println(s1.name); System.out.println(student.name); System.out.println(name); } }

静态代码快:

static{ }

匿名代码快:

{ }

静态导入包

import static java.lang.Math.random

抽象类

public abstract void Action{ public abstract void dosomething(){ } }

  • abstract用在方法上边是只有方法的名字,没有方法的实现,他的子类必须重写父类的方法 除非子类也是abstract
  • 抽象类不能new 只能通过子类来约束
  • 抽象方法必须在抽象类中 抽象类可以实现普通方法
接口-interface
  • 只有规范!自己无法写方法~专业的约束 约束和实现分离 接口就是规范 定义的就是一组规则
  • 接口中的所有定义都是抽象的 public abstract
  • 接口中所有定义的属性都是静态常量 public static final
implements

实现了接口的类,就需要重写接口,可以用java实现多继承

public interface userimp implements user{ alt+回车 }

作用:

1.约束 2.定义一些方法,让不同的人实现 3.public abstract 4.public static final 5.接口不能被是实例化~,接口中没有构造方法~ 6.implements可以实现多个接口 7.必须要重写接口中的方法 内部类

  • 在一个类里面再写一个类就是内部类
  • 内部类可以获得外部类的方法以及私有属性私有方法!!!
  • 一个java类中可以有多个class类 但是只能有一个public class
  • 直接new就是匿名对象
异常机制

Exception

需要掌握的三种异常:

  • 检查性异常:最具代表的检查异常就是用户错误或者问题引起的异常,这是程序员无法预见的 例如要打开一个不存在的文件,异常发生且编译时不能被忽略
  • 运行时异常:运行时异常是可能被程序员忽略的异常
  • 错误ERROR:错误不是异常,而是脱离程序员控制的问题,错误在代码中通常被忽略。例如 栈溢出时一个错误就发生了,他们在编译也检查不到

异常分为 error和exception

  • error都是虚拟机的事 exception是用户的事
java处理异常的关键字

try,catch,finally,throw,throws

try{}catch{}是必要的 可以不要finally,一般用来做善后工作

catch可以多个 打印栈信息

e.printStackTrace(System.err); throw

  • 主动抛出异常

一般在方法中使用

throws
  • 假设方法中处理不了异常 那么把方法网上抛

一般配合try catch然后解决

自定义异常
  • 自定义异常用来处理一些小问题
  • 只需要继承继承Expection类就行