面向对象
类:对象共有特征的描述
对象:真实存在的具体东西
类
类名 对象名 = new 类名();
Phone p = new Phone();
类的分类:
Javabean类(定义类):用来描述一类事物的类,不写main方法
测试类:编写main方法的类,创建javabean类的对象并进行赋值调用
类名
首字母建议大写,驼峰形式
一个java文件中可以定义多个类,但是只能一个类是public修饰,pubilc修饰的类名必须是代码文件名(建议一个文件定义一个class类)
private
get set 以及方法重载都可以使用 快捷键 alt + insert
this 关键字可以区分局部变量与全局变量
age 局部变量,取值采用就近原则
This.age 全局变量
This的本质:代表方法调用者的地址值
构造方法
也叫构造器,构造函数
作用:在创建对象的时候给成员变量进行赋值
TIPS:
构造方法的定义:
若没有定义构造方法,系统将会给出一个默认的无参构造方法
如果定义了,系统不在给出默认的构造方法
构造方法的重载:带参构造方法,无参构造方法,两者方法名相同,但参数不同,这叫构造方法的重载
无论是否使用,都手动书写无参构造方法(默认值),和带全部参数的构造方法。
构造方法,在创建对象的时候由虚拟机自动调用,给成员变量进行赋值
Java内存结构
一个对象内存图
内存结构主要涉及了方法区,栈(程序执行的控制语句在),堆(new出的数据,负责存储数据)
1.加载class文件(方法区)
2.申请局部变量(Student s = new Student() 申请了一个局部变量s在栈中,s的内容为堆的内存地址)
3.在堆内存中开辟一个空间
4.初始化
5.构造方法初始化
6.将堆中的内存地址给局部变量
两个引用指向同一个对象 如 Student st1 = new Student(); Student st2 = st1; 表示 st1 st2 指向同一个堆栈区域(由于st1所存的为堆的地址,传递的值也是地址值)
基本数据类型:整数类型,浮点数类型,布尔类型,字符类型
变量中存放的是真实值
引用数据类型:除上之外
变量中存放的是地址值
成员变量:类中的变量 在堆中 有默认初始化值
局部变量:方法中的变量 在栈中 需要初始值