黑马程序员技术交流社区

标题: this.例子解析 [打印本页]

作者: Justfeeling    时间: 2014-8-9 22:09
标题: this.例子解析
       
        当局部定义一个name,那么这两个name都是局部name,局部当中有,就在局部当中找,局部没有就在成员变量里找。       
        this代表本类的对象,代表所在函数所属对象的引用,
        哪个对象在调用this所在的函数,this就代表哪个对象。

        //建立p1对象,到Person1(String name)中进行初始化,这个时候构造函数被对象p1所调用,这时候this就代表p1,xiaoli就赋值给p1对象的name(p.name=name)。

public class Test1 {
        public static void main(String[] args) {
               
                Person1 p1=new Person1("xiaoli");
                p1.speak();
        }
}

class Person1{
       
        private String name;
        private int age;
       
       
        Person1(String name){
                this.name=name;
        }

        public void speak(){
                System.out.println("name="+name+",age="+age);
        }
}



//        name=xiaoli,age=0










作者: Bule丶    时间: 2014-8-9 22:23
嗯嗯,是的
作者: 冷锋也温柔    时间: 2014-8-9 22:42
这是在叙述?
作者: Justfeeling    时间: 2014-8-9 22:46
冷锋也温柔 发表于 2014-8-9 22:42
这是在叙述?

我在这里绕了很长时间,最后才有点懂,所以发表上来共享一下,也是我一点小总结。
作者: 冷锋也温柔    时间: 2014-8-9 22:53
难免  努力哦  少年
作者: 侯岩卿    时间: 2014-8-9 22:56
总结的不错!加油楼主
作者: 严旭晟    时间: 2014-8-10 17:13
这类问题建议画一个内存布局图!

Test.jpg (1.06 MB, 下载次数: 87)

Test.jpg

作者: 新航向    时间: 2014-8-10 18:06
严旭晟 发表于 2014-8-10 17:13
这类问题建议画一个内存布局图!

内存这块还不是很明白,请帮忙解惑。
主函数中的代码运行时,是否执行到哪个变量,该变量就进栈内存,当判定后续不使用该变量时则消失?
作者: 严旭晟    时间: 2014-8-11 01:13
新航向 发表于 2014-8-10 18:06
内存这块还不是很明白,请帮忙解惑。
主函数中的代码运行时,是否执行到哪个变量,该变量就进栈内存,当 ...

首先,函数内的局部变量的作用域只是在函数体内,离开了函数体就不发挥作用
其次,某个函数在某一次调用时,执行流进入函数体为函数内的局部变量分配空间,进栈
而当此次函数调用完成后,执行流就离开了函数体,因而函数体内的局部变量就会在某个时间被回收!
内存,栈、JVM和线程关系密切
栈由一个个栈帧组成;
当线程调用某个个Java方法时,JVM就会为该线程对应的栈压人一个由局部变量区、操作数栈和帧数据区组成的栈帧;
栈帧的局部变量区存储了对应方法的局部数据,当方法执行完,对应的栈帧就从栈中弹出(即回收了内存空间),同时把返回结果存储在调用方法的栈帧中的操作数栈中。
更多细节,请阅读《深入JVM》
作者: 范靖明    时间: 2014-8-11 01:53
This 跟Super,我也才弄懂。This指本类里的对象。Super指父类里的对象!加油!
作者: dispensable    时间: 2014-8-11 02:27
:L加油吧,新手,今晚心情不错,给你加5个黑马币吧,怪不容易的
作者: 新航向    时间: 2014-8-11 09:21
严旭晟 发表于 2014-8-11 01:13
首先,函数内的局部变量的作用域只是在函数体内,离开了函数体就不发挥作用
其次,某个函数在某一次调用 ...

好的,谢谢
作者: 严旭晟    时间: 2015-9-10 17:57
新航向 发表于 2014-8-10 18:06
内存这块还不是很明白,请帮忙解惑。
主函数中的代码运行时,是否执行到哪个变量,该变量就进栈内存,当 ...

你说的是局部变量的情况




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2