- 博客(10)
- 问答 (1)
- 收藏
- 关注
原创 递归栈的工作原理
对于这段代码,首先main方法先入栈,接着执行第一行代码,在栈中main方法区域创建变量,等号右边调用jc()方法,jc方法入栈,参数n为5,返回5*jc(5-1)。然后依次类推,最后一个入栈的jc方法参数为n==1;那么return的1应该返回给谁呢,方法的返回值应该返回给方法的调用处。因此会把返回值1返回给jc(1);最后方法依次出栈,120返回给=号的右边。
2024-01-31 10:33:20
473
原创 Integer底层原理
下面着重讲解前两种,在Integer的底层源码中,当你以调用静态方法创建Integer对象时,底层会先判断创建对象的value值,如果范围在-128-127之间,底层会直接返回一个实现创建的对象以供使用。在创建Integer对象时候与之前一样,通过new关键字创建,在栈内存中声明一个Integer类型变量,记录堆内存中的地址,等号右边的new Integer()会在堆内存中开辟一个地址空间,成员变量value记录数据10.第二种value为128,不在范围,因此要重新创建,所以地址不同。
2024-01-25 20:22:45
385
原创 Java内部类内存图
接着打印this.a,刚刚解释过this的地址为002,所以this.a可以理解为打印002里面的a。下一句sout(outer.this.a)的具体流程为,先通过this找到002,接着找到002中记录outer地址的this,通过this的值找到outer的地址001,在001找到a的值为10。2.代码继续运行,执行oi.show(),show方法加载入栈,方法的调用者为oi,因此this记录的是调用者的地址值(002),在方法中定义了a=0,将局部变量a=0入栈,进入栈中show方法模块。
2024-01-17 20:14:07
365
原创 访问本类构造方法this(...)
如果现在要给一个变量设置一个默认值,可使用this(...)方法。下面结合代码讲解:需求:将大学默认设置为”某某大学“,结合上图代码,用无参构造创建一个学生类对象,此时在Student()类里面写入this()方法,当用无参构造创建对象时会 调用学生类中的无参构造方法,并写入变量值到this方法中如上图,接着this方法调用本类中其他构造方法,并将对应变量传递进去。此时name=null,age=null,school="某某大学",实现大学这个变量的初始化设置。
2024-01-14 10:48:58
397
1
原创 java继承的内存图
首先测试类的main()方法和class文件加载到方法区,main()方法被虚拟机调用入栈,执行main方法中第一句代码,将类Zi的字节码文件和变量加载到方法区,有类Zi继承了Fu类,所有Zi类会把Fu类的class文件和变量加载至方法区,同时Fu类继承object类,所以object的class文件也会被加载。接着执行等号左边,Zi z加载入栈,等号右边在堆内存中开辟一个空间,与之前不同的是,该空间被一分为二,一边加载父类的成员变量,一边则是自己的成员变量。并将地址赋值给栈中的变量。
2024-01-13 20:45:03
341
原创 字符串存储的内存原理
1)等号右边没有变量:javac在编译class文件时,会直接拼接字符,此时等同于直接赋值一个字符串即String s1="a"+"b"+"c"也就等同于String s1="abc";
2024-01-09 19:30:05
318
原创 字符串创建在内存中的实现
字符串创建常见的一般分为两种:分析:首先针对第一种方式进行分析,代码执行main()函数,main()方法加载至栈内存中,接着在main()方法中创建变量String s1=,对于等号右边,系统检查串池中是否有该字符串,如果没有将该字符串"abc"写入串池中,并将地址值赋给s1。对于第二行代码,同样在main()方法中创建变量String s2=,接着检查串池中是否有该字符串,有“abc”因此,直接将地址赋值给s2。
2024-01-08 16:27:32
456
1
原创 Java 面向对象的内存图分析data:image/gif;base64,R0lGODlhAQABAPABAP///wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
如下图所示(jdk8之前): 如下图所示(jdk8之后): jdk8之后将方法区取消,新增元空间,把原来方法区功能进行拆分,一部分分给元空间,另一部分则是给了堆方法区:字节码文件加载时进入的内存栈内存:方法运行时进入的内存,变量也在此处堆内存:new出来的东西会放在这块内存中,开辟空间并产生地址当我们创建一个对象时,例如:Student s =new Student();内存至少进行七件事:现结合具体实例分析
2024-01-07 16:35:03
467
1
空空如也
i51155g7 i511300h i71165g7哪个好啊 推荐一下
2021-09-07
TA创建的收藏夹 TA关注的收藏夹
TA关注的人