目录
什么是类?
什么是对象
为什么java会设计对象
Java对象该怎么用
程序执行流程
类的加载顺序
什么是类?
类是构建对象的模板,一个类可以创建多个对象,每个对象的数据的最初来源来自对象
public class Student{
public int age = 18;
public String name = "张三";
public double height = 180.5;
} //创建Student类
Student s = new Student();
System.out.println(s.age);
第一个student:表示数据类型;
s:表示项目或者变量的名称;
new关键字:要求在堆内存中开辟内存空间;
Student():构造器,在创建对象时给对象赋值;
= :赋值操作,将堆内存中的创建的新空间地址赋值给s;
Student s1 = new Student();
Student s2 = new Student();
s2.name = "李四";
方法区存储类信息!!!!!!
什么是对象
对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
看看周围真实的世界,会发现身边有很多对象,车,狗,人等等。所有这些对象都有自己的状态和行为。拿一条狗来举例,它的状态有:名字、品种、颜色,行为有:叫、摇尾巴和跑。对比现实对象和软件对象,它们之间十分相似软件对象也有状态和行为。软件对象的状态就是属性,行为通过方法体现。在软件开发中,方法操作对象内部状态的改变,对象的相互调用也是通过方法来完成。
为什么java会设计对象
在class插入get、set方法
Java对象该怎么用
类信息先放在方法区,main方法入栈,注意this
程序执行流程
图中123所在位置为字符串常量池。
基本数据类型(如整数、浮点数、布尔值等)直接存储在栈内存中,其值直接保存在变量中。当你将一个基本数据类型的变量赋值给另一个变量时,会复制该变量的值,因此每个变量都有其自己的数据副本。(如上图flay方法中的 public void flay(int num){};)
引用数据类型(如对象、数组、函数等)存储在堆内存中,而变量中保存的是堆内存中的对象地址。当你将一个引用数据类型的变量赋值给另一个变量时,实际上只是复制了引用地址,而不是对象本身。(如上图run方法中String name = “123”;)
类的加载顺序
public class Test extends Base{
public Test(){
System.out.println("test constructor");
}
public static void main(String[] args){
new Test();
}
static{
System.out.println("test static");
}
//static修饰的代码块在main方法执行之前执行,其目的是修饰main方法。
}
class Base{
static{
System.out.println("base static");
}
public Base(){
System.out.println("base constructor");
}
}
结果为
//base static
//test static
//base constructor
//test constructor
注意:static修饰的代码块在main方法执行之前执行,其目的是修饰main方法。
首先扫描main方法所在的类Test类,又发现Test的父类为Base类(再扫描发现Base类没有父类),然后编译(java文件变为class文件进入方法区),父类先进入方法区,加载Base中的static方法,再子类进入方法区,执行Test中的static。
然后main方法入栈,子类创建新对象时,父类要先创建对象。所以要先执行Base类的构造器,再执行Test子类中的构造器。