【Java基础】字符串String

String,字符串,一个引用类。存储结构是char数组
首先介绍一下他的常用方法:
1、从构造方法开始,他有四个构造方法,参数分别是:

String, cahr value[], StringBuffer, StringBuilder

2、equals方法
String重写了该方法,这个方法会传递一个Object类型的参数,首先进行判断引用是否一样,一样直接返回true,因为都是在字符串常量池中存储;然后判断传入的参数是不是一个字符串,然后循环判断每一个字符是否相同。用到了一个instanceof,简单写一下他的用法:

Object oString = "123";
Object oInt = 123;
	
System.out.println(oString instanceof Integer);
System.out.println(oInt instanceof Integer);
/*
output:
false
true
*/

3、除了equals方法,还有一个字符串比较的方法,compareTo方法,该方法循环比较所有的字符,发现第一个不一样的字符就返回’c1’ - ‘c2’;接收的参数是String类型,返回值是int

4、其他常见方法:

		String str = " idndex ";
		System.out.println(str.indexOf('i'));
		//首次出现的下标位置
		
		String strn = str.trim();
		//去掉字符串首尾空格
		String strReplace = str.replace('i', 'n');
		//替换,把参数1 替换成 参数2
		System.out.println(strReplace);
		System.out.println(strn.lastIndexOf('e'));
		//最后一次出现的下标位置
		
		String[] a = {"test", "index", "hazel"};
		String arrStr = String.join("-", a);
		把字符串数组转成字符串
		System.out.println(arrStr);
/*
output:
1
 ndndex 
4
test-index-hazel
*/
toLowerCase()  //变成小写
toUpperCase()  //变成大写
split()	//按某字符进行分割

常见问题:
1、final修饰的好处
安全、高效
字符串是在常量池中进行存储的。也就是可能会有两个对象同时引用一块内存空间,如果可以改变,那么就没办法做到字符串常量池这种设计了

2、String StringBuffer StringBuilder的区别
String类不可变,那么要想往后追加内容性能就会变低,StringBuffer类提供了append和insert方法进行拼接,他们都用synchronized修饰,保证了线程安全,性能就不是很高了,StringBuilder也提供了append和insert方法,但是不保证线程安全;

3、两种新建方式的不同

String str1 = "java";
String str2 = new String("java");

System.out.println(str1 == str2);
str2 = "java".intern();
System.out.println(str1 == str2);

//output:
false
true

解释一下,str1是直接去字符串常量池中找这个字符串有就返回引用,没有就创建一个,然后返回引用;
str2是在堆上创建了一个对象,调用了intern对象才会把字符串保存到常量池中去
intern方法就是,如果常量池中含有了等于这个String的字符串,就会返回引用,否则在常量池中创建这个字符串,然后返回引用,这也就是上面代码执行结果的原因了

4、编译器做的优化

String s1 = "ja" + "va";
String s2 = "java";
System.out.println(s1 == s2);

//output: true

编译器会把第一个直接编译成"java",不会做+操作

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值