用new一定是在堆内存开辟新的空间
在其他类中访问这个类,必须添加这个类的类名:
面向对象:
封装 继承 多态
封装 : 生活中:衣服有的口袋有拉链,有的没有拉链; 作用目的:为了提高的访问安全性。
private:私有,加了个拉链;修饰属性和方法,一般不修饰方法。强调的是属性的私有,这就是封装。
default protected public 访问权限
一个类的生命周期:
构造函数,也叫做构造方法,特殊的方法(不能够手动调用)
* 1 构造方法名和类名一致
* 2 没有返回值类型的声明
* 3 访问修饰符可选
* 4 不能够手动调用
* 5 和创建对象是相关的 创建对象总是依赖 (看构造函数的参数) 类中提供的构造函数
*
* 如果一个类中没有提供任何构造函数,java编译器在编译的时候会自动提供默认无参构造函数。
* 如果一个类提供了构造函数,创建对象必须依赖类中已经提供的构造函数。
*
* 构造函数的作用:就是可以给类中的属性初始化赋值的一种机制
*
* 一个类中可以有多个构造函数,构造函数重载,重载:1个类中有相同的方法名,不同的参数列表,有不同的结果。
this 谁调用的,就是指代的谁,这里this指代e1和e2 this.name表示给当前对象赋值(age name)。
(结合上面构造函数的作用理解)
静态块:最先被加载,只执行一次。
构造函数与普通函数的区别:
- 一般函数是用于定义对象应该具备的功能。而构造函数定义的是,对象在调用功能之前,在建立时,应该具备的一些内容。也就是对象的初始化内容。
- 构造函数是在对象建立时由JVM调用, 给对象初始化。一般函数是对象建立后,当对象调用该功能时才会执行。
- 普通函数可以使用对象多次调用,构造函数就在创建对象时调用。
- 构造函数的函数名要与类名一样,而普通的函数只要符合标识符的命名规则即可。
- 构造函数没有返回值类型。
匿名构造块:总是随着创建对象,调用。
1. 静态块首先被加载执行,只执行一次(main函数所在类)
2. main函数是入口,根据main函数中代码的顺序执行
静态块的作用:最先被执行,只执行一次。
静态块的规则:直接使用静态变量,不能直接使用实例变量,不能使用关键字this
(创建对象总是依赖 (看构造函数的参数) 类中提供的构造函数)
执行顺序:静态代码块 => 匿名代码块 => 构造器
重载:
范围: 在一个类中
定义: 在一个类中相同的方法名,不同的参数列表(参数的个数或类型),与返回值类型无关,与static修饰无关
决定调用哪个重载的方法,是由参数的个数来决定的。
重载也叫做编译时多态,编译期间 .java-->.class 文件的时候,编译期间
作用:同一个方法名,不同的实现结果。
几个例子:
这个只是声明的对象名字一样,new开辟了新地址,在栈内存地址不一样。
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
几个例子:
。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。
。。。。。。。。。。。。。。。。。。。。。。。。。。
==比较的是地址 equals比较的是值
JVM是java内存模型:
静态全局内存空间,堆内存存放的是全局实例变量
s1.a是改变了s1堆内存里的值,s2.b是改变了静态全局变量