1、实例化String对象
直接赋值 例子:String str="hello";
使用new
来创建实例 例子:String str=new String("hello");
那么实际开发中是使用那种更普遍或者说更合理?
答案是用直接赋值,原因是方便且省内存,使用关键字new实例化对象时内存机制是这样的
也就是说使用new来实例化对象时,其实是开两个空间,而其中一个是无用的,所以一般使用直接赋值的方式实例化String对象是比较合理的。
2、String内容的比较
使用equals()方法,而不能使用==
例子:
1 String str=”hello”;
2 String str1=new String(“hello”);
3 System.out.println(str.equals(str1));
输出为true
若将第三行改为System.out.println(str==str1);
输出为false
原因还是上面的那张图:str==str1
比较的是地址,而new
创建的字符串对象实际上产生了两个地址,所以==
是比较不了String对象的内容的。
3、字符串的内容不可更改(要理解其含义)
例子:
String str=”hello”;
str=str+”world”;
System.out.println(str);
输出结果为:helloworld
我们可以看到输出了改变的字符串,其实这是内存又开辟了一个空间将helloworld
字符串放了进去并将指针指向此空间。如下图:
4、String字符串常用的方法:
1、length()
返回字符串的长度
2、toCharArray()
字符串转换数组函数
例子: String str=”woshilvbingxu”;
char data[]=str.toCharArray();
3、charAt()
从字符串中取出指定位置的字符,位置从0开始
例子:System.out.println(str.charAt(2));
输出结果为 s
4、indexOf()
过滤字符串中存在的字符
布尔类型,若有字符返回字符位置,若没有返回-1
5、trim()
去掉字符串的前后空格
例子:str.trim();
对应的str字符串会被去头去尾的空格
6、subString()
从字符串中取出子字符串
至少要一个参数,开始的位置。也可以是两个参数,开始的位置和结束的位置
7、toLowerCase() toUpperCase()
大小写转换
8、endsWith() startWith()
判断字符串的开头和结束字符
参数为String类型,判断字符串是否是以某字符串结束或开始
9、replace()
替换String字符串中的一个字符
函数原型:replace(char oldchar,char newchar)
以新字符替换旧字符
10、getBytes()
字符串与byte数组的转换
更多请参考以下网址:
W3cschool的java教程:
https://www.w3cschool.cn/java/java-string.html