1. 程式人生 > 實用技巧 >2020年9月17日 String 常用方法一、二、三

2020年9月17日 String 常用方法一、二、三

package com.atguigu.test09;

import org.junit.Test;

/*
 * 方法系列一:
 * (1)int length():返回字串的長度,返回的是字元的個數
 * 因為String的內部(JDK1.9之前)用char[]實現,這個長度就是value陣列的長度
 * (2)boolean isEmpty():是否是空字串
 * (3)String toLowerCase()
 *     String toUpperCase()
 * (4)String trim() :去掉字串的前後空白符 
 * (5)String concat():拼接,等價於+
 
*/ public class TestStringMethod01 { @Test public void test3(){ String s1 = "hello"; String s2 = "world"; String s3 = s1 + s2; String s4 = s1.concat(s2); System.out.println(s3 == s4);//false//變數和變數拼接,此處s3和s4都是變數;s1和s2是常量; System.out.println(s3.equals(s4));//
true } @Test public void test2(){ String str = " hello world "; str = str.trim();//需要有一個物件接受操作後的字串物件; System.out.println("[" + str + "]"); } @Test public void test1(){ String str = "hello"; System.out.println(str.toUpperCase()); } }
package com.atguigu.test09;

import java.util.Scanner;

import org.junit.Test;

/*
 * 方法系列二:和char相關
 * (1)char[] toCharArray()//字串轉換成字元陣列
 * (2)char charAt(index)//輸出第index個數組
 * (3)String(char[] arr)//
 * (4)String(char[] arr,int offset, int count)
 */
public class TestStringMethod2 {
    @Test
    public void test05(){
        char[] arr = {'h','e','l','l','o'};
        
        String string = new String(arr,2,3);//從[2]開始,取3個
        System.out.println(string);
    }
    
    @Test
    public void test04(){
        char[] arr = {'h','e','l','l','o'};
        
        String string = new String(arr);
        System.out.println(string);
    }
    
    @Test
    public void test03(){
        String str = "HelloWorld";
        System.out.println(str.charAt(4));
    }
    @Test
    public void test02(){
        Scanner input = new Scanner(System.in);
        System.out.print("請輸入性別:");
        String str = input.next();
        char gender = str.charAt(0);
        System.out.println(gender);
    }
    
    @Test
    public void test01(){
        String str = "HelloWorld";
        
        //統計大寫字母的個數
        char[] arr = str.toCharArray();
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            if(arr[i]>='A' && arr[i]<='Z'){
                count++;
            }
        }
        System.out.println("大寫字母的個數:" +count);
    }
}
package com.atguigu.test09;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

import org.junit.Test;

/*
 * 方式系列三:和byte相關,或者說和編碼與解碼相關
 *(1) byte[]  getBytes():編碼的方法,使用平臺預設的字元編碼進行編的
 *    byte[]  getBytes(編碼方式):
 * 
 * 編碼:   對於ASCII碼範圍內(0~127),無論用什麼編碼方式,結果都是一樣的,一個字元對應一個位元組的編碼值
 *         對於其他的字元,編碼,結果不一定是幾個位元組,例如漢字:
 *         UTF-8:變長的,但是大多數漢字都是3個位元組
 *         GBK、GB2312:固定2個位元組
 *         ISO8859-1:不支援中文,所有字元都變為1個位元組
 * (2)new String(位元組陣列)
 * new String(位元組陣列,編碼方式)
 * 
 * 編碼:
 *      把字元-->位元組的過程,編給計算機用的
 * 解碼:
 *     把位元組-->字元的過程,解給人看的
 * 
 * 亂碼:
 * (1)編碼與解碼字符集不一致
 * (2)缺位元組
 */
public class TestStringMethod3 {
    @Test
    public void test05() throws UnsupportedEncodingException{
        String str = "尚矽谷";
        byte[] bytes = str.getBytes("ISO8859-1");
        System.out.println(Arrays.toString(bytes));//[63, 63, 63]
        
        String string = new String(bytes,"ISO8859-1");
        System.out.println(string);
    }
    
    
    @Test
    public void test04() throws UnsupportedEncodingException{
        String str = "尚矽谷";
        byte[] bytes = str.getBytes("GBK");
        System.out.println(Arrays.toString(bytes));//[-55, -48, -71, -24, -71, -56]
        
        String string = new String(bytes,"GBK");
        System.out.println(string);
    }
    
    @Test
    public void test03() throws UnsupportedEncodingException{
        String str = "尚矽谷";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));//[-27, -80, -102, -25, -95, -123, -24, -80, -73]
    
        String string = new String(bytes,"UTF-8");
        System.out.println(string);
    }
    
    @Test
    public void test02(){
        String str = "abc";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));//[97, 98, 99]
    }
    
    @Test
    public void test01(){
        String str = "a";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));//[97]
    }
}
package com.atguigu.test09;

import java.io.UnsupportedEncodingException;
import java.util.Arrays;

import org.junit.Test;

/*
 * 方式系列三:和byte相關,或者說和編碼與解碼相關
 * (1)byte[]  getBytes():編碼的方法,使用平臺預設的字元編碼進行編的
 * byte[]  getBytes(編碼方式):
 * 
 * 編碼:   對於ASCII碼範圍內(0~127),無論用什麼編碼方式,結果都是一樣的,一個字元對應一個位元組的編碼值
 *         對於其他的字元,編碼,結果不一定是幾個位元組,例如漢字:
 *         UTF-8:變長的,但是大多數漢字都是3個位元組
 *         GBK、GB2312:固定2個位元組
 *         ISO8859-1:不支援中文,所有字元都變為1個位元組
 * (2)new String(位元組陣列)
 * new String(位元組陣列,編碼方式)
 * 
 * 編碼:
 *      把字元-->位元組的過程,編給計算機用的
 * 解碼:
 *     把位元組-->字元的過程,解給人看的
 * 
 * 亂碼:
 * (1)編碼與解碼字符集不一致
 * (2)缺位元組
 */
public class TestStringMethod3 {
    @Test
    public void test05() throws UnsupportedEncodingException{
        String str = "尚矽谷";
        byte[] bytes = str.getBytes("ISO8859-1");
        System.out.println(Arrays.toString(bytes));//[63, 63, 63]
        
        String string = new String(bytes,"ISO8859-1");
        System.out.println(string);
    }
    
    
    @Test
    public void test04() throws UnsupportedEncodingException{
        String str = "尚矽谷";
        byte[] bytes = str.getBytes("GBK");
        System.out.println(Arrays.toString(bytes));//[-55, -48, -71, -24, -71, -56]
        
        String string = new String(bytes,"GBK");
        System.out.println(string);
    }
    
    @Test
    public void test03() throws UnsupportedEncodingException{
        String str = "尚矽谷";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));//[-27, -80, -102, -25, -95, -123, -24, -80, -73]
    
        String string = new String(bytes,"UTF-8");
        System.out.println(string);
    }
    
    @Test
    public void test02(){
        String str = "abc";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));//[97, 98, 99]
    }
    
    @Test
    public void test01(){
        String str = "a";
        byte[] bytes = str.getBytes();
        System.out.println(Arrays.toString(bytes));//[97]
    }
}