String的常用方法及常见问题

String类型可以说是Java编程中最常用的数据类型之一,它有很多独特的方法和属性,总结如下:

1、常用方法:

1)用于判断:
boolean equals(Object obj) 用于判断两个字符串内容是否相同
boolean eaqualsIgnoreCase(String str) 忽略大小写,判断内容是否相同
boolean starsWith(String str) 判断字符串对象是否以指定的str开头
boolean endsWith(String str) 判断字符串对象是否以指定的str结尾

2)获取功能方法
int length() 获取字符串的长度
char charAt(int index) 获取指定索引处的字符
int indexOf(String str) 获取str在字符串对象中第一次出现的索引,没有返回-1
String substring(int start) 从start开始截取字符串到字符串结尾
String substring(int start,int end) 从start开始,到end结束截取字符串;包括start,不包括end

3)转换功能方法
char[] toCharArray() 把字符串转换为字符数组
String toLowerCase() 把字符串转换为小写字符串
String toUpperCase() 把字符串转换为大写字符串

4)分割功能方法
String trim() 去除字符串两端空格
String[] split(String str) 按照指定符号分割字符串

2、常见问题

1)能用”==”判断字符串是否相等吗?
“==”和equals方法比较相等的区别:”==”是用来判断两个对象引用是否相等,如果
想比较内容是否相同,应该使用equals方法。

2)两种创建字符串方式的区别?
创建字符串一般有两种方式,一种为 String s1 = new String(“hello”);,即创建字符串对象;另一种为 String s2 = “hello”; 即直接指向字符串内容。
Java中存在一个常量池,运行时产生的各种字符串都会存储在常量池中,而且池中的字符串不会重复。不管用上面的哪中方式创建字符串,都会存储在常量池中。
使用直接指定的方式创建字符串时,会检查维护在常量池中的字符串,池中没有就在池中创建一个,有就不创建,而是将变量地址直接指向已存在的字符串;
使用new方式创建字符串时,则不仅会检查常量池,而且还会在堆栈区创建一个String对象,这个对象再指向常量池中的相应字符串。

举例:
Sting s1 = “hello”;
Sting s2 = “hello”;
String s3 = new String(“hello”);
String s4 = new String(“hello”);

s1==s2 为true;因为指向常量池中的同一个字符串,地址相同,而”==”比较的是地址
s1==s3 为false;因为s3指向堆中对象的地址,所以并不相同
s3==s4 为false ; s3和s4指向队中的两个不同对象,所以不相同

3)为什么针对安全保密高的信息,char[]比String更好?

因为String是不可变的,就是说它一旦创建,就不能更改了,直到垃圾回收器将它收走。而字符数组中的元素是可以更改的,这就意味着你可以在使用完之后将其更改,而不会保留原始数据。所以使用字符数组的话,安全保密性高的信息将不会存在于系统中被他人看到。

4)怎么把字符串转换成基本类型?
可以使用包装类的parseXXX方法,但字符串必须符合相应格式。

猜你喜欢

转载自blog.csdn.net/dl18215164175/article/details/72566250