内存分析—对象的实例化过程
来源:互联网 发布:淘宝上卖内衣的货源 编辑:程序博客网 时间:2024/05/17 13:42
package com.JAVABASIS6;
//菲佣类型,描述菲佣的状态,行为
class Servant{
String name;//姓名
int age;//年龄
int height;//身高
void cook(){
System.out.println(“做饭”);
}
void wash(){
System.out.println(“洗碗”);
}
}
public class ServantDemo {
public static void main(String[] args){
//给菲佣类创建一个对象s1
Servant s1 = new Servant(); //根据类来创建对象s1
s1.name = “小丽”; //给字段设置值
s1.age = 18; //给字段赋值
System.out.println(s1.name); //输出为小丽
System.out.println(s1.age ); //输出为18
//给菲佣类创建一个对象s2
Servant s2 = new Servant(); //根据类来创建对象s2
s2.name = “lili”; //给字段设置值
s2.age = 20; //给字段赋值
//给菲佣类创建一个对象s3
System.out.println(s2.name); //输出为lili
System.out.println(s2.age ); //输出为20
Servant s3 = new Servant(); //根据类来创建对象s3
s3.name = “lucy”; //给字段设置值
s3.age = 23; //给字段赋值
System.out.println(s3.name); //输出为lucy
System.out.println(s3.age ); //输出为23
}
}
1.有方法一定有栈,有new一定有堆。方法区里面的ServantDemo.class和Servant.class代表着把这两个字节码的信息与方法放在方法区
2.如s1,在堆中占据一块引用地址为0x123里面有Svervant类中的方法及变量的空间,然后,将引用地址0x123赋给了s1,如果,给对象s1设定字段值,s1.name = “小丽”;那么name由原来的初始值为null改为小丽,输出结果为小丽
3.成员变量有初始值,如上述中的name初始值为null,age的初始值为0,局部变量没有初始值
假设s1 = null,那么会出现空指针异常,Null pointer access: The variable s1 can only be null at this location
public class ServantDemo {
public static void main(String[] args){
//给菲佣类创建一个对象s1
Servant s1 = new Servant(); //根据类来创建对象s1
s1 = null;
s1.name = “小丽”; //给字段设置值
s1.age = 18; //给字段赋值
System.out.println(s1.name); //输出为小丽
System.out.println(s1.age ); //输出为18
}
}
假设s2=s3,那么s2就不引用地址为0x456,转为引用s3所引用的地址0x789,所以s2的name是lucy,age为23
public class ServantDemo {
public static void main(String[] args){
//给菲佣类创建一个对象s2
Servant s2 = new Servant(); //根据类来创建对象s2
s2.name = “lili”; //给字段设置值
s2.age = 20; //给字段赋值
//给菲佣类创建一个对象s3
System.out.println(s2.name); //输出为lili
System.out.println(s2.age ); //输出为20
Servant s3 = new Servant(); //根据类来创建对象s3
s3.name = “lucy”; //给字段设置值
s3.age = 23; //给字段赋值
s2 = s3;
System.out.println(s3.name); //输出为lucy
System.out.println(s3.age ); //输出为23
System.out.println(s2.name+ “是s2 = s3”); //输出为lucy是s2 = s3
System.out.println(s2.age + “是s2 = s3” ); //输出为23是s2 = s3
}
}
- 内存分析—对象的实例化过程
- 面向对象实例化过程内存分析
- 对象实例化过程分析
- java面向对象——继承最终章--子类的实例化过程(内存)
- Java对象实例化过程分析
- java对象实例化过程分析
- 对象的实例化过程
- java的类模板,对象,实例内存地址分析
- 深入内存分析String对象的创建过程
- Java中对象的创建过程(内存分析)
- 对象实例化过程
- 对象实例化过程
- 对象实例化过程
- 子类对象的实例化过程
- 关于子类对象的实例化过程
- 子类对象的实例化过程
- 子类对象的实例化过程
- 子类对象的实例化过程
- 基于ZigBee的物联网环境数据采集系统
- EXCEL VBAProject密码破解 工作表密码破解
- 不在activity中打开activity的方法
- 考试,一种严格的水平鉴定方法。
- AndroidStudio多渠道打包
- 内存分析—对象的实例化过程
- Java反射机制
- 单例模式 解析
- 利用jquery实现动态表格的相关操作以及列表全选功能
- Spring Boot (教程五:响应JSP页面)
- 两数组的交 II -LintCode
- RedisDesktopManager连接不上redis
- leetcode 46. Permutations
- ES6-对象新写法