1:String类概述
- String是字符串类型,可以定义字符串变量指向字符串对象
- String是不可变字符串的原因?1.String变量每次的修改都是产生并指向新的字符串对象。2.原来的字符串对象都是没有改变的,所以称不可变字符串。
2:String创建字符串对象的2中方式
- 直接使用 String name="中国"
- 通过String类的构造器创建对象。public String (char[] )/(byte[])
3:特点
双引号创建的字符串对象,在字符串常量池中存储同一个。
通过new构造器创建的字符串对象,在堆内存中分开存储。
public class Test2{
public status void main(String[] args){
String s2= new String("abc");//实际创建了两个对象
String s1="abc";//创建了0个对象
System.out.println(s1==s2);
}
}
//为假,s2在堆内存中,s1在变量池中
public class Test3{
public status void main(String[] args){
String s1= "abc";
String s2="ab";
String s3=s2+"c";
System.out.println(s1==s3);
}
}
//为假,s3在堆内存中,s1在变量池中
public class Test3{
public status void main(String[] args){
String s1= "abc";
String s2="a"+"b"+"c";
System.out.println(s1==s3);
}
}
//为真,java存在编译优化机制,"a"+"b"+"c"会变成"abc"
4:String内容比较
背景:==是比较地址。
equals(常量);// equalsIgnoreCase();//忽略大小写
2;ArrayList
1:集合概述
- 集合大小不固定,启动后可以动态变化,类型也可以选择不固定
- 适合元素个数不确定,且要进行增删操作的业务场景
- 集合提供了许多丰富,好用的功能,而数组的功能单一。
2:ArrayList集合
3:ArrayList对于泛型的支持
泛型就是一种标识符,确定集合操作的类型。
ArrayList<String> list1=new ArrayList();
4:ArrayList常用方法,遍历
5:ArrayList遍历并删除
直接删的话,会漏删。
- 从集合后面删
- 加个i--,退一步。
6:ArrayList存储
集合中存储的元素并不是对象本身,而是对象的地址。
public class SysteamDemo {
public static void main(String[] args) {
Movie m1 = new Movie("《肖生克的救赎》",9.7,"罗宾斯");
Movie m2 = new Movie("《霸王别姬》",9.6,"张国荣");
Movie m3 = new Movie("《阿甘正传》",9.5,"汤姆.汉克斯");
ArrayList<Movie> movies=new ArrayList<>();
movies.add(m1);
movies.add(m2);
movies.add(m3);
System.out.println(movies);//地址
for (int i = 0; i < movies.size(); i++) {
Movie m=movies.get(i);
System.out.println(m.getName());//数据
System.out.println(m.getScore());
System.out.println(m.getActor());
}
}
}