java String总结(操作、StringBuffer、StringBuilder)

15 篇文章 0 订阅

1、String 类对象不可变,一旦修改 String的值就是隐形的重建了一个新的对象,释放了原 String对象

2、StringBuffer和StringBuilder类是可以通过append()、insert()、reverse()....等方法来修改值。创建的对象是可变

3、3、StringBuffer:线程安全的;                    StringBuilder:线程非安全的

4、字符串连接 String 的 +  比 StringBuffer(StringBuilder) 的 Append() 性能差了很多

5、5、三者在执行速度方面的比较:*StringBuilder > StringBuffer > String

我就不一一写了,复制代码看下(操作:插入、替换、删除、反转、保留前面部分)

package com.gx.commonclass.string;

/**
 * String StringBuffer StringBuilder
 */
public class StringClassDemo {
	public static void main(String[] args) {
		demo2();
	}
	
	public static void demo2() {

		// StringBuffer和StringBuilder
		StringBuilder sb = new StringBuilder();
		// 追加字符串
		sb.append("java");// sb = "java"
		sb.append(":");
		sb.append("Hello,");
		sb.append("World!");
		// 插入
		sb.insert(0, "hello "); // sb="hello java...."
		// 替换
		sb.replace(5, 6, ","); // sb="hello,java"
		// 删除
		sb.delete(5, 6); // sb="hellojava"
		System.out.println(sb);
		// 反转
		sb.reverse(); // sb="avajolleh"
		System.out.println(sb);
//		sb.append("11111111111111111111111111111111111111111111111111111");
		System.out.println("sb的长度:"+sb.length()); // 输出9
		// capacity() 输出 StringBuffer\StringBuilder的容量
		System.out.println("容量:"+sb.capacity()); // 输出16
//		// 改变StringBuilder的长度,将只保留前面部分
//		sb.setLength(5); // sb="avajo"

		
		// String ---> StringBuilder
		String str = "111111";
		StringBuilder sb1 = new StringBuilder(str);
		sb1.append(str);
		String newStr1 = sb1.toString();
		
		//String ---> StringBuffer
		StringBuffer stringBuffer = new StringBuffer(str);
		newStr1 = stringBuffer.toString();
		
		System.err.println(newStr1);
	}
	
	public static void demo1(){
		String str="asd";
		System.out.println(System.identityHashCode(str));
		str="123";
		System.out.println(System.identityHashCode(str));
	}

	// StringBuffer和StringBuilder类             可以无视最终值       final
	public static void demo3() {
		StringBuffer strBF1=new StringBuffer("刘三");
		final StringBuffer  strBF2=strBF1;
		System.out.println( "第一个strBF2:"+strBF2);
		strBF1.append("姐");
		System.out.println( "第二个strBF2:"+strBF2);
		System.out.println("strBF1值:"+strBF1 + "and" + "strBF2值:" +strBF2);
	}
	
	public static void demo4() {
		String strBF1="刘三";
		final String  strBF2=strBF1;
		System.out.println( "第一个strBF2:"+strBF2);
		strBF1="刘三姐";
		System.out.println( "第二个strBF2:"+strBF2);
		System.out.println("strBF1值:"+strBF1 + "and" + "strBF2值:" +strBF2);
	}
}

String

   public String():空构造
   public String(String original):把字符串常量值转成字符串
   public String(byte[] bytes):把字节数组转成字符串
   public String(byte[] bytes,int index,int length):把字节数组的一部分转成字符串
   public String(char[] value):把字符数组转成字符串
   public String(char[] value,int index,int count):把字符数组的一部分转成字符串

package com.gx.commonclass.string;

/**
 * @author en
 *
 */
public class StringDemo1 {
	public static void main(String[] args) {
		demo2();
	}
	public static void demo3(){
		char[] cs=new char[]{'a','b','c','1','2','3'};
		String str=new String(cs);
		System.out.println(str);
		
//		String qzzh=String.valueOf(cs);
//		System.err.println(qzzh);
//		System.err.println(str);
		
		String str2=new String(cs,3,2);//从cs char字符数组 获取(cs,索引,N位数)
		System.out.println(str2);
	}
	
	//涉及 ASCII码表 转换
	public static void demo2(){//byte字节数组
		byte[] bytes=new byte[]{97,98,99,100,101,102,103,'a'};
		byte bytes34='a';
		String str=new String(bytes);//将计算机能看懂的转换成人能看懂的
		String str34=String.valueOf(bytes34);//转换byte为字节输出 (输出计算机能识别的) 
        //byte sadf=97;sadf=new String(sadf);//用不了
		
		System.err.println(str);
		System.err.println(str34);
		
		
		//从bytes char字符数组 获取(bytes,索引,N位数)
		String str2=new String(bytes, 1, 2);
		System.out.println(str2);
		
	}
	
	
	public static void demo1(){
		String str1=new String();//空的字符串 ""
		System.out.println(str1);
		System.out.println("".equals(str1));
		
		//字符串常量区域
		String str2=new String("12357");//把字符串常量值转成字符串
		System.out.println(str2);
	}
}

String类的判断功能

   boolean equals(Object obj):比较字符串的内容是否相同,区分大小写
   
   boolean equalsIgnoreCase(String str):比较字符串的内容是否相同,忽略大小写
   
   boolean contains(String str):判断大字符串中是否包含小字符串
   
    boolean startsWith(String str):判断字符串是否以某个指定的字符串开头
   
   boolean endsWith(String str):判断字符串是否以某个指定的字符串结尾
   
   boolean isEmpty():判断字符串是否为空。

package com.gx.commonclass.string;

/**
 * String类的判断功能
 * 
 * @author en
 * 
 */
public class StringDemo2 {
	public static void main(String[] args) {
		demo3();
		String xxa="324561239";
		String xxaa="123";
		if(xxa.contains(xxaa)){
			System.out.println("包含123");
			
		}
		
		
	}

	public boolean stringNotNull(String str) {
		if (str != null && !str.isEmpty()) {
			return true;
		}
		return false;
	}

	//判断字符串是否为空。
	public static void demo4() {
		String str = "";
		String str2 = null;
		System.out.println(str.isEmpty());
		// System.out.println(str2.isEmpty()); //java.lang.NullPointerException

	}

	//判断字符串是否以某个指定的字符串开头或结尾      或对应索引值是否为某个指定的字符串
	public static void demo3() {
		String str = "15sadd61561f5a6s1d6df1sd;";
		System.err.println(str.startsWith("5"));//str是否以5开头
		// <==>System.out.println(str.startsWith("5",0));
		System.out.println(str.startsWith("5", 1));
		System.out.println(str.endsWith(";"));
	}

	//判断大字符串中是否包含小字符串
	public static void demo2() {
		String str = "sadgh5j65156155";
		System.out.println(str.contains("15"));
	}

	//判断两字符串是否相等  equals(区分大小写)   equalsIgnoreCase(不区分大小写)
	public static void demo1() {
		String str1 = "abcd";
		String str2 = "Abcd";

		System.out.println(str1.equals(str2));
		System.out.println(str1.equalsIgnoreCase(str2));
	}
}

String类的获取功能

   int length():获取字符串的长度。
   
    char charAt(int index):获取指定索引位置的字符
   
    int indexOf(int ch):返回指定字符在此字符串中第一次出现处的索引。
   
   int indexOf(String str):返回指定字符串在此字符串中第一次出现处的索引。
   
   int indexOf(int ch,int fromIndex):返回指定字符在此字符串中从指定位置后第一次出现处的索引。
   
   int indexOf(String str,int fromIndex):返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
   
   lastIndexOf 用法同 indexOf
   
   String substring(int start):从指定位置开始截取字符串,默认到末尾。
   
   String substring(int start,int end):从指定位置开始到指定位置结束截取字符串。

package com.gx.commonclass.string;
/**
 * String类的获取功能
 * @author en
 */
public class StringDemo3 {
	public static void main(String[] args) {
		demo2();
	}
	public static void demo2(){
		String str="sadfghjkl65jhgfj jds256";
		String str1=str.substring(5);//从指定位置开始截取字符串,默认到末尾。
		System.out.println(str1);
		str1=str.substring(5, 10);//[startindex,endindex) //从指定位置开始到指定位置结束截取字符串。
		System.out.println(str1);
	}
	
	//
	public static void demo1(){
		//获取字符串的长度。
		String str="sadfghjkl65jhgfj jds256";
		System.out.println("length:"+str.length());
		
		//获取指定索引位置的字符
		System.out.println(str.charAt(5));
		
		//-1 代表没找到
		//indexOf 从左向右
		System.out.println(str.indexOf('j'));//返回指定字符在此字符串中第一次出现处的索引。
		System.out.println(str.indexOf('j',7));//返回指定字符(char特殊的字符)在此字符串中从指定位置后第一次出现处的索引。
		//<==>System.out.println(str.indexOf(7,7));//char隐式转换  为int整型 无精度损失
		System.out.println(str.indexOf("jk"));//返回指定字符串在此字符串中第一次出现处的索引。
		System.out.println(str.indexOf("jk",7));//返回指定字符串在此字符串中从指定位置后第一次出现处的索引。
		//indexOf 从右向左
		System.out.println(str.lastIndexOf('j'));
		System.out.println(str.lastIndexOf('j',7));
		System.out.println(str.lastIndexOf("jk"));
		System.out.println(str.lastIndexOf("jk",7));
	}
	
}

String的转换功能

   byte[] getBytes():把字符串转换为字节数组。
   
   char[] toCharArray():把字符串转换为字符数组。
   
   static String valueOf(char[] chs):把字符数组转成字符串。
   
   static String valueOf(int i):把int类型的数据转成字符串。
   
   注意:String类的valueOf方法可以把任意类型的数据转成字符串。
   
    String toLowerCase():把字符串转成小写。
   
   String toUpperCase():把字符串转成大写。
   
   String concat(String str):把字符串拼接。

package com.gx.commonclass.string;

import java.io.UnsupportedEncodingException;

/**
 * A:String的转换功能:
 * @author en
 */
public class StringDemo4 {

	public static void main(String[] args) {
		demo1();
	}

	public static void demo4() {
		String s1 = "abcDEFgh";
		System.out.println(s1.toLowerCase()); // 将所有的字符转换成小写
		System.out.println(s1.toUpperCase()); // 将所有的字符转换成大写
		System.out.println(s1);

		String s2 = "abc";
		String s3 = "def";
		String s4 = s2.concat(s3); // 将两个字符串连接   还不如直接写加号拼接
		System.out.println(s4);
	}

	public static void demo3() {
		char[] arr = { '1', '2', '3' };
		String s1 = String.valueOf(arr); // 将字符数组转换成对应的字符串
		System.out.println(s1);

		String s2 = String.valueOf(10);
		System.out.println(s2);

		System.out.println(10 + ""); // 也可以将10转换成对应的字符串
	}

	public static void demo2() {
		String s = "字符串测试";
		char[] arr = s.toCharArray(); // 把字符串转换为字符数组。
		for (int i = 0; i < arr.length; i++) {
			System.out.print(arr[i] + " ");
			
		}
	}

	public static void demo1() {
		String str = "你好,世界!";
		byte[] bs;
		try {
			
			bs = str.getBytes("gbk");//把字符串转换为(gbk)字节数组。
			System.out.println("gbk 编码");
			for (byte b : bs) {
				System.out.print(b + ",");
			}
			
			System.out.println("\nutf-8  编码");
			bs = str.getBytes();//把字符串转换为(utf-8)字节数组。默认为utf-8格式
			for (byte b : bs) {
				System.out.print(b + ",");
			}
			System.out.println();
			
			String newStr = new String(bs);//再把(utf-8)字节数组转为字符串转。默认utf-8格式
			System.out.println(newStr);
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}

	}

}

String的替换功能  

   A:String的替换功能  
   String replace(char old,char new)
   String replace(String old,String new)
   
   B:String的去除字符串两空格                                                                               
   String trim() 
   
    C:String的按字典顺序比较两个字符串
    int compareTo(String str) 
   int compareToIgnoreCase(String str)
   
   D:String的按照字符分割字符串
   String[] split(String regex)
   String[] split(String regex,int limit)

package com.gx.commonclass.string;

/**
 * @author en
 */
public class StringDemo5 {
	public static void main(String[] args) {
		demo3();
	}

	public static void demo4() {
		String s1 = "asdgjkl;sadfg;fasdfg;rtscvb;rewe;d;;fg;hrew;5623;";
		String[] strings = s1.split(";");//String的按照字符分割字符串
		for (String string : strings) {
			System.out.print("\"" + string + "\",");
		}
		System.out.println();
		/*
		 * 如果 n > 0,模式将被最多应用 n - 1 次,数组的长度将不会大于 n,而且数组的最后一项将包含所有超出最后匹配的定界符的输入 
		 * 如果 n < 0,模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将保留。 
		 * 如果 n = 0,模式将被应用尽可能多的次数,数组可以是任何长度,并且结尾空字符串将被丢弃。
		 */
		String[] strings2 = s1.split(";",0);
		for (String string : strings2) {
			System.out.print("\"" + string + "\",");
		}
	}

	//特殊的字符串比值
	public static void demo3() {
		String s1 = "aA";
		String s2 = "aaa"; 
		int x = s1.compareTo(s2); // 按照码表值比较两个字符串的大小
		x = s1.compareToIgnoreCase(s2); // 按照码表值比较两个字符串的大小
		System.out.println(x);
	}

	//去空格
	public static void demo2() {
		String s = "    abcdefg    ";
		String s2 = s.trim(); // 去除前后空格
		System.out.println(s2);
	}

	//替换字符串
	public static void demo1() {
		String s = "abcdefg";
		String s2 = s.replace('z', 'o'); // 替换,将已有字符替换,如果没有被替换的字符,打印原字符串
		System.out.println(s2);

		String s3 = s.replace("fg", "ooo");
		System.out.println(s3);
	}
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值