1.字节码文件是虚拟机调用的,构造函数也是虚拟机调用的
2.引用类型的变量是4个字节
3.对象不能使用主方法和构造方法,构造方法只能系统调用,主方法是虚拟机调用
4.方法空间4个字节,存放的是共享方法的地址
静态多态、静态连编、编译多态:在编译的时候便可以决定初始化哪个构造方法
创建对象的步骤(堆内存的一块空间,存放的是对象的地址)
1. 在堆中创建空间
2. 初始化全局变量,开辟属性空间
3. 开辟方法空间(类对象能够使用的方法)空间都是一样的,四个字节
4. 调用相应的构造方法,为堆里的属性初始化(参数的个数、类型、顺序决定初始化哪个构造方法---参数签名决定初始化哪个构造方法),编译的时候便可以知道
5. 返回对象的地址
游离对象:
Dog d=null;//在栈中创建变量,只是一个引用,存放与其类型相同对象的地址
d=new Dog();//赋给类型相同的对象的地址
D=new Dog(30);//上一个对象是游离对象,gc会自动垃圾回收
构造方法的特点:
1 .没有返回值的概念
2.方法名和类名相同
3.为堆里所指对象的属性初始化
4.构造方法是由虚拟机的主线程/系统调用
5.在一个类里有无数的构造方法,无参的构造方法只有一个,参数签名必须不一样
6.由编译器识别构造方法
7.构造方法也有自己的栈帧
隐藏:隐藏是一种保护机制,使得它的属性和方法不能被外部的程序所访问
实现方式:java中通过将数据封装、声明为私有,再通过一个公有的构造方法来实现对该属性的操作。以实现以下目的:
1.隐藏一个类的实现细节
2.使用者只能通过事先定制好的方法来访问数据,可以更好的加入控制逻辑
3.有利于数据的完整性,参照完整性,用户自定义完整性
4.便于修改,增强代码的可维护性
方法中使用变量的步骤
到当前的方法栈中去寻找,若没有,到对象的属性中去寻找该变量
贫血模型和充血模型
充血模型:只有方法,没有属性
贫血模型:只有属性,没有方法(不包括构造方法,但可以有构造方法)
整形和String自动支持序列化
2.引用类型的变量是4个字节
3.对象不能使用主方法和构造方法,构造方法只能系统调用,主方法是虚拟机调用
4.方法空间4个字节,存放的是共享方法的地址
静态多态、静态连编、编译多态:在编译的时候便可以决定初始化哪个构造方法
创建对象的步骤(堆内存的一块空间,存放的是对象的地址)
1. 在堆中创建空间
2. 初始化全局变量,开辟属性空间
3. 开辟方法空间(类对象能够使用的方法)空间都是一样的,四个字节
4. 调用相应的构造方法,为堆里的属性初始化(参数的个数、类型、顺序决定初始化哪个构造方法---参数签名决定初始化哪个构造方法),编译的时候便可以知道
5. 返回对象的地址
游离对象:
Dog d=null;//在栈中创建变量,只是一个引用,存放与其类型相同对象的地址
d=new Dog();//赋给类型相同的对象的地址
D=new Dog(30);//上一个对象是游离对象,gc会自动垃圾回收
构造方法的特点:
1 .没有返回值的概念
2.方法名和类名相同
3.为堆里所指对象的属性初始化
4.构造方法是由虚拟机的主线程/系统调用
5.在一个类里有无数的构造方法,无参的构造方法只有一个,参数签名必须不一样
6.由编译器识别构造方法
7.构造方法也有自己的栈帧
隐藏:隐藏是一种保护机制,使得它的属性和方法不能被外部的程序所访问
实现方式:java中通过将数据封装、声明为私有,再通过一个公有的构造方法来实现对该属性的操作。以实现以下目的:
1.隐藏一个类的实现细节
2.使用者只能通过事先定制好的方法来访问数据,可以更好的加入控制逻辑
3.有利于数据的完整性,参照完整性,用户自定义完整性
4.便于修改,增强代码的可维护性
方法中使用变量的步骤
到当前的方法栈中去寻找,若没有,到对象的属性中去寻找该变量
贫血模型和充血模型
充血模型:只有方法,没有属性
贫血模型:只有属性,没有方法(不包括构造方法,但可以有构造方法)
整形和String自动支持序列化