对象的使用
创建对象格式:
类名 对象名 = new 类名();
访问成员变量格式:
对象名.变量名 ;
访问成员方法的格式:
对象名.方法名(....);
成员变量和局部变量的区别
(1): 位置不同
成员变量: 类中方法外
局部变量: 方法定义中或者方法声明上
(2): 内存不同
成员变量: 堆内存
局部变量: 栈内存
(3): 生命周期不同
成员变量: 随着对象的创建而产生,随着对象的消失而消失
局部变量: 随着方法的调用而产生,随着方法的消失而消失
(4): 初始化值问题
成员变量: 存在默认值
局部变量: 不存在默认值,必须先赋值,然后在使用
匿名对象
概述: 就是没有名字的对象
Student s = new Student(); // 不是匿名对象,对象名是s
new Student(); // 是匿名对象
作用:
a: 调用方法,仅仅调用一次
b: 作为方法的参数传递
封装(private):
private关键字:
特点:
(1): private是一个权限修饰符
(2): 可以修饰成员变量和成员方法
(3): 被修饰的成员只能在本类中访问
this关键字
this代表的是本类对象的一个引用,谁调用我this就代表谁
构造方法
特点:
(1): 方法名和类名相同
(2): 没有返回值类型,连void也没有
(3): 没有返回值
作用:
给成员变量赋值
注意事项:
(1): 当我们没有给出构造方法的时候,系统将会提供一个默认的无参的构造方法
(2): 当我们给出构造方法的时候,系统将不会提供一个默认的无参的构造方法
对象的创建步骤
Student s = new Student();
(1): 加载Student的字节码文件到方法区
(2): 在栈内存中为s开辟空间
(3): 在堆内存中为new Student()开辟空间
(4): 对堆内存中的成员变量进行默认初始化
(5): 对堆内存中的成员变量进行显式初始化
(6): 通过构造方法对成员变量进行赋值
(7): 将堆内存中的地址赋值给栈内存中的s
static关键字
特点:
(1): 随着类的加载而加载
(2): 优先于对象存在
(3): 被类的所有的对象所共享
(4): 可以通过类名调用.本身也可以通过对象名调用
建议使用类名调用
注意事项:
(1): 在静态的方法中不能存在this关键字
(2): 静态只能访问静态
|
|