A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Justfeeling 中级黑马   /  2014-8-9 22:09  /  1999 人查看  /  12 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

       
        当局部定义一个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









评分

参与人数 1黑马币 +5 收起 理由
dispensable + 5

查看全部评分

12 个回复

倒序浏览
嗯嗯,是的
回复 使用道具 举报
这是在叙述?
回复 使用道具 举报

我在这里绕了很长时间,最后才有点懂,所以发表上来共享一下,也是我一点小总结。
回复 使用道具 举报
难免  努力哦  少年
回复 使用道具 举报
侯岩卿 来自手机 中级黑马 2014-8-9 22:56:51
地板
总结的不错!加油楼主
回复 使用道具 举报
这类问题建议画一个内存布局图!

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

Test.jpg
回复 使用道具 举报
严旭晟 发表于 2014-8-10 17:13
这类问题建议画一个内存布局图!

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

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

好的,谢谢
回复 使用道具 举报
新航向 发表于 2014-8-10 18:06
内存这块还不是很明白,请帮忙解惑。
主函数中的代码运行时,是否执行到哪个变量,该变量就进栈内存,当 ...

你说的是局部变量的情况
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马