目录
1、String简单介绍
定义的变量可以用于存储字符串,同时String类提供了很多操作字符串的功能,我们可以直接使用。
关于String类需要知道:
1、String定义变量存储字符串
2、String内存原理
3、String类提供的常用API
4、String解决实际案例
2、String概述
String其实常被称为不可变字符串类型,他的对象在创建后不能被更改
String是字符串类型,可以定义字符串变量指向字符串对象
String变量每次的修改其实都是产生并指向了新的字符串对象,原来的字符串对象都是没有改变的,所以称不可变字符串
3、创建字符串的几种方式
//创建字符串最简单的方式
String s0 = "hello word";
//public String(char[] c) 根据字符数组的内容,来创建字符串对象
char[] chars = {'a','b','c'};
String s1 = new String(chars);
//public String(byte[] b)根据字节数组的内容,来创建字符串对象
byte b[] = {97,98};// -158 --- 127
String s2 = new String(b);
区别:
以“ ”方式给出的字符串对象,在字符串常量池中存储,而且相同内容只会在其中存储一份
通过构造器new对象,每new一次都会产生一个新对象,放在堆内存中
字符串创建对象的特点:
双引号创建的字符串对象,在字符串常量池中存储同一个。
通过new构造器创建的字符串对象,在堆内存中分开存储
4、常用API
char |
charAt(int index) |
返回指定索引处的 char值。 |
|
将此字符串转换为新的字符数组。 |
|
|
contains |
当且仅当此字符串包含指定的char值序列时,才返回true。 |
boolean |
将此字符串与指定的对象进行比较。 |
|
boolean |
equalsIgnoreCase(String anotherString) |
将此 String与另一个 String比较,忽略了大小写。 |
byte[] |
使用命名的字符集将此 String编码为字节序列,将结果存储到新的字节数组中。 |
|
boolean |
isEmpty() |
返回 true ,当且仅当, length()是 0 。 |
int |
length() |
返回此字符串的长度。 |
replace(char oldChar, char newChar) |
返回从替换所有出现的导致一个字符串 oldChar在此字符串 newChar 。 |
|
String[] |
将此字符串拆分为给定 regular expression的匹配 项 。 |
|
substring(int beginIndex, int endIndex) |
返回一个字符串,该字符串是此字符串的子字符串。 |
更多方法和方法的使用请直接查看API文档,其中有详细的说明(API在线文档来源于菜鸟教程)
String (Java SE 11 & JDK 11 ) (runoob.com)
5、应用:随机生成四位验证码
String name = "acbdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
Random r = new Random();
String names = "";
for(int i = 0; i < 4; i++){
int index = r.nextInt(name.length());
names += name.charAt(index);
}
6、常见面试题
String s2 = new String("abc");先在常量池中创建了一个“abc”对象,再将常量池中的“abc”对象复制到堆中,并把这个对象交给s2,所以创建了两个对象
“==”在基本类型比较时,是比较数据,在引用类型比较时,比较的是地址,在String中,我们使用equlas进行内容的比较,内容相同就返回true