java 引用变量,Java中变量命名和引用变量的一个问题

这次有两个主题,第一个太简单啦,就是Java中变量的命名规则,纯记忆性东西。第二个主题,就是讨论一下对象引用变量的一个注意点。

f99a9edfeb97d9520fbc92c514921686.png

如果你对命名规则很熟啦,就直接看第二个内容吧。(上边的图稍微有点顺序紊乱啊)

一、Java中变量的命名规则

大多数语言的命名规则是相似的,只有一些微小的差别。

变量的第一个位置,可以是字母,下划线(_),美元符($) (这个在c/c++,Python中是不行的)(注意:不能是数字哦,一想就知道啦为什仫)

其他的位置可以是数字,字母,下划线

不能使用java中的关键字

java中的关键字有:

boolean   byte   char   double   float   int   long   short   public   private

protected  abstract final    native   static   strictfp   synchronized   transient   volatile   if

else     do    while    switch   case   default for   break   continue   assert

class   extends   implements   import   instanceof   interface   new package   super   this

catch   finally   try   throw   throws   return   void   const   goto   enum

Java的命名规则就说这么多,变量除了注意命名规则之外,还要注意命名规范。

二、对象引用变量的注意之处

基本变量没有这个毛病,通过代码来引入问题。

1 public classTest {2 public static voidmain(String[] args) {3 int i1 = 10;4 int i2 =i1;5 i1 = 10000;6 System.out.println("i1 = " +i1);7 System.out.println("i2 = " +i2);8 }9 }

预测一下结果吧。OK,如你所料:

842f0a55f6aee7bf47571e0a2537707d.png

在看一段代码,如果预测结果正确,就不要往下看啦。

1 public classTest {2 public static voidmain(String[] args) {3 Test t = newTest();4 Test.Dog d1 = t.new Dog(1);//若看不懂,只需看成创建了一个Dog类一个实例变量

5 Test.Dog d2 = d1;//把d1赋值个d2,此时d2的age是不是1?6 d1.age = 10;//重新为d1的age属性赋值成107 //打印结果

8 System.out.println("dog1's age = " +d1.age);9 System.out.println("dog2's age = " +d2.age);10 }11

12 //为了节省空间能一眼看完,此处写成内部类

13 classDog {14 //为了方便把属性定义为public,实际中最好不要

15 public intage;16 public Dog(intage) {17 this.age =age;18 }19

20 }21 }

猜猜结果:

57a6739c1234e3dcc73dba1f1cfc34b5.png

猜对没有,为什么没有更改d2的age,d2的age从1变成了10?

基本变量中存的就是实际值,而对象引用变量中存的是一个能找到实际值得数据(可以看成C语言中的地址),所以,当d1赋值d2时,只是把那个能找到实际对象的数据赋值给了d2,内存中只有一个Dog的实例,d1,d2指向同个变量。

cec106077faade1a8b7d3e39a50883fa.png

5befd7c11ef817796859dc312621b7cc.png

981473735aac031774ca325291eb781f.png

所以,d1改变object的值时,d2因指向相同的object,所以,结果就不言而喻啦。

这说得还远远不够,想深入了解,请找书看。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值