Java基础00-面向对象基础13
2021-06-05 00:04
标签:idt 技术 默认 步骤 赋值 vat 没有 相同 栈内存 行为就是对象能够干什么 代码示例: 代码示例: 栈内存:存放静态变量、方法、常量、局部变量 堆内存:存放new出来的对象、数组、成员变量 这是一个测试类 先从main方法开始,main方法被加载到栈内存 创建对象,它会被加载到栈内存中 new Student(),在堆内存中new一片空间放入成员遍历,并赋值默认值。 s指向堆内存中new出来的地址,这样就可以使用堆内存中的数据了。 输出s,因为s指向001,所以输出001. s指向001,name指向001中的name,所以输出null s指向001,age指向001中的age,所以输出0 最后拼接输出,null,0 s.name = “张曼玉”; 通过s(001)找到name,给他赋值"张曼玉" 和上面一样age的值修改为28 再次输出的时候就成了,张曼玉,28 s.study(); 首先找都Studen对象中的study方法,将它加载到栈内存中,而s(001)就是它的调用者。 接下来进入study方法中,输出"好好学习" 当这个方法执行完毕就会从栈内存中消失。 接下来的doHoework();方法和study()方法一样。 因为new 是在堆内存中开辟一块空间,所以,s1和s2是不一样的,互不影响。 把s1(001)赋值给s2,这样s1和s2就都指向了堆内存中的001 把第一个对象的地址赋值给第二个对象 因为s2指向的堆内存地址也是001,所以把name修改为"张曼玉" 同上age的值变为28 因为s1和s2的堆内存地址值是一样的,所以他们俩输出的结果是一样的。 s1输出的是张曼玉,28 s2输出的也是张曼玉,28 this修饰的变量是成员变量;this代表所在类的对象引用,方法被哪个对象调用,this就代表哪个对象 s1调取setName方法,setName()进入栈内存 形参name是传递过去的"林青霞" 调用者是s1(001) setName()方法中的this就是s1(001) this就是调用者s1(001),name是001地址中的name,name是参数"林青霞"赋给001中的name s2在堆内存空间中再开辟一块空间,和s1互不干扰。 总结:调用者是谁this就代表了谁 Java基础00-面向对象基础13 标签:idt 技术 默认 步骤 赋值 vat 没有 相同 栈内存 原文地址:https://www.cnblogs.com/ajing2018/p/14642179.html1. 类和对象
1.1 什么是对象
1.2 什么是面向对象
1.3 什么是类
1.4 什么是对象的属性
1.5 什么是对象的行为
1.6 类和对象的关系
1.7 类的定义
1.7.1 类的定义步骤
1.8 对象的使用
1.8.1 案例
public class Student {
String name;
int age;
public void study(){
System.out.println("好好学习");
}
public void doHomework(){
System.out.println("多多练习");
}
}
public class StudentTest {
public static void main(String[] args) {
//创建第一个对象并使用
Student s1 = new Student();
System.out.println(s1.name);//null
System.out.println(s1.age);//0
s1.name="林青霞";
s1.age=10;
System.out.println(s1.name);//林青霞
System.out.println(s1.age);//10
s1.study();//好好学习
s1.doHomework();//多多练习
}
}
2. 对象内存图
2.1 对象内存图(单个对象)
方法没有调用,所以不会加载。2.2 对象内存图(多个对象)
2.3 对象内存图(多个对象指向相同)
3. 成员变量和局部变量
3.1 什么是成员变量和局部变量
3.2 成员变量和局部变量的区别
4. 封装
4.1 private关键字
4.2 private关键字的使用
4.3 this关键字
4.4 this内存原理
4.5 封装
5. 构造方法
5.1 构造方法概述
5.2 构造方法的注意事项
5.3 标准类制作
上一篇:安装Python3.7的步骤
下一篇:四月十号java知识点