码迷,mamicode.com
首页 > 编程语言 > 详细

java18

时间:2019-01-28 23:54:56      阅读:363      评论:0      收藏:0      [点我收藏+]

标签:第一个   调换位置   存在   ati   string   on()   static   栈帧   初始   

1.所有对象和数组都是在堆里创建的
一个方法一个栈帧
int[ ] ages = new int[ ]{10,20,30}; 在堆中初始化数组 ,new(将10,20,30的内存地址赋值给了ages)
System.out.println(ages);
【[I@15db9742】输出内存地址
java.jvm中有自动清除垃圾的功能。
当内存资源紧张时,无需手动控制内存的的释放,它会自动清除没用的对象
2.对象堆的内存分析
栈中有成员变量,但是没有初始值
堆中存放了对象的地址,并且存放的每个基本数据类型都有初始值
在执行指令时会根据栈中的地址去堆中寻找
new的意思就是在堆中开辟存储空间
方法区存在class的字节码
3.Person zly = new Person();
zly.name= "赵丽颖";
zly.age = 18;
Person rh = new Person();
rh.name = "如花";
System.out.println(rh.name);
【如花】

栈:Person zly = 内存地址
堆:Person
地址值:fdsfdsf
name 赵丽颖
age 18
zly = rh;
System.out.println(zly.name);
【如花】
zly = null;
【java.lang.NullPointerException】 空指针异常(没有地址)
3.字符(char) 初始值:‘/u0000’
整数 初始值:0
小数
float 初始值:0.0f
double 初始值:0.0d
布尔 初始值:false
4.凡是使用new关键字创建出来的类型都是引用数据类型
引用数据类型:类,数组,枚举,注解,接口
5.基本数据类型的值传递
static void a(int x) {
System.out.println("3="+x);
x = 100;
System.out.println("1="+x);
}
public static void main(String[] args) {
int x = 20;
a(x);
System.out.println("2="+x);
}
【1=100
2=20
3=20】

分析:x = 20 先入栈,x = 100后入栈
接着调用a方法
所以 3 = 20,
再一次x赋值,所以1 = 100
接着a方法出栈
在打印2 = 20;
6.引用数据类型的地址传递(数组的第一个元素与第二个元素调换位置)
//分析:将第0个元素位置空出来,
把第1个元素放进去
将第0个元素放在第1个元素位置处
//调用方法前后输出对比

java18

标签:第一个   调换位置   存在   ati   string   on()   static   栈帧   初始   

原文地址:https://www.cnblogs.com/-zero/p/10332155.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!