java String 详解

package api;

import java.util.Arrays;
import java.util.List;

public class StringApi {

	public static void main(String[] args) {
		
		// String 构造方法
		String s1 = new String();                 // 创建空字符串
		//System.out.println(s1);                 // ""
		
		String s2 = new String("abcd");           // 创建字符串 值=abcd
		//System.out.println(s2);                 // abcd
		
		char[] charArr = {'a', 'b', 'c', 'd'};
		String s3 = new String(charArr);          // 通过字符数组创建字符串
		//System.out.println(s3);                 // abcd
		
		// 通过截取的字符串数组创建字符串  1表示数组下标 2 表示截取的位数
		String s4 = new String(charArr, 1, 2);  
		//System.out.println(s4);                 // bc
		
		StringBuffer buffer = new StringBuffer("abcd");
		String s5 = new String(buffer);           // 通过StingBuffer创建String
		//System.out.println(s5);                 // abcd
		
		StringBuilder builder = new StringBuilder("abcd");
		String s6 = new String(builder);          // 通过StringBuilder创建String
		//System.out.println(s6);                 // abcd
		
		int[] intArr = {1,2,3,98, 97, 100};       //转为(ASCLL码)
		String s7 = new String(intArr, 1, 5);     //同 String(charArr, 1, 2);
		//System.out.println(s7);                 // bad
		
		byte[] byteArr = {97, 98, 99, 100}; 
		String s8 = new String(byteArr);          // 通过字节数组创建字符串(ASCLL码)
		//System.out.println(s8);                 // abcd
		
		// String 公有方法
		String string = "abcdefg";
		
		int length = string.length();       // 字符串长度
		//System.out.println(length);         // 7
		
		boolean isEmpty = string.isEmpty();  // 判断字符串是否为空字符串
		//System.out.println(isEmpty);         // false  
		
		char ch = string.charAt(2);          // 返回string中index = 2的字符
		//System.out.println(ch);              // c
		
        char[] chArr = {' ',' ',' ',' '};    // 把截取的字符串复制到目标字符数组中
        string.getChars(0, 4, chArr, 0);     // p1: srcBegingIndex p2: srcEndIndex(不包括) p4: dstBeginIndex
        //System.out.println(String.valueOf(chArr)); // {'a', 'b', 'c', 'd'} → abcd
		
        byte[] bs = string.getBytes();       // 返回byte数组 转为(ASCLL码)
        //System.out.println(bs[0]);           // {97, 98, 99, 100, 101, 102, 103}
        
        boolean isEquals = string.equals("213"); // 判断两个字符串是否相等
        //System.out.println(isEquals);             // false
        
        StringBuffer buffer2 = new StringBuffer("abcdefg");      
        boolean isContentEquals = string.contentEquals(buffer2); // 判断字符串值是否相等
        //System.out.println(isContentEquals);                     // true;
        
        StringBuilder builder2 = new StringBuilder("abcdefg");      
        boolean isContentEquals2 = string.contentEquals(builder2); // 判断字符串值是否相等
        //System.out.println(isContentEquals2);                     // true;
        boolean isEqualsIgnoreCase = string.equalsIgnoreCase("ABCDEFG"); // 判断相等不区分大小写
        //System.out.println(isEqualsIgnoreCase);
        
        int compareTo = string.compareTo("abcD"); // 返回ASCII码值相减    如果有一个字符串为""则返回另一字符串长度
        //System.out.println(compareTo);            // 99('d') - (67)('D') = 32
        int compareToIgnoreCase = string.compareToIgnoreCase("AbCDeFG"); // 不区分大小写比较
        //System.out.println(compareToIgnoreCase);          // 0
        
        // 判断两个字符串是否匹配  p1: srcIndex p3: dstIndex  p4 length
        boolean isRegionMatch = string.regionMatches(0, "232abc25435", 3, 2); 
        //System.out.println(isRegionMatch);
        // 判断两个字符串是否匹配  p1:ignoreCase(true, false) p2: srcIndex p4: dstIndex  p5 length
        boolean isRegionMatchIgnoreCase = string.regionMatches(true, 0, "232ABC25435", 3, 2); 
        //System.out.println(isRegionMatchIgnoreCase); 
        
        boolean isStartWith = string.startsWith("abc");  // 字符串以abc开头  匹配从 index = 0 开始
        //System.out.println(isStartWith);                 // true
        isStartWith = string.startsWith("cd", 2);        // 字符串以abc开头  匹配从 index = 2 开始
        //System.out.println(isStartWith);                 // true
        
        boolean isEndWith = string.endsWith("efg");   // 字符串以efg结尾
        //System.out.println(isEndWith);                // true
        
        String str = "abcefbacefbasdefdsaf";
        int pos = str.indexOf('b');  // 第一次出现'b'的index
        //System.out.println(pos);     // 1
        pos = str.indexOf("ef");     // 第一次出现"ef"的index
        //System.out.println(pos);     // 3
        pos = str.indexOf('b', 3);   // 从index = 3开始 第一次出现'b'的index
        //System.out.println(pos);     // 5
        pos = str.indexOf("ef", 5);  // 从index = 5开始 第一次出现"ef"的index
        //System.out.println(pos);     // 8
        pos = str.lastIndexOf('b');  // 最后一次出现'b'的index
        //System.out.println(pos);     // 10
        pos = str.lastIndexOf("ef"); // 最后一次出现"ef"的index
        //System.out.println(pos);     // 14
        pos = str.lastIndexOf('b', 4); // 最后一次出现'b'的index 搜索范围0-4(包含4)
        //System.out.println(pos);       // 1
        pos = str.lastIndexOf("ef", 5); // 最后一次出现"ef"的index 搜索范围0-5(包含5)
        //System.out.println(pos);        // 3
        
        str = string.substring(2);    // 截取字符串 index = 2 开始
        //System.out.println(str);      // cdefg
        
        str = string.substring(2, 4); // 截取字符串 index = 2 开始 index = 4 结束
        //System.out.println(str);      // cd
        
        CharSequence cSequence = string.subSequence(2, 4);
        //System.out.println(cSequence);// 同subString(2, 4)
        
        str = string.concat("123");   // 字符串连接 +
        //System.out.println(str);      // abcdefg123
        
        str = string.replace('c', 'C'); // 字符替换
        //System.out.println(str);      // abCdefg
        
        str = string.replace("bc", "BC"); // 字符串替换
        //System.out.println(str);      // aBCdefg
        
        boolean isMatches = string.matches("_bcdefe");   // 字符串匹配 符合正则表达式
        //System.out.println(isMatches);  // false
        
        boolean isContains = string.contains("bc");  // 包含字符串 bc
        //System.out.println(isContains);              // true
        
        str = string.replaceFirst("bc", "gg"); // 替换出现的第一个字符串 符合正则表达式
        //System.out.println(str);               // aggdefg
        
        str = string.replaceAll("b", "d");  // 替换全部字符串 符合正则表达式
        //System.out.println(str);            // adcdefg
        
        String[] strings = "sjfdl-sdfaj-asdf-asdf".split("-"); // 分割字符串 "-" 分割符 符合正则表达式
        //System.out.println(Arrays.asList(strings));  // [sjfdl, sdfaj, asdf, asdf]
        
        strings = "sadf-sadf-asdf-sadf-sadf".split("-", 2); // 分割字符串 分割次数
        //System.out.println(Arrays.asList(strings));  // [sadf, sadf-asdf-sadf-sadf]
        
        str = string.toLowerCase();  // 转为小写
        //System.out.println(str);     // abcdefg
        str = string.toUpperCase();  // 转为大写
        //System.out.println(str);     // ABCDEFG
        
        str = " sf sas ".trim();     // 取消前后空格
        //System.out.println(str);     // sf sas
        
        char[] cs = string.toCharArray();  // 转为字符数组
//        for(char c: cs)
//          System.out.print(c + " ");       // a b c d e f g 
//        System.out.println();
        
        
        // 静态方法
        str = String.join(",", strings); 
        str = String.join("-", "dsadf", "sdf", "Sadf"); // 使用间隔符把字符串连接起来
        //System.out.println(str);                        // dsadf-sdf-Sadf
        
        
        List<String> list = Arrays.asList("sdaf", "sadf", "sdf");  // 
        str = String.join("?", list); // list转为string
        //System.out.println(str);      // sdaf?sadf?sdf
        
        str = String.format("sfd%s%d", "qqq", 3);// 字符串格式化  
        //System.out.println(str);                 // sfdqqq3
        
        str = String.valueOf(3);    // p1 type [Object, char[], char, int, long, float, double] // 转为字符串
        str = String.valueOf(cs, 2, 3);  // char[]转为string
        //System.out.println(str);    // cde
        
        str = String.copyValueOf(cs); // char[]转为string
        //System.out.println(str);    // abcdefg
        str = String.copyValueOf(cs, 2, 3); // char[]转为string
        //System.out.println(str);    // cde
	}

	

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值