字符串转换 字符串方法

字符串 String

字符串缓冲区(池):StringBuffer StringBuilder

 String StringBuffer StringBuilder的区别?

 String 是内容不可变的字符串

 StringBuffer和StringBuilder 是内容可变的字符串

面试题:String StringBuffer和 StringBuilder的区别

StringBuffer类是线程安全的

StringBuilder类线程是不安全的

StringBuffer在JDK1.0中就有,而StringBuilder在JDK5.0以后才出现

StringBuilder的一些方法实现要比StringBuilder快点

string

String创建对象的区别

 静态创建对象:String s = "abc"; 使用静态方式创建的字符串,在方法取得常量池中只会产生唯一一个字符串对象,使用该方式产生同样一个字符串时,内存中不再开辟另一块空间,而是两个引用变量指向同一个字符串对象

 动态创建对象:String s2 = new String("abc");使用动态方式创建的字符串,在堆内存中会产生不同的对象

		//String的创建 使用静态方式创建对象
		String s = "abc";
		String s1 = "abc";
		System.out.println(s==s1);//true 比较的是地址
		System.out.println(s.equals(s1));//true  此时equals被重写 
        //String的创建 使用动态方式创建对象
		String s2 = new String("abc");
		String s3 = new String("abc");
		System.out.println(s2==s3);//false 比较的是地址
		System.out.println(s2.equals(s3));//true 此时equals被重写 
		System.out.println(s2);//abc

1.使用一个字符数组组建一个String对象

		char[] arr = {'a','b','c','d'};
		String sarr = new String(arr);
		System.out.println(sarr);//abcd

2.通过字符数组中指定位置,指定个数的元素 去创建String对象

        char[] arr = {'a','b','c','d'};
        String s4 = new String (arr,1,2);
        //第一个参数表示目标数组 第二个参数表示起始下标(从0开始) 第三个表示个数
		System.out.println(s4);//bc

3.将StringBuffer对象转换为String对象

		StringBuffer sb = new StringBuffer("abc");
		String s5 = new String(sb);
		System.out.println(s5);//abc

4.将字节数组按照指定的编码形式转换为字符串

        Byte[] barr = {1,2,3,4};
		try {
			String s6 = new String(barr,"utf-16");
            //将barr 按照utf-16的编码方式转换为字符串
			System.out.println(s6);//乱码
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}

5.getBytes("utf-8");字符串按照指定的解码形式转换为字节数组 

		byte[] bname = new byte[10];
		String name1 = "张三";
		bname = name1.getBytes("utf-8");//乱码
		//遍历数组
		for (int i = 0; i < bname.length; i++) {
		System.out.print(bname[i]);//-27-68-96-28-72-119a
		}

6.字符串不能直接转换为字符,但是可以用toCharArray();转换为字符数组

		String s = "abcd";
		char[] arr = s.toCharArray();
		for(char c : arr) {
			System.out.println(c);//a b c d
		}

String方法 

1.s1.equalsIgnoreCase(s2) 比较两个字符串的内容是否相同,忽略大小写

        String s = "abc";
		String s2 = "ABC";
		//比较两个字符串的内容是否相同,忽略大小写
		System.out.println(s.equalsIgnoreCase(s2));//true

2.s.toUpperCase() 将String对象中的所有字符转换为大写

        String s = "abc";       
        System.out.println(s.toUpperCase());//ABC

3.s.toLowerCase() 将String对象中的所有字符转换为小写

		String s2 = "ABC";
        System.out.println(s2.toLowerCase());//abc

4.s.charAt(下标) 返回指定索引处的char值

      	String s = "abc";
		System.out.println(s.charAt(1));//b

5.s.substring(下标) 返回一个新字符串,该字符串是从下标数(begin)开始截取之后的所有字符 包含该下标数的元素

		String s3 = "abcdefg";
		String s4 = s3.substring(2);
		System.out.println(s4);//cdefg

6.s.substring(开始下标, 结束下标-1)返回一个新字符串,该字符串开始是从下标数(begin)到下标数-1(end-1)结束的内容

		String s3 = "abcdefg";
		String s5 = s3.substring(2, 5);
		System.out.println(s5);//cde

7.s.indexOf(字符或者字符串)     返回指定字符或字符串在此字符串中第一次出现的位置(下标)

		String s3 = "abcdefg";
		int i = s3.indexOf('c');
		System.out.println(i);//2  下标

8.s.indexOf(字符或者字符串,下标位置)    指定位置开始搜索 返回指定字符或者字符串在此字符串中第一次出现的位置(下标) 如果查不到指向字符或者字符串 会显示-1

		String s3 = "abcdefg";
		int indexof2 = s3.indexOf('c',1);
		System.out.println(indexof2);//2 c所在的位置下标为2 
        //如果查不到指向字符或者字符串 会显示-1

9.s.trim()    返回新的字符串,忽略前导空白和尾部空白(去除字符串两端空白)

		String s6 = "   abc    ";
		System.out.println(s6.trim());//abc

10.s.length()  返回此字符串的长度

		String s7 = "123456";
		System.out.println(s6.length());//6

11.s1.concat(s2)将指定字符串连接到此字符串的结尾u(拼接) s2接在s1后

        String s1 = "aaa";
		String s2 = "haha";
		String c = s1.concat(s2);
		System.out.println(c);// aaahaha

12.s1.split(",")  根据给定正则表达式的匹配拆分此字符串(切割)

		String s = "a,b,c,d,e,f";
		String [] split = s.split(",");
		for(String str : split) {
			System.out.println(str);//a b c d e f
		}

13.s.replace(将要被替换的元素,想替换成的元素);返回一个新的字符串,它是通过用newchar替换词字符串中出现的所有oldchar得到的(替换)

		String s = "abcdefg";
		String replace = s.replace("d", "@");
		System.out.println(replace);//abc@efg

14.s.startsWith("开头") 测试此字符串是否以指定的的字符或者字符串开头

		String s = "abcdefg";
		//测试此字符串是否以指定的的字符或者字符串开头
		boolean b = s.startsWith("abc");
		System.out.println(b);//true

StringBuffer 

StringBuffer:内容可变的字符串 节省内存开销

stringbuffer用equal比较时,比较的是地址 不是内容 equal方法没有被重写

1.创建stringbuffer对象

        1.1 第一种方式 直接创建 StringBuffer sb = new StringBuffer();

        1.2 第二种 创建时直接赋初始容量 StringBuffer sb2 = new StringBuffer(10);

2.sb2.capacity()获取StringBuffer容量值

		StringBuffer sb2 = new StringBuffer(10);
		System.out.println(sb2.capacity());//10

3.将字符串内容转换为StringBuffer

		StringBuffer sb3 = new StringBuffer("abc");
		System.out.println(sb3);//此时字符串abc被转换为stringbuffer类型

4.返回长度 sb.length()

5.sb.reverse()将此字符序列用其反转形式取代

        StringBuffer sb = new StringBuffer("abc");
        sb.reverse();
		System.out.println(sb);//cba

6.​​​​​​​sb.setCharAt(下标, '想要替换的字符'); 将给定索引处的字符设置为...(替换,修改)

        StringBuffer sb3 = new StringBuffer("abc");		    
        sb3.setCharAt(0, '#');
		System.out.println(sb3);//#bc

7.sb.delete(开始删除下标,下标减一结束);移除此序列的子字符串中的字符(删除)

		StringBuffer sb5 = new StringBuffer("abcdefg");
		sb5.delete(2, 4);//从2开始 到4-1结束 包头不包尾
		System.out.println(sb5);//abefg

8.sb.charAt(下标); 回此序列中指定索引处的char值

		StringBuffer sb5 = new StringBuffer("abcdefg");
        char c = sb5.charAt(0);
		System.out.println(c);

9.sb5.toString();stringbuffer类型转换为string类型 String string = sb5.toString();

10.sb.append("添加内容")指定的字符串追加到此字符序列

        StringBuffer sb5 = new StringBuffer("abcdefg");		
        System.out.println(sb5);
		System.out.println(sb5.append("w"));//abcdefgw

11.sb5.insert(下标, "要插入内容")  将字符串插入此字符序列中 插在此下标前

        StringBuffer sb5 = new StringBuffer("abcdefg");	
		sb5.insert(1, "@@@");
		System.out.println(sb5);//a@@@bcdefg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值