歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java中變量命名和引用變量的一個問題

這次有兩個主題,第一個太簡單啦,就是Java中變量的命名規則,純記憶性東西。第二個主題,就是討論一下對象引用變量的一個注意點。

如果你對命名規則很熟啦,就直接看第二個內容吧。(上邊的圖稍微有點順序紊亂啊)

一、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 class Test {
2         public static void main(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,如你所料:

在看一段代碼,如果預測結果正確,就不要往下看啦。

 1 public class Test {
 2         public static void main(String[] args) {
 3                 Test t = new Test();
 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屬性賦值成10
 7                 //打印結果
 8                 System.out.println("dog1's age = " + d1.age);
 9                 System.out.println("dog2's age = " + d2.age);
10         }
11        
12       //為了節省空間能一眼看完,此處寫成內部類
13         class Dog {
14                 //為了方便把屬性定義為public,實際中最好不要
15                 public  int age;
16                 public Dog(int age) {
17                         this.age = age;
18                 }
19 
20         }
21 } 

猜猜結果:

猜對沒有,為什麼沒有更改d2的age,d2的age從1變成了10?

基本變量中存的就是實際值,而對象引用變量中存的是一個能找到實際值得數據(可以看成c語言中的地址),所以,當d1賦值d2時,只是把那個能找到實際對象的數據賦值給了d2,內存中只有一個Dog的實例,d1,d2指向同個變量。

所以,d1改變object的值時,d2因指向相同的object,所以,結果就不言而喻啦。

這說得還遠遠不夠,想深入了解,請找書看。

Copyright © Linux教程網 All Rights Reserved