日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

常用API-2(字符串与数组)

發布時間:2024/10/14 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 常用API-2(字符串与数组) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.字符串的生命與初始化主要有一下兩種情況:

  • String s1=new String("abc"); ?? String s2=new String("abc");
  • 存在兩個引用對象s1和s2,兩個內容相同的字符串對象“abc”
  • 它們哎內存中的地址時不同的;
  • 只要用到new總會生成新的對象。
  • String s1="abc"; ??String s2="abc";
  • 在JVM中存著一個字符串池,其中保存著和多String對象,并且可以被共享使用;
  • s1和s2引用的是同一個常量池中的對象;
  • 創建s1時,會在字符串常量池中查找是否已經有相同的字符串被定義,其判斷依據是equals(Object obj)方法的返回值。
  • 若已經定義,則直接獲取對其的引用,此時不需要創建新的對象;
  • 若沒有定義,則首先創建這個對象,然后把它加入到字符串常量池中,再將它的引用返回。
  • String s1="abc"; String s2="abc"; String s3=new String("abc"); String s3=new String("abc");

    s1:在常量區存放了一個“abc”字符串對象;

    s2:引用常量區的對象,不創建新對象;

    s3:在堆中創建新的對象;引用常量區的“abc”字符串對象。

    s4:在堆中創建新的對象;引用常量區的“abc”字符串對象。

    String的實現采用了Flyweight的設計模式。

    String類是不可變類。一旦創建好了就不可修改,所以String對象可以被共享而且不會導致程序混亂。

    String s=null; s是一個字符串引用,不知想任何一個字符串;

    String s=" "; s是一個字符串類型的引用,指向另外一個字符串(空串)

    ?

    new String("abc");創建了幾個對象?

    一個或兩個。如果常量池原來有“abc”,那么只創建一個。如果沒有,那么就會創建兩個。


    2.==、equals和hashCode()

    1)==

    用來比較兩個變量的值是否相等。

    比較變量對應的內存中所存儲的數值是否相同。

    比較兩個基本類型的數據或者兩個引用變量是否相等,只能用==。

    • 基本類型:直接使用==比較;
    • 引用類型:涉及兩塊內存,對象本身(s)占用一個堆內存,變量(new String())占用一塊內存。變量s所對應內存中存儲的數值就是對象占用的那塊內存的首地址。如果要比較兩個變量是否指向同一個對象,就要看這兩個變量所對應內存中的數值是否相等(這兩個變量是否指向同一個對象)。但是==無法實現對象內容的比較。

    2)equals

    Object提供的方法之一。

    Object中的equals(Object)直接使用==運算符比較兩個對象。

    在沒有覆蓋equals(Object)時,它與==一樣,比較的是引用。

    ==不能被覆蓋,但是equals(Object)可以,可以通過覆蓋的方法讓它比較數據內容。

    String中的equals(Object)是用于比較兩個獨立對象內容是否相同。

    3)hashCode()

    繼承于Object,用于鑒定兩個對象是否相等。

    Object類總的hashCode()返回對象在內存中地址轉換成的一個int值。

    若沒有重寫hashCode()則任何對象的hashCode()都是不相等的。

    一般在覆蓋equals方法時也要覆蓋hashCode方法。否則就會違反Object.hashCode約定。


    3.可對字符串操作的類String、StringBuffer、StringBuilder和StringTokenizer

    Character處理單個字符???
    String處理字符串不可變適合共享?
    StringBuffer處理字符串可變適合頻繁修改多線程
    StringBuilder處理字符串可變頻繁修改單線程
    StringTokenizer分割字符串根據“ \t\n\r\f”分割(5種,有空格)??

    實例化String時,可利用構造函數(String s1=new String("world");)進行初始化,也可用賦值(String s="Hello";)初始化。

    實例化StringBuffer時,只能用構造函數(StringBuffer s=new StringBuffer("Hello");)進行初始化。

    String字符串的修改原理:

    • 首先創建一個StringBuffer;
    • 其次調用StringBuffer的append();
    • 最后調用StringBuffer的toString()返回結果。
    String s="Hello"; s+="World";

    以上代碼等價于

    StringBuffer sb=new StringBuffer("Hello"); sb.append("World"); s=sb.toString();

    執行效率低。

    執行效率方面:

    StringBuilder最高,StringBuffer次之,String最低。

    • 操作數據量比較小,用String;
    • 單線程操作大量數據,用StringBuffer;
    • 多線程操作大量數據,用StringBuilder.

    由于?StringBuilder 相較于 StringBuffer 有速度優勢,所以多數情況下建議使用?StringBuilder 類。

    然而由于 StringBuilder 的方法不是線程安全的(不能同步訪問),在應用程序要求線程安全的情況下,則必須使用?StringBuffer 類。


    4.數組

    具有相同類型的數據的集合,一般具有固定的長度,并且在內存中占據連續的空間。

    (ArrayList就是動態數組,也是一個對象。創建一個ArrayList對象,該對象存放在堆內存中,且是一個內存連續的內存區域。)

    一維數組的聲明方式:

    type arrayName[] type[] arrayName
    • type既可以是基本的數據類型,也可以是類。
    • 數組被創建后會根據數組存放的數據類型初始化成對應的初始值。
    • Java數組在定義時,并不會給數組袁術分配存儲空間,因此[ ]中不需要指定數組的長度。

    定義數組且必須分配空間的方法為:

    arrayName=new type[arraysize]

    數組初始化方法:

    1.int[] a=new int[5];//默認初始化為0 2.int[] a={1,2,3,4,5};

    使用時可以將數組的生命和初始化分開寫。

    二維數組的聲明方法:

    1) type arrayName[][]; 2) type[][] arrayName; 3) type[] arrayName[];

    注:聲明二維數組時,其中的[ ]必須為空。

    二維數組的初始化:

    type arranName[][]={{c11,c12,c13,...}.{c21,c22,c23,...},{...}...};type arrayName[][]-new type[行數][列數]

    其中,二維數組的第二維長度可以不同。

    二維數組的訪問:

    arrayName[行號][列號]

    原生類:未被實例化的類。

    數組一般指實例化、被分配空間的類,不是原生類。


    5.length屬性和length()

    length屬性:數組的

    length():字符串的

    size():計算對象大小的。查看泛型中有多少個元素。

    泛型:對Java語言的類型系統的一種擴展,一直創建可以按類型進行參數化的類,可以把類型參數看做是使用參數化類型時執行的類型的一個占位符,就像方法的形式參數是運行時傳遞的值的占位符一樣。

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    ?

    總結

    以上是生活随笔為你收集整理的常用API-2(字符串与数组)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。