面向对象、类 和 对象、对象的内存管理、引用类型的使用、构造方法
一、面向对象
1.编程思想:
例子:将大象放进冰箱需要几步?
面向过程:
打开冰箱(){
}
存储大象(){
}
关闭冰箱(){
}
面向对象:
类:
冰箱
打开(){
打开冰箱
}
关闭(){
关闭冰箱
}
大象
存储(){
存储大象
}
二、类 和 对象 1.概念 类(class):类是对现实生活中一类具有共同属性和行为的抽象. 对象:是能够看到到摸得着并且真实存在的实体,也称之为实例对象. 2.类的定义 1)类中拥有成员变量(属性)和成员方法(行为) public class Class { int a; String b; public void c(){} } 3.对象的调用 1)通过类创建对象 类名 对象名 = new 类名(); 2)调用对象的成员变量和成员方法 对象名.变量名 对象名.方法名() public class ClassTest { public static void main(String[] args) { Class classTest = new Class(); classTest.a=1; classTest.b="String类型"; classTest.c(); } 3)注意: 必须先创建类(class),然后再创建类的对象
三、对象的内存管理 堆:数组真实的数据 / 对象 栈:局部变量 / 临时变量 方法区:类相关的信息
一个对象的内存图

两个引用使用同一个对象的内存图

两个引用指向同一个对象的内存图

对象类型作为方法返回值时的内存图

四、引用类型的使用(数组/ 类 / 接口)
数据类型:基本数据类型 + 引用数据类型(数组/ 类 / 接口)
1.引用类型作为成员变量使用
a.可选择性进行初始化,有默认初始化值,引用类型默认初始值都是null
b.引用类型:数组 / 类 / 接口
2.引用类型作为方法参数和返回值使用
a.参数在传递时,传递的是地址值,内容会改变
b.返回值是引用数据类型,则需要在方法内进行初始化操作,否则在外部调用时会出现空指针异常.
3.主方法中直接创建,属于局部变量
Car car = new Car()
主方法中通过对象名调用,属于成员变量
stu.car = new Car();
4.局部变量和成员变量的区别
a.位置区别
局部变量: 方法中 或者 形参上
成员变量: 类中,方法外
b.初始化区别
局部变量: 使用前,必须进行初始化操作
成员变量: 使用前,可以不进行初始化操作,因为有默认初始值
c.使用范围区别
局部变量: 只能作用在当前方法中
成员变量: 类中
d.JVM内存中的区别
局部变量:栈中
成员变量:堆中
e.生命周期的区别
局部变量: 随着方法的调用而存在,随着方法的使用完成而消失
成员变量:随着对象的创建而存在,随着对象的消失而消失
五、构造方法
1.语法格式:
a.方法名和类名一致
b.构造方法没有返回值类型,连void都没有
c.无参构造方法是计算机默认添加的
2.作用: 用于初始化成员变量
3.执行时机:创建对象是调用,每创建一个对象,都会执行一次构造方法.
4.this关键词: 表示当前对象
this在构造方法中使用:this( ) 不能在普通方法中使用,只能写在构造方法中。
在构造方法中使用时,必须是第一条语句。
public class Student {
String name;
// 无参构造方法(没有参数的构造方法)
public Student() {
this("张三");
}
// 有参构造方法
public Student(String name) {
this.name = name;
}
// 输出name和age
public void print() {
System.out.println("姓名:" + name);
}
public static void main(String[] args) {
Student stu = new Student();
stu.print();
}
}
this在成员方法中使用:
本文介绍了面向对象编程的基本概念,包括类与对象的定义、使用及内存管理。讲解了对象在堆、栈和方法区的存储,以及引用类型的使用,如作为成员变量、方法参数和返回值。同时,阐述了构造方法的作用和使用,强调了对象初始化的重要性。
132

被折叠的 条评论
为什么被折叠?



