学Java的第9天


String

String概述

  • java.lang.String类代表字符串,String类定义的变量可以用于指向字符串对象,然后操作该字符串。
  • Java程序中所有双引号标注的对象都可以认为是字符串对象。
String name = "泷少";

String类的特点详情

  • String其实常被称为不可变字符串类型,它的对象在创建后不能被更改。(字符常量池中,已创建的对象不变,栈中的地址指向更新,给人一种字符串对象更新了的错觉)

创建字符串的2种方式

  1. 直接用双引号定义(推荐
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());

集合存储的对象并不是对象本身,而是对象的地址。


文章作者: 泷少
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 泷少 !
评论
  目录