目录
在String字符串知识点的学习之中,自己总结了一些笔记,在总结笔记的过程中,自己也发现了一些对知识点理解不足的地方,这本身也是不断学习进步的过程。
- String是一个类,属于引用类型。
- Java程序中一切使用 "" (英文输入下的双引号)引起来的内容,称为字符串对象。同时也可以称为这个类的实例。
- 字符串定义后是一个常量,值是不可以更改的。
- 字符串实际是一个字符数组。
例如:String str = "abc"; //A行
stri = "D"; //B行
上述代码A行执行的一个过程为:首先创建一个abc字符串对象,并将其地址保存在str变量之中。 在B行代码执行的过程中,看似是改变了字符串str的值,实际上是又创建了一个字符串对象D,并将其地址保存在str变量之中。
从以上两句话可以看出,在内存中会有两个字符串对象abc和D,但是str只会引用最后赋值的字符串地址D。
String类使用时注意的事项
在这里我假设进行一个一万次的循环,在这一万次的循环当中,就会创建一万个字符串对象,但最终只有最后一个字符串对象被str引用,其余字符串对象都会被视为“垃圾”被回收掉。
所以如果需要频繁更改String类型变量的值,可以尽量避免使用String对象操作字符串,这样会效率低又浪费内存空间。
如何创建一个字符串对象
-
使用 " "(英文输入下) 赋值创建
例如:String str = "hello你好!";
-
通过构造方法创建
常见构造方法 说明 String() 创建一个空白字符串对象,实际创建一个空字符数组 String(String str) 创建一个指定字符串对象,实际是创建一个形参字符串 String(char[] list) 创建一个指定字符串数组的字符串对象 String(byte[] list) 创建一个指定字节数组的字符串对象(按照默认编码格式) String(byte[] list,String charsetName) 创建一个指定字节数组的字符串对象(按照指定的编码格式)
public class stringTest{
public static void main(String[] args){
String str1 = "ab"; //在创建变量str1之前,会先判断字符串"ab"在字符串常量池中是否存在。若不存在则创建,将其地址保存在str1变量中。
String str2 = "ab";//在创建变量str2之前,同样会先判断字符串"ab"在字符串常量池中是否存在。由于已经存在,所以可以直接使用已有的ab,并保存在str2中。
String str3 = "a"+"b";//"a","b" 加号+两端的字符串,在拼接的过程在编译的时候就已经完成。所以一样会去判断字符串常量池中是否存在"ab",已存在,将其地址保存在str3中。System.out.println(str1 == str2);//true
System.out.println(str1 == str3);//true
System.out.println(str2 == str2);//true
}
}
需要注意的地方:
如果需要比较两个字符串各自的值是否相同的时候,不能使用==判断,因为==判断的是内存地址。所以比较字符串是否相同的时候,需要使用String重写的equals方法进行判断。
String字符串的常用方法
方法名 | 返回值 | 作用 |
length() | int | 获取字符串的长度 |
trim | String | 取出字符串首尾的所有空格 |
toLowerCase | String | 转换字符串为小写 |
toUpperCase | String | 转换字符串为大写 |
isEmpty | boolean | 判断是否为一个空字符串 |
getBytes | byte[ ] | 按默认编码格式将字符串转换为字节数组 |
toCharArray() | char[] | 将字符串转换为字符数组 |
equalslgnoreCase | boolean | 忽略大小写比较指定字符串是否相同 |
equals(String str) | boolean | 判断字符串是否相同 |
charAt(int index) | char | 获取index位置上的字符串 |
indexOf(String str) | int | 获取str第一次出现的位置,如果不存在返回 -1 |
lastIndexOf (String str) | int | 获取str最后一次出现的位置,如果没有返回 -1 |
contains(要判断的字符或者字符串) | boolean | 判断指定的字符或字符串是否存在于原字符串中 |
concat(String str) | String | 将str拼接到原字符末尾 |
startsWith(String str) | boolean | 判断是否以str字符串开头 |
endsWith(String str) | boolean | 判断是否以str字符串结尾 |
substring(int index) | String | 截取原字符串在[index, 字符长度)区间内的字符 |
substring(int from,int to) | String | 截取原字符串在[from,to)区间的字符 |
split(String reg) | String | 根据匹配给定的正则表达式来拆分字符串。 |
String.valueOf(参数) | String | 将一个参数转换为字符串,参数可以是原始类型,也可以是任何对象。 |
replace(char oldchar,char new char) | String | 使用newchar替换oldchar(newchar会替换所有oldchar) |
以上就是Java中String字符串的常用知识点, 如有不足的地方,希望能多多指教。