国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

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

第4章 核心類

2019-11-14 13:05:55
字體:
來源:轉載
供稿:網友

4.1 基本類型的封裝

1.基本類型的封裝類各自是什么?如何使用這些封裝類?

基本類型與封裝類的最大區別是,封裝類是引用類型,其實問題就是基本類型和引用類型的區別。基本類型在內存中是存儲在棧中,引用類型的引用(值得地址)存儲在棧中,而值是存儲在堆中。

基本類型與其封裝類型對應的關系如下:

byte------Byte; short------Short; int------Integet;  long------Long;  float------Float; double------Double;  boolean------Boolean;  char------Character

基本類型的值轉化成封裝類對象時,有兩種方法:

v 直接用new方法創建封裝類對象,參數為基本類型的值。

v 使用封裝類的valueOf靜態方法,參數為基本類型的值,返回封裝類對象。

封裝類轉換為基本類型的值時,有一種方法:

使用封裝類對象的xxxValue實例方法,返回它的基本類型值。

// 基本類型byte轉換為包裝類型的方法 PRivate Byte byte2Byte(byteb) {  Byte by = new Byte(b);  // Byte by =Byte.valueOf(b);  return by; } // 包裝類型Byte裝換位基本類型 private byte Byte2byte(Byteb) {  if (b == null) {   return 0;  } else {   return b.byteValue();  } }

4.2Object類4.3字符串類

1.Object類與其他類的關系?

Object類是一切java類的父類,對于普通的java類,即便不聲明,也是默認繼承了Object類。典型的,可以使用Object類中的toString()方法

1.   Object類與基本數據封裝類、自定義類各自的equals方法與“==”的含義?

值類型是存儲在內存中的堆棧(以后簡稱棧),而引用類型的變量在棧中僅僅是存儲引用類型變量的地址,而其本身則存儲在堆中。

      ==操作比較的是兩個變量的值是否相等,對于引用型變量表示的是兩個變量在堆中存儲的地址是否相同,即棧中的內容是否相同。       equals操作表示的兩個變量是否是對同一個對象的引用,即堆中的內容是否相同。

       ==比較的是2個對象的地址,而equals比較的是2個對象的內容。顯然,當equals為true時,==不一定為true。

1.   String與StringBuffer的區別?

在java中有3個類來負責字符的操作。

 1.Character 是進行單個字符操作的,

 2.String對一串字符進行操作。不可變類。

 3.StringBuffer 也是對一串字符進行操作,但是可變類。

 String: 

是對象不是原始類型. 為不可變對象,一旦被創建,就不能修改它的值.  對于已經存在的String對象的修改都是重新創建一個新的對象,然后把新的值保存進去. String 是final類,即不能被繼承.

StringBuffer: 

是一個可變對象,當對他進行修改的時候不會像String那樣重新建立對象 它只能通過構造函數來建立,

StringBuffer sb = new StringBuffer();

note:不能通過付值符號對他進行付值. 

sb = "welcome to here!";//error

 對象被建立以后,在內存中就會分配內存空間,并初始保存一個null.向StringBuffer 中付值的時候可以通過它的app end方法.

 sb.append("hello"); 

字符串連接操作中StringBuffer的效率要比String高:

 String str = new String("welcome to"); str+= "here"; 

的處理步驟實際上是通過建立一個StringBuffer,然后調用append(),最后 再將StringBuffer toSting(); 

這樣的話String的連接操作就比StringBuffer多出了一些附加操作,當然效率上要打折扣. 并且由于String對象是不可變對象,每次操作Sting 都會重新建立新的對象來保存新的值. 這樣原來的對象就沒用了,就要被垃圾回收.這也是要影響性能的.

2.   String類常用的方法有哪些?

 

3.   String類型的數據與基本數據類型直接如何轉換?

一、基本數據類型to字符串類型(包含char類型)

(1)toString     

  ①基本數據類型的都有一個靜態方法toString(),轉換時可以采用 "封裝類型.toString(對應的基本數據類型字面值)" 方法來轉換成字符串。

    例:將int類型的20轉成字符串,

String s = Int.toString(20)

  ②將基本數據類型封裝成相應的封裝類型對象,采用 "基本數據類型對象.toString()"方法轉換成字符串。

    例:將double類型的425.0轉成字符串,

Double d = new Double(425.0);    String s =d.toString();

(2)+"",將基本數據類型字面值與空字符串""通過"+"連接

  例:將long類型的200轉成字符串,

String s = 200 + "";

(3)valueOf,利用String類的靜態方法valueOf()。

  例:將char類型的'b'轉成字符串,

String.valueOf('b');

二、字符串to基本數據類型(不包含char類型)

(1)利用基本數據類型包裝類的parseXxx方法

  例:將字符串"123"轉成int類型,

int i =Integer.parseInt("123");

(需注意字符串轉成基本數據類型時字符串內容必須是基本數據類型的字面值,否則編譯雖然能通過,但運行時出現NumberFormatException)

(2)用字符串構造基本類型的封裝對象,再調用封裝對象的xxxValue方法

  例:將字符串"20.5"轉成double類型,

Double d1 = newDouble("20.5");  double d2 =d1.doubleValue();

1.   String與toString的區別?

(String)

這是標準的類型轉換,將object轉成String類型的值。使用這種方法時,需要注意的是類型必須能轉成String類型。因此最好用instanceof做個類型檢查,以判斷是否可以轉換。否則容易拋出CalssCastException異常。此外,需特別小心的是因定義為Object 類型的對象在轉成String時語法檢查并不會報錯,這將可能導致潛在的錯誤存在。這時要格外小心。如:

Object obj = new Integer(100);

String strVal = (String)obj;

在運行時將會出錯,因為將Integer類型強制轉換為String類型,無法通過。、

toString

在這種使用方法中,因為java.lang.Object類里已有public方法.toString(),所以對任何嚴格意義上的java對象都可以調用此方法。但在使用時要注意,必須保證object不是null值,否則將拋出NullPointerException異常。采用這種方法時,通常派生類會覆蓋Object里的toString()方法。

2.Object與基本數據封裝類中的toString的含義?

1.某些情況下,數據必須作為對象出現,此時必須使用封裝類來將簡單類型封裝成對象。

比如,如果想使用List來保存數值,由于List中只能添加對象,因此我們需要將數據封裝到封裝類中再加入List。在JDK5.0以后可以自動封包,可以簡寫成list.add(1)的形式,但添加的數據依然是封裝后的對象。

另外,有些情況下,我們也會編寫諸如func(Object o)的這種方法,它可以接受所有類型的對象數據,但對于簡單數據類型,我們則必須使用封裝類的對象。

2.某些情況下,使用封裝類使我們可以更加方便的操作數據。

比如封裝類具有一些基本類型不具備的方法,比如valueOf(), toString(), 以及方便的返回各種類型數據的方法,如Integer的shortValue(), longValue(), intValue()等。

3.基本數據類型與其對應的封裝類由于本質的不同,具有一些區別:

基本數據類型只能按值傳遞,而封裝類按引用傳遞。

基本類型在堆棧中創建;而對于對象類型,對象在堆中創建,對象的引用在堆棧中創建。基本類型由于在堆棧中,效率會比較高,但是可能會存在內存泄漏的問題。

 

 

4.4Scanner類

1.Scanner類的作用?如何使用?2.Scanner類的常用方法有哪些?可以用來獲取哪些類型的輸入?獲取方法分別是什么?

Scanner類,一個可以使用正則表達式來解析基本類型和字符串的簡單文本掃描器。

用于掃描輸入文本的實用程序。位于java.util包中。

使用Scanner接收鍵盤輸入的字符,步驟:

1.導入Scanner類。

  import java.util.Scanner;

2.創建Scanner對象。

  Scanner input=new Scanner(System.in);

3.獲得鍵盤輸入的數據。

  int i=input.nextInt();Strings=input.next();doubled=s.nextDouble();  Double d=double.nextDouble();  Boolean b=boolean.hasNext();//判斷是否有輸入的數據,有則返回true,沒有就返回false。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和平区| 安岳县| 镇康县| 门头沟区| 许昌县| 宁明县| 遂宁市| 大方县| 灯塔市| 渝中区| 呼图壁县| 合阳县| 湖北省| 阜新市| 舞钢市| 瑞安市| 鸡东县| 宁津县| 阆中市| 泗阳县| 兰西县| 乐亭县| 广安市| 家居| 昭觉县| 綦江县| 申扎县| 伊宁县| 上虞市| 合水县| 陈巴尔虎旗| 台东市| 青海省| 怀安县| 玉龙| 灵山县| 吐鲁番市| 色达县| 阿克陶县| 龙海市| 泸溪县|