亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

Java變量的賦值

2019-11-18 13:23:30
字體:
來源:轉載
供稿:網友

  賦值是用等號運算符(=)進行的。它的意思是“取得右邊的值,把它復制到左邊”。右邊的值可以是任何常數、變量或者表達式,只要能產生一個值就行。但左邊的值必須是一個明確的、已命名的變量。也就是說,它必須有一個物理性的空間來保存右邊的值。舉個例子來說,可將一個常數賦給一個變量(A=4;),但不可將任何東西賦給一個常數(比如不能4=A)。
  對主數據類型的賦值是非常直接的。由于主類型容納了實際的值,而且并非指向一個對象的句柄,所以在為其賦值的時候,可將來自一個地方的內容復制到另一個地方。例如,假設為主類型使用“A=B”,那么B處的內容就復制到A。若接著又修改了A,那么B根本不會受這種修改的影響。作為一名程序員,這應成為自己的常識。
  但在為對象“賦值”的時候,情況卻發生了變化。對一個對象進行操作時,我們真正操作的是它的句柄。所以倘若“從一個對象到另一個對象”賦值,實際就是將句柄從一個地方復制到另一個地方。這意味著假若為對象使用“C=D”,那么C和D最終都會指向最初只有D才指向的那個對象。下面這個例子將向大家闡示這一點。
  這里有一些題外話。在后面,大家在代碼示例里看到的第一個語句將是“package 03”使用的“package”語句,它代表本書第3章。本書每一章的第一個代碼清單都會包含象這樣的一個“package”(封裝、打包、包裹)語句,它的作用是為那一章剩余的代碼建立章節編號。在第17章,大家會看到第3章的所有代碼清單(除那些有不同封裝名稱的以外)都會自動置入一個名為c03的子目錄里;第4章的代碼置入c04;以此類推。所有這些都是通過第17章展示的CodePackage.java程序實現的;“封裝”的基本概念會在第5章進行詳盡的解釋。就目前來說,大家只需記住象“package 03”這樣的形式只是用于為某一章的代碼清單建立相應的子目錄。
  為運行程序,必須保證在classpath里包含了我們安裝本書源碼文件的根目錄(那個目錄里包含了c02,c03c,c04等等子目錄)。
  對于Java后續的版本(1.1.4和更高版本),假如您的main()用package語句封裝到一個文件里,那么必須在程序名前面指定完整的包裹名稱,否則不能運行程序。在這種情況下,命令行是:
  java c03.Assignment
  運行位于一個“包裹”里的程序時,隨時都要注重這方面的問題。
  下面是例子:
  
  
  
  //: Assignment.java
  // Assignment with objects is a bit tricky
  package c03;
  
  class Number {
   int i;
  }
  
  public class Assignment {
   public static void main(String[] args) {
    Number n1 = new Number();
    Number n2 = new Number();
    n1.i = 9;
    n2.i = 47;
    System.out.     ", n2.i: " + n2.i);
    n1 = n2;
    System.out.println("2: n1.i: " + n1.i +
     ", n2.i: " + n2.i);
    n1.i = 27;
    System.out.println("3: n1.i: " + n1.i +
     ", n2.i: " + n2.i);
   }
  } ///:~
  
  Number類非常簡單,它的兩個實例(n1和n2)是在main()里創建的。每個Number中的i值都賦予了一個不同的值。隨后,將n2賦給n1,而且n1發生改變。在許多程序設計語言中,我們都希望n1和n2任何時候都相互獨立。但由于我們已賦予了一個句柄,所以下面才是真實的輸出:
  1: n1.i: 9, n2.i: 47
  2: n1.i: 47, n2.i: 47
  3: n1.i: 27, n2.i: 27
  看來改變n1的同時也改變了n2!這是由于無論n1還是n2都包含了相同的句柄,它指向相同的對象(最初的句柄位于n1內部,指向容納了值9的一個對象。在賦值過程中,那個句柄實際已經丟失;它的對象會由“垃圾收集器”自動清除)。
  這種非凡的現象通常也叫作“別名”,是Java操作對象的一種基本方式。但假若不愿意在這種情況下出現別名,又該怎么操作呢?可放棄賦值,并寫入下述代碼:
  n1.i = n2.i;
  這樣便可保留兩個獨立的對象,而不是將n1和n2綁定到相同的對象。但您很快就會意識到,這樣做會使對象內部的字段處理發生混亂,并與標準的面向對象設計準則相悖。由于這并非一個簡單的話題,所以留待第12章具體論述,那一章是專門討論別名的。其時,大家也會注重到對象的賦值會產生一些令人震動的效果。
  
  1. 方法調用中的別名處理
  將一個對象傳遞到方法內部時,也會產生別名現象。
  
  
  //: PassObject.java
  // Passing objects to methods can be a bit tricky
  
  class Letter {
   char c;
  }
  
  public class PassObject {
   static void f(Letter y) {
    y.c = 'z';
   }
   public static void main(String[] args) {
    Letter x = new Letter();
    x.c = 'a';
    System.out.println("1: x.c: " + x.c);
    f(x);
    System.out.println("2: x.c: " + x.c);
   }
  } ///:~
  
  在許多程序設計語言中,f()方法表面上似乎要在方法的作用域內制作自己的自變量Letter y的一個副本。但同樣地,實際傳遞的是一個句柄。所以下面這個程序行:
  y.c = 'z';
  實際改變的是f()之外的對象。輸出結果如下:
  1: x.c: a
  2: x.c: z
  別名和它的對策是非常復雜的一個問題。盡管必須等至第12章才可獲得所有答案,但從現在開始就應加以重視,以便提早發現它的缺點。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美高清视频在线播放| 成人xxxx视频| 久久久免费观看视频| 97在线视频国产| 亚洲影院高清在线| 日韩精品视频中文在线观看| 国产热re99久久6国产精品| 亚洲国产精品人久久电影| 久久青草精品视频免费观看| 九色91av视频| 亚洲欧洲在线观看| 精品国产31久久久久久| 久久男人av资源网站| 亚洲人成电影网站| 国产亚洲欧美视频| 欧美精品国产精品日韩精品| 久久久久久综合网天天| 亚洲已满18点击进入在线看片| 亚洲精品第一国产综合精品| 日本中文字幕久久看| 国产精品久久久久久一区二区| 久久久免费观看视频| 欧美精品久久一区二区| 日韩精品视频在线观看免费| 日韩小视频在线观看| 国产精品欧美日韩久久| 国产精品视频男人的天堂| 精品一区精品二区| 亚洲丝袜一区在线| 国产91色在线| 国产福利精品在线| 日韩美女视频免费在线观看| 91精品国产成人www| 97avcom| 国产精品嫩草视频| 亚洲视频自拍偷拍| 日韩亚洲成人av在线| 色噜噜狠狠狠综合曰曰曰| 亚洲精品丝袜日韩| 91在线观看欧美日韩| 91精品视频在线免费观看| 一个人看的www久久| 欧美精品九九久久| 国产欧美最新羞羞视频在线观看| 欧美性在线视频| 国产精品久久97| 亚洲国产女人aaa毛片在线| 亚洲欧洲国产伦综合| 久久亚洲国产精品成人av秋霞| 国产精品精品视频一区二区三区| 中文字幕日韩av综合精品| 久久伊人精品视频| 中文字幕亚洲欧美日韩高清| 狠狠久久五月精品中文字幕| 日韩欧美国产成人| 欧美亚洲国产成人精品| 欧美性xxxx极品hd欧美风情| 亚洲91精品在线观看| 久久久亚洲成人| 国产欧美日韩高清| 97av在线视频免费播放| 亚洲美女在线观看| 欧美激情极品视频| 欧美久久精品午夜青青大伊人| 国产久一一精品| 在线亚洲国产精品网| 国产精品中文字幕在线| 国产成人短视频| 欧美在线欧美在线| 久久人人97超碰精品888| 国产精品一区二区久久| 亚洲一区二区三区成人在线视频精品| 亚洲男人天堂网| 96sao精品视频在线观看| 欧美黄色成人网| 国产精品在线看| 日韩高清有码在线| 高跟丝袜欧美一区| 国产精品久久久久久久久久久新郎| 91影院在线免费观看视频| 黑人巨大精品欧美一区二区免费| 在线视频欧美日韩精品| 日韩在线视频中文字幕| 欧美第一黄色网| 亚洲天堂av女优| 国产精品直播网红| 亚洲第一区在线观看| 精品国产一区二区三区久久| 亚洲精品不卡在线| 欧美在线不卡区| 亚洲午夜精品久久久久久性色| 美日韩精品视频免费看| 欧美电影免费在线观看| 91亚洲国产成人久久精品网站| 日韩一区二区福利| 日韩电影中文 亚洲精品乱码| 久久99热这里只有精品国产| 欧美精品www| 日本国产高清不卡| 国产日韩在线精品av| 成人性生交xxxxx网站| 精品欧美aⅴ在线网站| 狠狠久久亚洲欧美专区| 欧美裸体xxxx极品少妇| 国产有码在线一区二区视频| 日韩极品精品视频免费观看| 色婷婷久久av| 欧美日韩中文字幕综合视频| 97在线观看视频| 久久99精品视频一区97| 中文字幕亚洲字幕| 国产精品久久久久国产a级| 国产亚洲精品综合一区91| 黄色一区二区在线观看| 久久久亚洲精品视频| 91免费在线视频网站| 国产精品久久久久久中文字| 国产欧美亚洲精品| 久久噜噜噜精品国产亚洲综合| 国产精品久久久久av免费| 国产欧美一区二区三区视频| 亚洲精品在线观看www| 久久精品视频导航| 国产精品成人av在线| 亚洲成av人片在线观看香蕉| 国产精品男女猛烈高潮激情| 亚洲福利在线观看| 国产精品观看在线亚洲人成网| 日韩国产精品一区| 亚洲精品成人久久电影| 成人乱人伦精品视频在线观看| 久久久99免费视频| 欧美精品九九久久| 91免费国产视频| 国产精品免费观看在线| 亚洲日韩欧美视频一区| 亚洲国产精品人人爽夜夜爽| 日韩av成人在线| 成人免费视频97| 国产日本欧美视频| 色综合久久久888| 国产精品久久久久久久app| 欧美激情va永久在线播放| 国产亚洲精品美女久久久久| 亚洲a在线观看| 日韩在线欧美在线国产在线| 欧美一级在线亚洲天堂| 红桃视频成人在线观看| 国产日韩换脸av一区在线观看| 日韩一级黄色av| 亚洲人成在线播放| 日韩精品视频三区| 国产精品伦子伦免费视频| 欧美日韩美女视频| 一本色道久久88亚洲综合88| 亚洲二区在线播放视频| 久久精品2019中文字幕| 色午夜这里只有精品| 粉嫩av一区二区三区免费野| 欧美大片在线影院| 欧美性videos高清精品| 欧美高清理论片| 色777狠狠综合秋免鲁丝| 人人澡人人澡人人看欧美|