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

首頁(yè) > 學(xué)院 > 開發(fā)設(shè)計(jì) > 正文

第4章 核心類

2019-11-14 12:27:58
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

4.1 基本類型的封裝

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

基本類型與封裝類的最大區(qū)別是,封裝類是引用類型,其實(shí)問(wèn)題就是基本類型和引用類型的區(qū)別。基本類型在內(nèi)存中是存儲(chǔ)在棧中,引用類型的引用(值得地址)存儲(chǔ)在棧中,而值是存儲(chǔ)在堆中。

基本類型與其封裝類型對(duì)應(yīng)的關(guān)系如下:

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

基本類型的值轉(zhuǎn)化成封裝類對(duì)象時(shí),有兩種方法:

v 直接用new方法創(chuàng)建封裝類對(duì)象,參數(shù)為基本類型的值。

v 使用封裝類的valueOf靜態(tài)方法,參數(shù)為基本類型的值,返回封裝類對(duì)象。

封裝類轉(zhuǎn)換為基本類型的值時(shí),有一種方法:

使用封裝類對(duì)象的xxxValue實(shí)例方法,返回它的基本類型值。

// 基本類型byte轉(zhuǎn)換為包裝類型的方法 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類與其他類的關(guān)系?

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

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

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

      ==操作比較的是兩個(gè)變量的值是否相等,對(duì)于引用型變量表示的是兩個(gè)變量在堆中存儲(chǔ)的地址是否相同,即棧中的內(nèi)容是否相同。       equals操作表示的兩個(gè)變量是否是對(duì)同一個(gè)對(duì)象的引用,即堆中的內(nèi)容是否相同。

       ==比較的是2個(gè)對(duì)象的地址,而equals比較的是2個(gè)對(duì)象的內(nèi)容。顯然,當(dāng)equals為true時(shí),==不一定為true。

1.   String與StringBuffer的區(qū)別?

在java中有3個(gè)類來(lái)負(fù)責(zé)字符的操作。

 1.Character 是進(jìn)行單個(gè)字符操作的,

 2.String對(duì)一串字符進(jìn)行操作。不可變類。

 3.StringBuffer 也是對(duì)一串字符進(jìn)行操作,但是可變類。

 String: 

是對(duì)象不是原始類型. 為不可變對(duì)象,一旦被創(chuàng)建,就不能修改它的值.  對(duì)于已經(jīng)存在的String對(duì)象的修改都是重新創(chuàng)建一個(gè)新的對(duì)象,然后把新的值保存進(jìn)去. String 是final類,即不能被繼承.

StringBuffer: 

是一個(gè)可變對(duì)象,當(dāng)對(duì)他進(jìn)行修改的時(shí)候不會(huì)像String那樣重新建立對(duì)象 它只能通過(guò)構(gòu)造函數(shù)來(lái)建立,

StringBuffer sb = new StringBuffer();

note:不能通過(guò)付值符號(hào)對(duì)他進(jìn)行付值. 

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

 對(duì)象被建立以后,在內(nèi)存中就會(huì)分配內(nèi)存空間,并初始保存一個(gè)null.向StringBuffer 中付值的時(shí)候可以通過(guò)它的app end方法.

 sb.append("hello"); 

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

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

的處理步驟實(shí)際上是通過(guò)建立一個(gè)StringBuffer,然后調(diào)用append(),最后 再將StringBuffer toSting(); 

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

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

 

3.   String類型的數(shù)據(jù)與基本數(shù)據(jù)類型直接如何轉(zhuǎn)換?

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

(1)toString     

  ①基本數(shù)據(jù)類型的都有一個(gè)靜態(tài)方法toString(),轉(zhuǎn)換時(shí)可以采用 "封裝類型.toString(對(duì)應(yīng)的基本數(shù)據(jù)類型字面值)" 方法來(lái)轉(zhuǎn)換成字符串。

    例:將int類型的20轉(zhuǎn)成字符串,

String s = Int.toString(20)

  ②將基本數(shù)據(jù)類型封裝成相應(yīng)的封裝類型對(duì)象,采用 "基本數(shù)據(jù)類型對(duì)象.toString()"方法轉(zhuǎn)換成字符串。

    例:將double類型的425.0轉(zhuǎn)成字符串,

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

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

  例:將long類型的200轉(zhuǎn)成字符串,

String s = 200 + "";

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

  例:將char類型的'b'轉(zhuǎn)成字符串,

String.valueOf('b');

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

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

  例:將字符串"123"轉(zhuǎn)成int類型,

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

(需注意字符串轉(zhuǎn)成基本數(shù)據(jù)類型時(shí)字符串內(nèi)容必須是基本數(shù)據(jù)類型的字面值,否則編譯雖然能通過(guò),但運(yùn)行時(shí)出現(xiàn)NumberFormatException)

(2)用字符串構(gòu)造基本類型的封裝對(duì)象,再調(diào)用封裝對(duì)象的xxxValue方法

  例:將字符串"20.5"轉(zhuǎn)成double類型,

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

1.   String與toString的區(qū)別?

(String)

這是標(biāo)準(zhǔn)的類型轉(zhuǎn)換,將object轉(zhuǎn)成String類型的值。使用這種方法時(shí),需要注意的是類型必須能轉(zhuǎn)成String類型。因此最好用instanceof做個(gè)類型檢查,以判斷是否可以轉(zhuǎn)換。否則容易拋出CalssCastException異常。此外,需特別小心的是因定義為Object 類型的對(duì)象在轉(zhuǎn)成String時(shí)語(yǔ)法檢查并不會(huì)報(bào)錯(cuò),這將可能導(dǎo)致潛在的錯(cuò)誤存在。這時(shí)要格外小心。如:

Object obj = new Integer(100);

String strVal = (String)obj;

在運(yùn)行時(shí)將會(huì)出錯(cuò),因?yàn)閷nteger類型強(qiáng)制轉(zhuǎn)換為String類型,無(wú)法通過(guò)。、

toString

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

2.Object與基本數(shù)據(jù)封裝類中的toString的含義?

1.某些情況下,數(shù)據(jù)必須作為對(duì)象出現(xiàn),此時(shí)必須使用封裝類來(lái)將簡(jiǎn)單類型封裝成對(duì)象。

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

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

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

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

3.基本數(shù)據(jù)類型與其對(duì)應(yīng)的封裝類由于本質(zhì)的不同,具有一些區(qū)別:

基本數(shù)據(jù)類型只能按值傳遞,而封裝類按引用傳遞。

基本類型在堆棧中創(chuàng)建;而對(duì)于對(duì)象類型,對(duì)象在堆中創(chuàng)建,對(duì)象的引用在堆棧中創(chuàng)建。基本類型由于在堆棧中,效率會(huì)比較高,但是可能會(huì)存在內(nèi)存泄漏的問(wèn)題。

 

 

4.4Scanner類

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

Scanner類,一個(gè)可以使用正則表達(dá)式來(lái)解析基本類型和字符串的簡(jiǎn)單文本掃描器。

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

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

1.導(dǎo)入Scanner類。

  import java.util.Scanner;

2.創(chuàng)建Scanner對(duì)象。

  Scanner input=new Scanner(System.in);

3.獲得鍵盤輸入的數(shù)據(jù)。

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


發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 兖州市| 河间市| 乳山市| 宜宾县| 博白县| 博白县| 西华县| 舞钢市| 互助| 襄垣县| 永登县| 鄱阳县| 定南县| 平遥县| 内江市| 杭锦旗| 蒙山县| 文水县| 理塘县| 焉耆| 叶城县| 临潭县| 屏东市| 黄大仙区| 高邮市| 东港市| 咸宁市| 石河子市| 沐川县| 德惠市| 衡南县| 遂溪县| 阜阳市| 射阳县| 龙泉市| 剑川县| 华坪县| 肥城市| 通州区| 台东市| 玛沁县|