1、实例化String对象

直接赋值 例子String str="hello";
使用new来创建实例 例子String str=new String("hello");

那么实际开发中是使用那种更普遍或者说更合理?

答案是用直接赋值,原因是方便且省内存,使用关键字new实例化对象时内存机制是这样的

java string参数赋给date java string赋值给string_java string参数赋给date


也就是说使用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字符串放了进去并将指针指向此空间。如下图:

java string参数赋给date java string赋值给string_java string参数赋给date_02

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