c: 从执行者变成指挥者
—————————————————————————————
访问成员方法的格式: 对象名.方法名(...)
—————————————————————————————
3个引用两个对象的内存图我们栈内存中的多个引用可以指向堆内存中的同一个地址.
—————————————————————————————
就是局部变量隐藏了成员变量的时候,我们可以通过this来明确访问的是成员变量
—————————————————————————————
构造方法: 用来给类的成员进行初始化操作
格式:
修饰符 类名 (参数列表) {
...
}
构造方法的特点:
1, 方法名与类名相同
2,没有返回值,也没有返回值类型,连void也没有
构造方法什么时候会被调用执行?
只有在创建对象的时候才可以被调用
—————————————————————————————
方法的划分:
按照返回值划分:
有返回值的方法
没有返回值的方法
按照参数来划分:
有参数的方法
没有参数的方法
—————————————————————————————
类的初始化过程:
Person p = new Person();
1,将Person.class 文件加载到内存中
2, 在栈空间中开辟一个空间,用来存储 Person类型 变量 p
3, 在堆内存中开辟一个空间,用来存储 new Person()对象中的成员信息
4, 为对象中的成员变量执行默认初始化操作
String name = null;
5, 为对象中的成员变量执行显示初始化操作
String name = "小明";
6, 执行构造方法,通过构造方法为当前对象中的成员变量初始化赋值
7, 将new Person()的地址引用 赋值给 变量p
—————————————————————————————
static : 关键字, 静态的意思
可以用来修饰类中的成员(成员变量,成员方法)
注意: 也可以用来修饰成员内部类
特点:
被静态所修饰的成员,会被所有的对象所共享
被静态所修饰的成员,可以通过类名直接调用,方便
Person.country = "中国";
Person.method();
注意事项:
静态的成员,随着类的加载而加载,优先于对象存在
在静态方法中,没有this关键字
静态方法中,只能调用静态的成员(静态成员变量,静态成员方法)
静态变量和成员变量的区别?
内存中的位置:
静态变量: 在方法区的静态区中
成员变量: 在堆内存中
生命周期:
静态变量: 随着类的加载而存在,随着类的消失而消失
成员变量: 随着对象的创建而存在, 随着对象的消失而消失
调用方式:
静态变量: 通过对象名方式调用,也可以通过类名方式调用
p.age
Person.age
成员变量: 通过对象名方式调用
p.age
所属不同:
静态变量,随着类的加载而存在,与类相关的,类变量
成员变量:随着对象的创建而存在,与对象相关的,实例变量,成员变量
—————————————————————————————
main主方法的解释
public static void main(String[] args){}
public : 公共的意思,它是一个权限修饰符,代表着最大的访问权限,为了让JVM使用,设置权限最大
static : 静态的意思,静态修饰的方法可以类名直接调用,无需创建对象,方便JVM使用
void : 返回值类型为空,代表没有数据返回,该方法由JVM调用,返回结果我们获取不到,所以不需要返回值
main : 不是关键字,但是会被JVM所识别,代表着程序的执行入口
String[] args : 代表的是一个字符串数组, 早期用它来接收键盘输入的数据
java Demo "abc" "def" "11" "22"
—————————————————————————————
帮助文档的制作方式:
编写文档注释:
@version 版本号
@author 作者
@param 参数的描述
@return 返回值的描述
通过javadoc工具,生成html 网页格式的帮助文档
javadoc -d doc -version -author ArrayTools.java
-d doc : 代表生成的帮助文档目录
-version -author : 生成的文档中包含作者与版本号信息
ArrayTools.java : 代表需要生成文档的java源文件
—————————————————————————————
Math: 数学工具类
public static double random()
返回一个 0.0<=x<1.0之间的随机小数, 有效长度为小数点后15到17位之间
获取一个1-100之间的随机整数
int num = (int)(Math.random()*100+1);
—————————————————————————————
代码块:
局部代码块:定义在方法中的,用来限制变量的作用范围
构造代码块:定义在类中方法外,用来给对象中的成员初始化赋值
静态代码块:定义在类中方法外,用来给类的静态成员初始化赋值
同步代码块:多线程部分详解
代码块的执行顺序:
静态代码块 --> 构造代码块 --> 构造方法