String
String概述
- java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
- Java程序中所有双引号标注的对象都可以认为是字符串对象。
String name = "泷少";
String类的特点详情
- String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。(字符常量池中,已创建的对象不变,栈中的地址指向更新,给人一种字符串对象更新了的错觉)
创建字符串的2种方式
- 直接用双引号定义(
推荐)
String name = "泷少";
2.使用String类构造器
String name = new String("泷少");
两者区别(面试题)
- 双引号创建的字符串,在字符串常量池中,相同内容只会存储一份(为了节约内存资源)。
- 构造器new的字符串,每次new都会在堆内存中开辟新的空间,相同内容也是不同的对象,在栈内存中保存的地址也不同。
常见面试题
String s1 = "abc";
String s2 = "ab";
String s3 = s2 + "c";
System.out.println(s1 == s3);
//返回false
String s1 = "abc";
String s2 = "a" + "b" + "c";
System.out.println(s1 == s2);
//返回true
//因为Java存在编译优化机制,编译时"a" + "b" + "c"自动编译成"abd"
String类常用API
| 方法名 | 说明 |
|---|---|
| equals | 将此字符串与指定对象进行比较,只关心字符内容是否一致 |
| equalsIgnoreCase | 将此字符串与指定对象进行比较,忽略大小写,只关心字符内容是否一致 |
| length | 返回字符串长度 |
| charAt | 返回某个索引位置处的字符 |
| toCharArray | 将字符串转换成字符数组再返回 |
| subString(index,end) | 根据开始和结束索引截取,返回新字符串(包前不包后) |
| replace(旧,新) | 使用新值替换旧值,得到新的字符串(违禁词变*号) |
| split | 根据传入的规则切割字符串,得到字符串数组返回 |
| contains(内容) | 判断字符串中是否包含内容,返回布尔值 |
| startWith(内容) | 判断字符串中是否以内容开头,返回布尔值 |
ArrayList
集合概述
集合与数组类似,也是一种容器,用于装数据的
数组定义后,类型确定,长度固定
在个数不确定的情况下,数组不方便做增删操作
集合的大小不固定,可以动态变化,类型也可以选择不固定
ArrayList集合
ArrayList是集合的一种,他支持索引
ArrayList list = new ArrayList();
list.add("Java");
list.add("C");
list.add("C++");
System.out.println(list);
list.add(1,"C#");
System.out.println(list);
支持泛型
ArrayList<String> list = new ArrayList();
list.add("Java");
System.out.println(list);
注意:集合中只能存储引用类型,不能存储基本数据类型
ArrayList类常用API
| 方法名 | 说明 |
|---|---|
| get | 返回指定索引处的元素 |
| size | 返回集合中的元素个数 |
| remove(index) | 删除指定索引处的元素,返回被删除的元素 |
| remove(Object) | 删除指定元素,返回是否删除成功(有相同元素时,默认只删第一次出现的那个元素) |
| set(index,element) | 修改指定索引处的元素,返回被修改的元素 |
遍历删除元素
从集合后面遍历删除,可以避免漏元素。
存储自定义类型
ArrayList<Student> list = new ArrayList();
list.add(new Student("泷少",23,"男"));
System.out.println(list.get(0).print());
集合存储的对象并不是对象本身,而是对象的地址。