第六週Java作業

一、概述

    字符串廣泛應用 在 Java 編程中,在 Java 中字符串屬於對象,Java 提供了 String 類來創建和操作字符串。String 類是不可改變的,所以你一旦創建了 String 對象,那它的值就無法改變了。

    如果需要對字符串做很多修改,那麼應該選擇使用StringBuffer & StringBuilder類,和 String 類不同的是,StringBuffer 和 StringBuilder 類的對象能夠被多次的修改,並且不產生新的未使用對象。

    StringBuilder 類在 Java 5 中被提出,它和 StringBuffer 之間的最大不同在於 StringBuilder 的方法不是線程安全的(不能同步訪問)。

    由於 StringBuilder 相較於 StringBuffer 有速度優勢,所以多數情況下建議使用 StringBuilder 類。然而在應用程序要求線程安全的情況下,則必須使用 StringBuffer 類。

二、String類 

    String是java中的字符串類,是一種引用類型,修改字符串的值時,會重新創建一個新字串:

StringDemo1.java

public class StringDemo1 {

    public static void main(String[] args) {
        String s1 = "Hello,world!";
        String s2 = "Hello,world!";   //與s1指向同一地址,"Hello,world!"存儲在堆的常量池中
        String s3 = new String("Hello,world!"); //創建了一個新對象

        System.out.println(s1==s2); //true      地址相等
        System.out.println(s1==s3); //false
        System.out.println(s1.equals(s3));//true 內容相等 重寫了Object的

        byte[] bytes={65,66,67,68};  正數:字母  負數:漢字(兩個字節)
        String str=new String(bytes);    // byte數組 轉 字符串
        String str=new String(bytes,1,2); //(數組,始值  個數)
        byte[] bytes = str.getBytes();  // 字符串 轉 byte數組
        char[] ch={'中','a','2'};

        String str=new String(ch);     // 字符數組 轉 字符串
        String str=new String(ch,0,1);  // 字符數組 轉 字符串
        char[] chs = str.toCharArray();  //字符串 轉 字符數組

    }
}

String的常用方法:

str.toString(); 獲取字符串對象的內容  輸出時 自動調用

str.isEmpty(); 判斷字符串是不是空串

str.length(); 返回字符串長度

str.charAt(0); 返回索引處字符

str.equals(str2); 判斷字符串 與 指定字符串的內容是否相同

str.equalsIgnoreCase(str3); 判斷字符串內容是否相同  忽略大小寫

str.substring(1); 截取開始索引 到最後 的字符串

str.substring(2, 4); 截取開始索引 到終止索引(不包括) 的字符串

str.indexOf("bcd"); 返回第一次出現該字符串的索引,沒有返回-1

str.contains("bcd"); 判斷是否包含指定字符串,返回true/false

str.startsWith("Demo"); 判斷是否以給定字符串開頭

str.endsWith("java"); 判斷是否以給定字符串結尾

str.toLowerCase(); 把字符串轉換爲小寫字符串

str.toUpperCase(); 把字符串轉換爲大寫字符串

str.trim();     去掉字符串兩端空格

str.replace(oldChar, newChar);   將替換字符串中的老字符替換爲新字符

str.replace(oldstr, newstr); 將字符串中的老字符串,替換爲新字符串

String[] strArray = str.split(",");   按照指定符號分割字符串

三、StringBuilder類

    StringBuilder是java 1.5中新提供的字符串類,效率非常高,與StringBuffer類的用法相同。StringBuffer是線程安全的,StringBuilder是非線程安全的。

public class StringBuilderDemo {

    public static void main(String[] args) {

        StringBuilder sb = new StringBuilder(); //構造方法   初始爲空串

        StringBuilder sb = new StringBuilder("world");//構造方法 str 轉sb

        String str = sb.toString();       //str 轉sb    輸出時 自動調用


        StringBuilder sb2 = sb.append("hello");//添加數據(任意類型)

        System.out.println(sb == sb2); //true 地址相同


        sb.delete(1, 4);    //刪除 [1,4)字符

        sb.deleteCharAt(1); //刪除字符

        sb.insert(2, "it");   //在指定位置插入

        sb.replace(1, 4, "java");//替換[1,4)的字符串爲"java"

        sb.reverse();反轉


        sb.length();    //返回長度(字符數)

        sb.charAt(0);  //返回索引處的字符

        sb.indexOf("java",5); //查找第一次出現字符串的索引 從指定索引處


        String str = sb.substring(0,1); //截取 [0,1) 返回字符串

        String str = sb.substring(1); //截取[1,最後] 返回字符串

        sb.append("hello").append(true).append(100); //鏈式調用
    }

}

四、類型轉換

    1、字符串、數組相互轉換:

/**
 * 本Demo是字符串和字符數組之間的相互轉換功能的展示
 */

import java.util.Arrays;

public class StringConvertDemo1 {
    public static void main(String[] args) {
        String sVer = "小宇飛刀!";
        char[] cArray;

        //把一個字符串轉換爲字符數組
        cArray = sVer.toCharArray();//或者直接:cArray = "小宇飛刀".toCharArray();

        System.out.println("字符串sVer:"+sVer);

        //使用foreach遍歷輸出數組中的元素值
        System.out.print("數組cArray:");
        for (char ch: cArray) {
            System.out.print(ch);
        }

        //通過Arrays靜態類提供的方法輸出數組的內容:Arrays.toString(數組變量)
        System.out.println("\n數組cArray:"+Arrays.toString(cArray));

        System.out.println("-----------------------------------------------------------");

        char[] cArray2 = {'中','國','人','民'};

        String sVer2 = String.valueOf(cArray2);//或者:String sVer2 = new String(cArray2);

        System.out.println("數組cArray2的內容:"+Arrays.toString(cArray2));
        System.out.println("字符串sVer2的內容:"+sVer2);

        System.out.println("-----------------------------------------------------------");
        System.out.println("字符串sVer:"+sVer);
        System.out.print("原始數組內容cArray:");
        System.out.println(cArray);
        System.out.println("sVer.equals(cArray):"+sVer.equals(cArray));
        System.out.println("sVer.equals(String.valueOf(cArray)):"+sVer.equals(String.valueOf(cArray)));

    }
}

    2、字符串、數字相互轉換: 

public class StringConvertDemo2 {

    public static void main(String[] args) {

        // 字符串轉成基本類型Xxx.parseXxx(String s);  xxx:基本數據類型

        String str="12";
        System.out.println(str+1); // 121
        int s1=Integer.parseInt(str); // str內容必須是int格式
        System.out.println(s1+1); // 13


        String str2="2.3";
        double s2=Double.parseDouble(str2);
        System.out.println(s2+1); // 3.3

        //基本類型 轉 字符串

        String s=12+""; // 方法1
        System.out.println(s);

        String s3=String.valueOf(2.3); // 方法2
        System.out.println(10+s3); // 102.3


        String s4 = Integer.toString(12); // 方法3  有參數 不是重寫obj
        System.out.println(s4+1); // 13

    }
}

   3.字符串的格式化

import java.text.SimpleDateFormat;
import java.util.Date;

public class StringFormatDemo {
    public static void main(String[] args) {
        int x = 16;
        char ch = 'A';
        byte bt = 97;
        double dd = 7851412.957418;

        System.out.println(x);
        System.out.println(ch);
        System.out.println(bt);
        System.out.println(dd);

        String s1 = String.format("%06d",x);
        System.out.println(s1);
        System.out.println(String.format("%-6d",x));
        System.out.println(String.format("%,3.2f",dd));
        System.out.printf("%c",ch); //使用printf()方法可以簡化String.Format()的寫法
        System.out.printf("\n%c\n",bt);

        Date dt = new Date(); //獲取系統當前日期和時間
        //Date對象的格式化串必須以 "%t"開始 F參數表示日期格式爲yyyy-MM-dd  T參數表示時間格式爲HH:mm:ss
        System.out.printf("%tF %tT",dt,dt);

        System.out.println("\n===============================");

        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

    }
}

     更多有關字符串格式化的內容見博主的另一篇貼子:https://blog.csdn.net/xieyunc/article/details/102531684

 五、演示DEMO源代碼在github上的倉庫地址:

https://github.com/xieyunc/java_demo.git

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章