Java学习路线(8)——String与ArrayList

一、String
1、概念
java.lang.String 类代表字符串,它定义的变量可以用于指向字符串对象,然后操作字符串。
注意: String类是不可变字符串,在定义后是不能被更改的。

问:为什么String是不可变字符串,并且不能被更改
答:当声明String类时,在堆内存中会开辟一个“字符串常量池”空间,当我们创建一个String对象时,先查找常量池是否存在,若存在则返回地址;若不存在则先存储再返回地址。不能更改原因是,进行字符串修改操作时,会在堆内存将字符串修改结果存储在堆内存中,再将结果地址覆盖栈内存的地址中。在这个过程中字符串的值是不变的,而是其指向的地址发生了改变。

2、创建对象的两种方式

  • 使用 " " 定义
  • 构造器
构造器说明
String()创建空白字符串对象
String(String original)根据传入字符串内容来创建字符串对象
String(char[] chs)根据字符数组创建字符串对象
String(byte[] chs)根据字节数组创建字符串对象

两种创建方式的区别

  • " " 方式创建的字符串对象,在字符串常量池中存储,且相同内容只存储一次。
  • 通过构造器创建的字符串对象,每new一次则创建一个新对象存储在栈内存中。

3、常见问题
问1:String s2 = new String(“abc”), s1 = “abc”;两个值做“==”操作,结果是什么?
答:false。因为s2存储的地址是new出来的那个地址,s1存储的地址是"abc"存储在字符串常量池里的地址,在做相等判断时,判断的是地址而不是内容,所以为false。

问2:String s1 = “abc”, s2 = “a”+“b”+“c”;两个值做“==”操作,结果是什么?
答:true。由于Java有编译优化机制,会将可见的字面量直接转为确定的字面量,如s2的连接操作,会在编译期间直接优化成s2 = “abc”,再去比较s1,所以为true。

4、常用API:比较、遍历、替换、截取、分割

  • String内容的比较(equals)
方法说明
boolean equals(Object object)将此对象与指定对象内容进行比较
boolean equalsIgnoreCase(String anotherString)忽略大小写进行内容比较

以下是String的常用API。

方法说明
int length()返回长度
char charAt(int index)返回指定索引处的字符
char[] toCharArray()将当前字符串转为字符数组返回
String substring(int beginIndex,int endIndex)根据开始和结束索引截取字符串并返回新字符串
String substring(int beginIndex)根据开始索引直至末尾截取字符串并返回新字符串
String replace(CharSequence target,CharSequence replacement)使用新值替换字符串中的旧值并返回新字符串
boolean contains(CharSequence s)判断当前字符串中是否含有传入的值自己
boolean startsWith(String prefix)判断当前字符串中是否以传入的值开始
String[] split(String regex)根据传入规则切割字符串并返回字符串数组

二、ArrayList

集合,使用时可以动态变化,长度与类型不固定。

1、概述
ArrayList是一种集合,支持索引。
2、使用方法

  • 创建ArrayList:【new ArrayList();】
  • 添加元素
方法名说明
boolean add(E e)向末尾添加元素
void add(int index,E element)向指定位置插入元素

3、对泛型的支持

  • 概念: 泛型指的是广泛的类型,通常用于不确定类型的声明。
  • ArrayList中的泛型使用: 通过ArrayList<E>声明泛型类
  • 泛型使用案例
    创建ArrayList时,我想要对加入到ArrayList的值进行限制,那么我们可以通过ArrayList<String>、ArrayList<Integer>等等数据类型进行限制。
    注意: 集合仅支持存储引用数据类型。

4、常见API

方法说明
E get(int index)返回索引处的元素
int size()返回集合长度
E remove(int index)删除索引处的元素并返回删除元素
boolean remove(Object o)删除指定元素并返回布尔值
E set(int index,E element)修改索引处的元素,并返回修改的元素
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zain_horse

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值