真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Java基礎(chǔ)之怎么理解字符串String-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“Java基礎(chǔ)之怎么理解字符串String”,感興趣的朋友不妨來(lái)看看。本文介紹的方法操作簡(jiǎn)單快捷,實(shí)用性強(qiáng)。下面就讓小編來(lái)帶大家學(xué)習(xí)“Java基礎(chǔ)之怎么理解字符串String”吧!

十年品牌的成都網(wǎng)站建設(shè)公司,成百上千企業(yè)網(wǎng)站設(shè)計(jì)經(jīng)驗(yàn).價(jià)格合理,可準(zhǔn)確把握網(wǎng)頁(yè)設(shè)計(jì)訴求.提供定制網(wǎng)站建設(shè)、成都商城網(wǎng)站開(kāi)發(fā)、小程序開(kāi)發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等服務(wù),我們?cè)O(shè)計(jì)的作品屢獲殊榮,是您值得信賴的專(zhuān)業(yè)網(wǎng)站設(shè)計(jì)公司。

  字符串常量不可變

  底層原碼中使用final修飾 char[] value來(lái)存儲(chǔ)字符串的值。字符串常量是存在常量池中,一旦聲明,就不可以改變,同時(shí)常量池中不會(huì)存儲(chǔ)相同內(nèi)容的字符串,即s1與s2是相等的。

  String s1 = "aaa";

  s1 = "bbb";

  System.out.println(s1);

  String s1 = "123";

  String s2 = "123";

  System.out.println(s1==s2);

  輸出的s1的值是bbb,不是改變了么?注意這里的s1是引用對(duì)象,因此s1存在棧空間中,也就是s1與aaa并不存在同一內(nèi)存空間中,只是中間連接了一條繩子將aaa指向了s1,現(xiàn)在這條繩子由bbb指向了s1,但是aaa其實(shí)還留在了常量池中,所以說(shuō)字符串常量是不可改變的。

  除此之外,String還實(shí)現(xiàn)了Serializable接口,表示字符串可以被序列化,還實(shí)現(xiàn)了Comparable接口表示字符串可以比較大小

  null," "的區(qū)別

  String s1 = null

  String s2 = ""

  null代表的是空對(duì)象,并不是字符串,可以賦給任何對(duì)象,字符串中表示只是一個(gè)引用,還沒(méi)有內(nèi)存空間的分配

  “ ”表示引用已經(jīng)指向了 一塊內(nèi)存空間了,是一個(gè)實(shí)際的東西,可以進(jìn)行操作了,表示一個(gè)長(zhǎng)度為0的字符串

  數(shù)組轉(zhuǎn)成字符串(String的構(gòu)造)

  String():構(gòu)造一個(gè)空的字符串

  String(byte[] arr): 將字節(jié)數(shù)組變?yōu)橐粋€(gè)字符串

  String(byte[] arr, int offset, int lengh): 將字節(jié)數(shù)組部分變?yōu)樽址?/p>

  String(char[] arr): 將char字節(jié)數(shù)組變?yōu)樽址?/p>

  String(char[] arr, int offset, int length): 將char字節(jié)數(shù)組部分變?yōu)樽址?/p>

  String(String original): 字符串常量構(gòu)建字符串

  byte[]===>String

  全部轉(zhuǎn)換:轉(zhuǎn)換所有byte數(shù)據(jù)鄭州祛胎記醫(yī)院哪家好 http://www.zykdtj.com/

  byte[] b = {97,98,99,100};

  String str = new String(b);

  System.out.println(str);//abcd

  部分轉(zhuǎn)換: 截取轉(zhuǎn)換,超出索引,報(bào)出StringIndexOutOfBoundsException異常,通常Java中數(shù)組索引區(qū)間左開(kāi)右閉的

  byte[] b = {97,98,99,100};

  String str = new String(b,1,3);

  System.out.println(str);//bc

  char[]轉(zhuǎn)String等等一些數(shù)組轉(zhuǎn)String的方式都和上述大同小異,這些都是對(duì)String方法使得構(gòu)造

  ==與equals()的比較字符串是否相等

  == 比較的地址和內(nèi)容都相等才相等

  equals()內(nèi)容相等即是相等

  理解上面兩句:

  String s1 = "123";①

  String s2 = "123";②

  String s3 = new String("123");③

  System.out.println(s1==s2);//正確

  System.out.println(s1==s3);//錯(cuò)誤

  5

  只要明白了內(nèi)存分布,判斷不成問(wèn)題。對(duì)于①,②來(lái)說(shuō),上面已經(jīng)解釋過(guò)了都在棧內(nèi)存中,對(duì)于③來(lái)說(shuō),s3是對(duì)象存在Java堆中,s1,s2都是存在Java棧中,所以s1==s3是錯(cuò)誤的!!!對(duì)于equals()就不一樣了三者內(nèi)容都是相等的。

  練習(xí)一:

  String s1 = new String("hello");

  String s2 = new String("hello");

  System.out.println(s1==s2);

  System.out.println(s1.equals(s2));

  String s3 = new String("hello");

  String s4 = "hello";

  System.out.println(s3==s4);

  System.out.println(s3.equals(s4));

  String s5 = "hello";

  String s6 = "hello";

  System.out.println(s5==s6);

  System.out.println(s5.equals(s6)

  字符串的拼接

  常量與常量的拼接還在常量池中

  常量池不可有相同的常量

  拼接的時(shí)候,只要存在變量都會(huì)存到堆中

  調(diào)用intern()方法返回常量池里面的常量

  String s1 = "hello";

  String s2 = "world";

  String s3 = "helloworld";

  System.out.println(s3==(s1+s2));//F 變量的連接存在堆中不相等

  System.out.println(s3==(s1+s2).intern());//T 獲取的是值相等

  System.out.println(s3.equals(s1+s2));//T 獲取內(nèi)容相等

  System.out.println(s3=="hello" + "world");//T 常量與常量連接還在常量池中

  System.out.println(s3.equals("hello"+"world"));//T 內(nèi)容相等

  字符串操作常用方法

  字符串的判斷:

  equals方法比較兩個(gè)字符串內(nèi)容是否相等

  equalsIgnorecase忽略大小寫(xiě)比較兩個(gè)對(duì)象是否相等

  contains是否包含字符串

  startsWith()是否以指定的字符串開(kāi)頭

  endsWIth()是否以指定的字符串結(jié)尾

  isEmpty()是否為空

  String s1 = "abcde";

  String s2 = "AbCde";

  String s3 = "abcde";

  //equals

  System.out.println(s1.equals(s2));//t

  System.out.println(s1.equals(s3));//f

  //equalsIgnorecase

  System.out.println(s1.equalsIgnoreCase(s2));//t

  System.out.println(s1.equalsIgnoreCase(s3));//t

  //是否包含指定字符串

  System.out.println(s1.contains("bd"));//f

  //是否以指定字符串開(kāi)頭

  System.out.println(s1.startsWith("ab"));//t

  System.out.println(s1.startsWith("cde",2));//t 字符串是否在索引2開(kāi)始截取

  //是否以字符串結(jié)尾

  System.out.println(s1.endsWith(s3));//t

  //是否為空

  System.out.println(s1.isEmpty());//false

  18

  字符串的獲取

  length():字符串的長(zhǎng)度

  charAt(inx index):返回某個(gè)字符在字符串中的索引

  indexOf(int ch):獲取指定的字符在字符串第一次出現(xiàn)的位置,可以寫(xiě)對(duì)應(yīng)的ASCALL碼值

  indexOf(int ch, int fromIndex):從指定的索引開(kāi)始,字符出現(xiàn)的位置

  indexOf(String str):獲取指定的字符串在原字符串的位置

  indexOf(String str, int fromIndex):從指定的索引開(kāi)始,獲取字符串第一次出現(xiàn)的位置

  lastIndexOf(int ch):獲取指定字符最后一次出現(xiàn)的索引值

  lastIndexOf(String str,int fromIndex)獲取指定字符串最后出現(xiàn)的索引值

  subString(int start):從指定位置開(kāi)始截取字符串

  subString(int start, int end)從指定位置到指定位置截取字符串

到此,相信大家對(duì)“Java基礎(chǔ)之怎么理解字符串String”有了更深的了解,不妨來(lái)實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!


當(dāng)前標(biāo)題:Java基礎(chǔ)之怎么理解字符串String-創(chuàng)新互聯(lián)
標(biāo)題URL:http://weahome.cn/article/dghocd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部