日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

常用類之包裝類和String類

作者:草原灰太狼666 更新時間: 2022-07-13 編程語言

常用類

1.包裝類:基本數據類型所對應的引用數據類型

? ? ?? 基本數據類型?? ? ?? ?? ? ? 包裝類型? ???
byte Byte
short Short
int Integer
long Long
float Float
double Double
boolean Boolean
char Character
  • 什么包裝類

    • 包裝類:基本數據類型所對應的引用數據類型
    • Object 可統一所有數據,包裝類的默認值是 null
  • 類型轉換中裝箱和拆箱

    • 裝箱:把基本類型轉換為引用類型(數據:棧–>堆)
    • 拆箱:把引用類型轉換為基本類型(數據:堆–>棧)
    • 基本類型存儲在棧中,引用類型存儲在堆中
    • 注意:為了更好的運算,JDK1.5之后,提供自動裝箱和拆箱。自動裝箱、拆箱,底層調用的是Integer.valueof();
  • 基本類型和字符串轉換

    • 8 種包裝類提供不同類型間的轉換方式:
    • Number父類中提供的6個共性方法
    • parseXXX() 靜態方法。(字符串–>基本類型)
    • 包裝類.toString(基本類型–>字符串)
  • Integer 緩沖區: -128 ~ 127

    • Java預先創建了256個常用的整數包裝類型對象。的數值是 -128~127,當超過這個數值區間的時候,就會使用 new自己創建了
    • 在實際應用當中,對已創建對象進行復用,以節省內存

1.1 裝箱與拆箱代碼演示

package classes.demo05;

public class IntegerTest {

    public static void main(String[] args) {
        int num=65;
         //類型轉換:裝箱,基本類型-->引用類型

        // 使用Integer類創建對象
        //第一種 構造方法
        Integer integer1=new Integer(num);
        System.out.println("裝箱");
        System.out.println(integer1);

        //第二種 valueof
        Integer integer2 = Integer.valueOf(num);
        System.out.println(integer2);

        //拆箱 引用類型-->基本類型          // 拆箱,引用類型轉換基本類型
        Integer integer3 = Integer.valueOf(100);
        int i = integer3.intValue();
        System.out.println("拆箱");
        System.out.println(i);

         // JDK 1.5之后提供自動裝箱和拆箱
        //自動裝箱      自動裝箱相當于引用了 valueOf()
        int age=77;
        Integer integer4=age;
        System.out.println("自動裝箱");
        System.out.println("integer4 = " + integer4);

        //自動拆箱     自動拆箱相當于引用了 .intValue()
        int age2=integer4;
        System.out.println("自動拆箱");
        System.out.println(age2);



    }
}



運行結果

裝箱
65
65
拆箱
100
自動裝箱
integer4 = 77
自動拆箱
77


1.2 基本類型和字符串轉換代碼演示

package classes.demo05;

public class ParseTest {
    public static void main(String[] args) {

    // 基本類型轉換字符串
    // 1. 使用 + 號
        int age=15;
        String s1=age+" ";
        System.out.println(s1);

        // 2. 使用 Integer 的 toString() 方法
        String s2=Integer.toString(age);
        System.out.println(s2);

        // 使用 Integer 的 toString() 方法的進制重載
        String s3=Integer.toString(age,16);
        System.out.println(s3);
        System.out.println("==================================");

        // 字符串轉換基本類型
        // 使用 Integer 的 parseXXX() 方法
        String str="255";
        int ss = Integer.parseInt(str); // 在轉換基本類型時注意不要出現非數字
        System.out.println(ss);

       // Boolean 字符串形式轉換基本類型只有 "true" 轉換成 true, 非 "true" 全都轉換成 false
        String str1="true";
        boolean b = Boolean.parseBoolean(str1);
        System.out.println(b);

    }
}




運行結果

15 
15
f
==================================
255
true

1.3 整數緩存區代碼演示

package classes.demo05;

public class DemoCache {
    public static void main(String[] args) {

        //Java預先創建了256個常用的整數包裝類型對象。便于進行復用,以節省內存

        //面試題
        //分別為false,true,false
        //第一個是通過new一個對象,等號比較的是對象的地址,所以false
        //第二和第三屬于自動裝箱,等價于Integer i3 = Integer.valueOf(100);
        //這個方法在數據為-128~127的值是放在緩沖區中,能直接獲得同一個值,所以地址相同
        //如果超過這個區間,則會在堆中重新創造空間

        Integer integer1 = new Integer(100);
        Integer integer2 = new Integer(100);
        System.out.println(integer1==integer2);// false

        Integer integer3=100;  // 自動裝箱 相當于引用了 valueOf()
        //Integer integer3=Integer.valueOf(100);
        Integer integer4=100;
        //Integer integer4=Integer.valueOf(100);
        System.out.println(integer3==integer4);// true  // 因為緩存區數組 [-128, 127] 在這之內地址一樣

        Integer integer5=200;   // 自動裝箱 相當于引用了 valueOf()
        //Integer integer5=Integer.valueOf(100);
        Integer integer6=200;
        //Integer integer6=Integer.valueOf(100);
        System.out.println(integer5==integer6);// false  //使用new 自己創建了   return new Integer(i);


    }
}



運行結果

false
true
false

2.String類

  • 字符串是常量,創建之后不可改變。修改相當于重寫開辟空間,不會修改原來的數據,原有常量失效(變成垃圾)
  • 字符串字面值存儲在字符串池中 (方法區中),可以共享
  • String s = “Hello”;產生一個對象,字符串池中存儲
  • String s = new String(“Hello”); 產生兩個對象,堆、池各一個
  • String 比較使用 equals ,在 String 中重寫了 equals ,此時比較的不是對象的地址,而是字符串的值

2.1 String類常用方法

1. ?length()方法

public int length()

  • 返回字符串的長度

2. ?charAt(int index)方法

public char charAt(int index)

  • 根據下標獲取字符

3. ?contains(String str)方法

public boolean contains(String str)

  • 判斷當前字符串中是否包含str

4.?toCharArray()方法

public char[] toCharArray()

  • 將字符串轉換成數組

5.?indexOf(String str)方法

public int indexOf(String str)

  • 查找str首次在字符串中出現的下標,若存在,則輸出下標,若不存在則返回-1

6.?lastIndexOf(String str)方法

public int lastIndexOf(String str)

  • 查找字符串在當前字符串中最后一次出現的下標索引

7.?trim()方法

public String trim()

  • 去掉字符串前后的空格。

8.?toUpperCase()方法

public String toUpperCase()

  • 將小寫轉成大寫

public String toLowerCase()

  • 將大寫轉成小寫。

9.?endWith(String str)方法

public boolean endWith(String str)

  • 判斷字符串是否以str結尾。

10.?replace(char oldChar,char newChar)方法

public int indexOf(String str)

  • 將舊字符轉換成新字符

11.?split(String str)方法

public String[] split(String str)

  • 根據str做拆分

12.?equals() 和compare()的比較

  • equalsIgnoreCase是忽略大小寫的比較是否相同;
  • equals():比較內容是否相等;
  • compareTo():若字符串首字符相同,則比較第二個,逐次比較相減,若前一個字符串和第二個子字符串都相同,則比較其長度,長度相減;


2.2 String常用方法代碼演示:

package classes.demo07;

import java.util.Arrays;

/**
 *
 *
 *
 *
 * */


public class Demo {
    public static void main(String[] args) {

        String name="hello";//"hello"常量存儲在字符串池中
        name="張三";//張三賦值給name變量,給字符串賦值時,并沒有修改數據,而是重新開辟一個空間
        String name2="張三";
        System.out.println(name.hashCode());
        System.out.println(name2.hashCode());
        System.out.println(name==name2);
        System.out.println("====================");

        //演示字符串的另一種創建方式,new String();
        String str = new String("java");
        String str1 = new String("java");
        System.out.println(str==str1);
        System.out.println(str.equals(str1));//String 比較使用 equals ,在 String 中重寫了 equals ,此時比較的不是對象的地址,而是字符串的值


        System.out.println("****************字符串的常用方法 1********************");
        // 1. length(); 返回字符串長度
        // 2. charAt(int index); 返回某個位置的字符
        // 3. contains(String str); 判斷是否包含某個字符串
        String content=" java 是世界上最好用的語言,java真香 ";
        System.out.println(content.length());
        System.out.println(content.charAt(content.length()-1));
        System.out.println(content.contains("java"));
        System.out.println(content.contains("Python"));

        System.out.println("****************字符串的常用方法 2********************");

        // 4. toCharArray(); 返回字符串對應數組
        // 5. indexOf(); 返回子字符串首次出現的位置
        // 6. lastIndexOf(); 返回字符串最后一次出現的位置
        System.out.println(content.toCharArray());
        System.out.println(Arrays.toString(content.toCharArray()));
        System.out.println(content.indexOf("java"));
        System.out.println(content.lastIndexOf("java"));
        System.out.println(content.indexOf("java",6));//從下標6開始找

        System.out.println("****************字符串的常用方法 3********************");
        // 7. trim(); //去掉字符串前后空格   無法去掉中間的空格
        // 8. toUpperCase(); toLowerCase(); 轉換大小寫    toUpperCase();小寫轉大寫   toLowerCase(); 大寫轉小寫
        // 9. endWith(str); startWith(str);  判斷是否以str 結尾、開頭
        String content2="  hello world ";
        System.out.println(content2.trim());
        System.out.println(content2.toUpperCase());
        System.out.println(content2.endsWith("java"));

        System.out.println("****************字符串的常用方法 4********************");
        // 10. replace(char old, char new); 用新的字符或字符串替換舊的字符或字符串
        // 11. split(); 對字符串拆分

        System.out.println(content.replace("java","PHP"));
        String say=" java   is the ,best language";
        System.out.println(say.split(" "));
        System.out.println(Arrays.toString(say.toCharArray()));
        System.out.println(Arrays.toString(say.split(",")));
         //String[] strr = say.split("[ ,]}+");   //+號表示拆分多余的空格
        //String[] strr = say.split("[ ,]}");//使用空格或者,拆分  可拆分掉逗號
        String[] strr = say.split(" ");
        for (String s : strr) {
            System.out.println(s);
        }

        System.out.println("****************補充方法 4********************");
          //12. 補充兩個   equals/compareTo();比較大小
        String s1="hello";
        String s2="HELLO";
        System.out.println(s1.equalsIgnoreCase(s2));// 忽略大小寫比較

        //兩字符不同時比較字符字典序的ascii碼
        String S3="abc";//97
        String S4="xyz";//120
        System.out.println(S3.compareTo(S4));

        // 字符相同時比較長度 返回差值
        String s5="abc";
        String s6="abcdfg";
        System.out.println(s5.compareTo(s6));




    }
}


運行結果

774889
774889
true
====================
false
true
****************字符串的常用方法 1********************
24
 
true
false
****************字符串的常用方法 2********************
 java 是世界上最好用的語言,java真香 
[ , j, a, v, a,  , 是, 世, 界, 上, 最, 好, 用, 的, 語, 言, ,, j, a, v, a, 真, 香,  ]
1
17
17
****************字符串的常用方法 3********************
hello world
  HELLO WORLD 
false
****************字符串的常用方法 4********************
 PHP 是世界上最好用的語言,PHP真香 
[Ljava.lang.String;@1b6d3586
[ , j, a, v, a,  ,  ,  , i, s,  , t, h, e,  , ,, b, e, s, t,  , l, a, n, g, u, a, g, e]
[ java   is the , best language]

java


is
the
,best
language
****************補充方法 4********************
true
-23
-3

2.4 實踐案例代碼演示:

package classes.demo07;

public class Demo01 {
    public static void main(String[] args) {
        /*  案例測試
        已知String str = "this is a text";
        將str中的單詞單獨獲取
        將str中的text替換成practice
        在text前面插入一個easy
        將每個單詞的首字母改為大寫

       */
        String str = "this is a text";
        //1.將str中的單詞單獨獲取
        System.out.println("---------1. 將str中的單詞單獨獲取出來-------");
        String[] chars = str.split(" ");
        for (String aChar : chars) {
            System.out.println(aChar);
        }
        //2.將str中的text替換成practice
        System.out.println("---------2. 將str中的text替換為practice-------");
        System.out.println(str.replace("text","practice"));
        //3.在text前面插入一個easy
        System.out.println("---------3. 在text前面插入easy-------");
        System.out.println(str.replace("text","easy text"));


        //4.將每個單詞的首字母改為大寫
        System.out.println("---------4. 將每個單詞的首字母改為大寫------");
        for (int i = 0; i <chars.length ; i++) {
            //先用charAt()方法選取第一個字符
            char c = chars[i].charAt(0);

            //把第一個字符轉成大寫,用Character.toUpperCase()方法
            char upperfirst = Character.toUpperCase(c);//Character類中的toUpperCase() 方法

            //把字符拼回字符串,substring()方法是截取用的
            String s = upperfirst + chars[i].substring(1);//substring()  截取方法
            System.out.println(s);

        }

    }
}

運行結果

---------1. 將str中的單詞單獨獲取出來-------
this
is
a
text
---------2. 將str中的text替換為practice-------
this is a practice
---------3. 在text前面插入easy-------
this is a easy text
---------4. 將每個單詞的首字母改為大寫------
This
Is
A
Text

2.5 可變字符串:StringBuffer 和 StringBuilder

  • StringBuffer:可變長字符串,JDK1.0提供,運行效率慢、線程安全。

  • StringBuilder:可變長字符串,JDK5.0提供,運行效率快、線程不安全。

  • 可變字符串和String的區別:

    • 運行效率比String要高
    • 比String要節省內存

2.6 StringBuffer方法代碼演示:

package classes.demo07;

public class Demo02 {
    public static void main(String[] args) {
        // StringBuffer 和 StringBuilder 用法一致
        //StringBuilder stringBuffer = new StringBuilder();

        StringBuffer stringBuffer = new StringBuffer();
        // 1. append(); 追加
        stringBuffer.append("java是世界第一");
        System.out.println(stringBuffer);
        System.out.println(stringBuffer.append("java真香"));

          // 2. insert(); 添加、插入
        stringBuffer.insert(0,"我在最前面");
        System.out.println(stringBuffer.toString());

        // 3.replace(); 替換
        //這里的下標含頭不含尾,如下面只替換下標為0-4的內容
        stringBuffer.replace(0,5,"hello");// 包頭不包尾
        System.out.println(stringBuffer.toString());

        // 4. delete(); 刪除
        stringBuffer.delete(0,5);
        System.out.println(stringBuffer.toString());

        //5.反轉reverse()
        stringBuffer.reverse();
        System.out.println(stringBuffer.toString());

        // 6. 清空
        stringBuffer.delete(0,stringBuffer.length());
        System.out.println(stringBuffer.toString());



    }
}

運行結果

java是世界第一
java是世界第一java真香
我在最前面java是世界第一java真香
hellojava是世界第一java真香
java是世界第一java真香
香真avaj一第界世是avaj



2.7 String和stringBuffer運行效率比較代碼演示:

package classes.demo07;
//驗證StringBuilder效率高于StringBuffer
public class Demo03 {

    public static void main(String[] args) {
        //開始時間
        long star = System.currentTimeMillis();

        /*String ss=" ";
        for (int i = 0; i < 9999; i++) {
            ss+=i;

        }*/



        StringBuffer stringBuffer = new StringBuffer();
        for (int i = 0; i < 99999; i++) {
            stringBuffer.append(i);
        }


        System.out.println(stringBuffer.toString());
        long end = System.currentTimeMillis();
        System.out.println("用時:"+(end-star));


    }

}


運行結果

用時:37


————————————————————————————————————————————————————————————————————————————

3.更多參考

千峰教育-常用類

原文鏈接:https://blog.csdn.net/qq_60501861/article/details/125492680

欄目分類
最近更新