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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

首先,java中有两个我们经常用,却也经常忽视的原则:就近原则和命名空间唯一原则(自己总结的,如有不当,请拍砖)
1.就近原则
所谓就近原则,就是说,虚拟机在找一个变量时,会先从离它最近的一对{ }中找,如果找到则停止查找(其他{ }或类成员若有同名变量则会找不到),如果没有则会到外层{ }中找,直到类成员变量这一级,如果类成员也没有则去父类中找,直到Object类结束。
2.命名空间唯一原则
所谓命名空间唯一原则,是指类名及类的属性名方法名在整个java命名空间中是唯一的,命名空间唯一以保证调用唯一。

你会说,不对啊,我这个类中有个属性叫x,有个成员方法里边有个局部变量x,他们名字不是一样吗?不一样,你要调用该类的属性x,必须用this.x,这是老毕讲过的,更精确的说是包名.类名.this.x。但是一般情况下前边的包名.类名.this没有写,为什么?是因为就近原则在起作用。
  1. package cn.zyx.test;
  2. public class Test {         
  3.         private int num=5;   
  4.     public void println(){
  5.             int num=8;
  6.             System.out.println("println方法的num:"+num);//8
  7.             System.out.println("Test的属性num:"+this.num);//5
  8.             System.out.println("Test的属性num:"+Test.this.num);//5
  9.             System.out.println("Test的属性num:"+cn.zyx.test.Test.this.num);  //5   
  10.     }
  11. }
  12. class TestMain{
  13. public static void main(String[] args){
  14.   Test test= new Test();
  15.   test.println();
  16. }

  17. }
复制代码

评分

参与人数 1黑马币 +12 收起 理由
Rancho_Gump + 12

查看全部评分

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马