隨筆 - 3, 文章 - 152, 評論 - 17, 引用 - 0
          數據加載中……

          Java的基礎問題(四)

          1.String類和StringBuffer類

          它們都是處理字符串的類,但是它們有一個最大的區別,那就是,String對象是存儲你不能改
          動的文本字符
          串,相反,如果你希望改動,則應使用StringBuffer類作為替換.
          eg1:
          ......
          //omit some code
          String s1="You are hired!";
          System.out.println(s1.replace(′h′,′f′));//用f把字串中的h替換了
          System.out.println(s1);
          ......
          //omit some code
          運行結果:
          You are fired!
          You are hired!
          結果分析:
          從結果,明顯可知,s1的值并沒有被改變,而第一行結果只是屏幕內容的替換.
          eg2:
          ......
          //omit some code
          StringBuffer s2=new StringBuffer("Hello from Java!");
          s2.replace(6,10,"to");
          System.out.println(s2);
          ......
          //omit some code
          運行結果:
          Hello to Java!
          結果分析:
          顯然,s2的值已改變.

          2.位邏輯與條件邏輯

          首先聲明, 為了與位邏輯更好區分開來,我把通常所說的邏輯取了個別名叫做條件邏輯.

          它們都有各自的操作符,位邏輯操作符有:&(與運算),^(異或運算),|(或運算);條件邏輯操
          作符有:&&(并
          且),||(或者).
          位邏輯運算通常是針對兩個數而言,實行位操作;而條件邏輯運算是針對兩個條件表達式而
          言,實行條件操
          作.其實,位邏輯操作符一樣可以實現條件操作,但是此時有一個重要的區別:用位操作符時
          ,不管操作符兩邊的
          條件表達式成不成立,它都要通通進行運算判斷,而條件邏輯操作符不一樣了,如果通過左側
          的操作數就可以進
          行它們需要的判斷,那么它就不會再計算右側的操作數了,這種情況叫短路.廢話少說!且看
          下例.
          eg1:
          ......
          //omit some code
          double value=0;
          if(value!=0 && 1/value<1000){
          System.out.println("The value is not too small.");
          }
          else{
          System.out.println("The value is too small.");
          }
          ......
          //omit some code
          運行結果:
          The value is too small.
          結果分析:
          照理說應會出現除數為0的錯誤,但是我剛才說了,由于條件邏輯操作符是短路操作符,顯然
          ,value!=0不
          成立,立即就可作出判斷應執行else后的語句,所以它就不再會運算判斷1/value<1000了.如
          果不懂請再看一
          例:
          eg2:
          ......
          //omit some code
          double int1=0,int2=1,int3=1;
          if(int1!=0 & (int2=2)==1){}
          System.out.println("int2="+int2);
          if(int1!=0 && (int3=2)==1){}
          System.out.println("int3="+int3);
          ......
          //omit some code
          運行結果:
          int2=2.0
          int3=1.0
          結果分析:
          我想不用我分析了,你應該懂了吧.

          3.實例變量與類變量

          可以通過兩種方法在類中存儲數據───作為實例變量和類變量.實例變量是特定于對象的
          ,如果你有兩個對
          象(即一個類的兩個實例),每一個對象中的實例變量獨立于另一個對象中的實例變量的;另
          一方面,兩個對象的
          類變量均指向相同的數據,并因此面保存相同的值,換句話說,類變量被類中的所有對象共享
          .差點忘了,它們在
          形式上的區別,類變量在聲明時比實例變量多一個static.
          eg:
          class data
          {
          public int intdata=0;//顯然,intdata在這兒是實例變量
          }
          public class exam
          {
          public static void main(String[] args)
          {
          data a,b;
          a=new data();
          b=new data();
          a.intdata=1;
          System.out.println("b.indata="+b.intdata);
          }
          }
          運行結果:
          b.intdata=0
          結果分析:
          可以看出,a.intdata的值雖然變了,但并沒有影響b.intdata.但是如果在data類中聲明int
          data時,在其前
          面加上static就變成類變量了(即:public static int intdata=0;),則此時運行結果會變
          為:
          b.intdata=1
          這次a.intdata值的改變可把b.intdata影響了,事實上,對象a和b的類變量均指向相同的數
          據,所有值一
          樣,這就是類變量的作用.

          4.實例方法,類方法,構造器方法

          我們通常所說的方法系指實例方法,就像c語言中的函數一樣,其具體方法我就不用說了,在
          這里我主要是
          用它來區分類方法和構造器方法.類方法與實例方法最大的區別是:在形式上類方法多一個
          static,在用法上,
          不必創建對象就可直接調用類方法(而實例方法卻一定要先創建對象,再通過對象調用).

          eg:
          class add
          {
          static int addem(int op1,int op2)
          {
          return op1+op2;
          }
          }
          public class xxf
          {
          public static void main(String[] args)
          {
          System.out.println("addem(2,2)="+add.addem(2,2));
          } //直接用類名作為對象調用類方法
          }

          注: 也可按通常的方法,即先創建對象,再調用方法,不過,這時static就無任何意義了.

          再說說構造器方法,它是用來初始化對象中的數據的一種方法,創建很容易,只需在類中加上
          一個與這個類
          同名的方法,不需要在前面加任何訪問說明符或者返回類型,另外,構造器也一樣可以向方法
          一樣傳遞參數.
          eg:
          class data
          {
          private String data1;//事先聲明

          data(String s)
          {
          data1=s; /*通過接收數據來初始化變量.(注:不能在構造器內
          聲明變量,事先在外就要聲明.)*/
          }

          public String getdata()
          {
          return data1;
          }
          }

          public class xxf
          {
          public static void main(String[] args)
          {
          System.out.println((new data("I love you")).getdata());/*通過傳遞參數調用構造器
          新建一
          個對象,再通過對象調用方法得到數據*/
          }
          }

          5.接口與類

          類是對一類特定對象的規格說明,我們可以類定義創建對象,通過創建對象來組合所有屬于
          該類的組件,而
          接口不能這樣做.而接口實質上就是一個常量和抽象方法的集合,要使用一個接口,就需要在
          類中實現這個接
          口,然后作為類定義的一部分,編寫接口中聲明的每一個方法,接口中的方法永遠是public,
          abstract,接口中的
          常量永遠是public static和final,因此不需要為它們說明屬性.
          因為在Java中不支持多重繼承,但是,可以用接口來實現類似的功能,這是接口的重要作用之
          一.
          eg:
          interface anyone //定義一個接口
          {
          final double PI=3.1416;
          void setNumber(int number);
          int getNumber();
          }
          interface anyother //定義另一個接口
          {
          void setString(String str);
          String getString();
          }

          class xxf implement anyone,anyother //定義一個類,并使用兩個接口
          {
          int number;
          String str;
          public xxf(){}
          void setNumber(int number)
          {
          this.number=number;
          }
          void setString(String str)
          {
          this.str=str;
          }
          void int getNumber(){}//可以為一個空實現.
          void String getString(){}
          }
          //在類中必須實現接口中聲明的所有方法.(當然也可不必,但是要用到適配器類或用抽象類

          posted on 2005-03-05 18:07 閱讀(205) 評論(0)  編輯  收藏 所屬分類: J2se

          主站蜘蛛池模板: 堆龙德庆县| 修文县| 高密市| 南华县| 阿克| 耿马| 漳浦县| 砚山县| 榆社县| 泰顺县| 孝感市| 霍城县| 浦城县| 遂平县| 江陵县| 烟台市| 广德县| 辉南县| 茌平县| 新昌县| 广灵县| 柏乡县| 易门县| 肥城市| 土默特右旗| 宜都市| 石楼县| 巴中市| 慈溪市| 丹寨县| 曲阜市| 吉木萨尔县| 克拉玛依市| 文登市| 西安市| 焉耆| 高淳县| 苗栗市| 农安县| 神农架林区| 秦皇岛市|