对象内存图(单个):
成员变量都具有默认值,同数组默认值规则
栈内存(存储局部变量)
定义在方法中的变量,例如:arr
使用完毕,立即消失
堆内存
存储new出来的内容(实体,对象)
数组在初始化时,会为存储空间添加默认值数组在初始化时,会为存储空间添加默认值
整数:默认值0
浮点数:默认值0.0
布尔值:默认值false
字符:默认值是空字符
引用数据类型(String):默认值是null
每一个new出来的东西都有一个地址值
使用完毕,会在垃圾回收器空闲时被回收
对象内存图(多个对象)
对象内存图(多个对象指向相同)
指向同一个堆内存地址,其中一个改变内容,另一个也更改内容
成员变量和局部变量
成员变量:类中方法外的变量
局部变量:方法中的变量
成员变量和局部变量区别
区别 |
成员变量 |
局部变量 |
类中位置不同 |
类中方法外 |
方法内或者方法声明上 |
内存中位置不同 |
堆内存 |
栈内存 |
生命周期不同 |
随着对象的存在而存在,随着对象的消失而消失 |
随着方法的调用而存在,随着方法的调用完毕而消失 |
初始化值不同 |
有默认的初始化值 |
没有默认的初始化值,必须先定义,赋值,才能使用 |
成员变量和局部变量的区别【理解】
-
类中位置不同:成员变量(类中方法外)局部变量(方法内部或方法声明上)
-
内存中位置不同:成员变量(堆内存)局部变量(栈内存)
-
生命周期不同:成员变量(随着对象的存在而存在,随着对象的消失而消失)局部变量(随着方法的调用而存在,醉着方法的调用完毕而消失)
-
初始化值不同:成员变量(有默认初始化值)局部变量(没有默认初始化值,必须先定义,赋值才能使用)
封装
private的使用
- 是一个权限修饰符
- 可以修饰成员(成员变量和成员方法)
- 作用是保护成员不被别的类使用,被private修饰的成员只在本类中才能访问
针对private修饰的成员变量,如果需要被其他类使用,提供相应的操作
- 提供“get变量名()”方法,用于获取成员变量的值,方法用public修饰
- 提供“set变量名(参数)”方法,用于设置成员变量的值,方法用public修饰
private关键字的使用
一个标准类的编写:
package com.object_03;
/*学生类*/
public class Student {
//成员变量
private String name;
private int age;
//get/set方法
public void setName(String n) {
name = n;
}
public String getName() {
return name;
}
public void setAge(int a) {
age = a;
}
public int getAge() {
return age;
}
public void show() {
System.out.println(name + "," + age);
}
}
package com.object_03;
public class StudentDemo {
public static void main(String[] args) {
//创建对象
Student s = new Student();
//使用set方法给成员变量赋值
s.setName("阿修罗");
s.setAge(26);
s.show();
//使用get变量获取成员变量的值
System.out.println(s.getName()+"***"+s.getAge());
System.out.println(s.getName()+"&"+s.getAge());
}
}
this关键字


this内存原理


构造方法
构造方法概述
构造方法是一种特殊的方法
作用:创建对象
//格式:
public class 类名{
修饰符 类名( 参数 ) {
}
}
//
public class StudentDemo {
public static void main(String[] args) {
Student s1 = new Student();
}
}
public class Student {
public Student() {
//构造方法内书写的内容
}
}
功能:主要是完成对象数据的初始化
构造方法的注意事项
- 如果没有定义构造方法,系统将给出一个默认的无参数构造方法
- 如果定义了构造方法,系统将不再提供默认的构造方法
- 如果自定义了带参构造方法,还要使用无参数构造方法,就必须再写一个无参数构造方法
- 无论是否使用,都手工书写无参数构造方法
标准类制作标准类制作
- 使用private修饰
- 提供一个无参构造方法
- 提供一个带多个参数的构造方法
- 提供每一个成员变量对应的setXxx()/getXxx()
- 提供一个显示对象信息的show()
- 无参构造方法创建对象后使用setXxx()赋值
- 使用带参构造方法直接创建带有属性值的对象