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

news/2024/11/19 13:22:19/

一、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)修改索引处的元素,并返回修改的元素

http://www.ppmy.cn/news/75566.html

相关文章

私有化部署即时通讯为什么更安全

即时通讯作为企业沟通工具&#xff0c;在企业的内部沟通和外部交流中发挥着越来越重要的作用。同时&#xff0c;企业即时通讯在提升企业内部效率的同时&#xff0c;也面临着巨大的安全威胁。 根据数据显示&#xff0c;全球有超过4亿人在使用 IM。而其中因用户隐私泄露导致的数据…

自抗扰PID(梯形图源代码)

有关ADRC的详细算法和源代码,请参看专栏的系列文章,这里不再赘述,常用链接如下: ADRC自抗扰控制算法(含梯形图完整源代码和算法公式)_adrc算法_RXXW_Dor的博客-CSDN博客PLC的自抗扰控制(ADRC)算法_RXXW_Dor的博客-CSDN博客_adrc算法1、自抗扰控制算法,网上很多文章有所…

操作系统原理大题

一、地址变换和求FAT表大小 某一页表内容自0~7依次为03; 07; 0B;11;1A;1D;20;22. 请计算页面大小为1K和4K时的逻辑地址134D对应的物理地址。 首先&#xff0c;将134D转换为二进制数为 0001001101001101 1k为2的10次方 从后往前占十位为 000100|1101001101 竖线前面的二进制转…

UDP和TCP详解

1. UDP 1.1 UDP协议段格式 16位UDP长度, 表示整个数据报(UDP首部UDP数据)的最大长度, 即数据报最大大小为2^16byte 64KB如果校验和出错, 就会直接丢弃 1.2 UDP特点 1.2.1 无连接不可靠 无连接 知道对端的IP和端口号就直接进行传输, 不需要建立连接不可靠 没有确认机制, 没有…

06-jQuery-DOM操作-属性操作-attr()\prop()\addClass()\toggleClass()等

一、通用属性操作 1、attr() 方法&#xff1a;主要用于获取或设置 HTML 元素的属性值&#xff0c;它接受一个参数或两个参数&#xff0c;当传递一个参数时&#xff0c;它返回指定属性名的属性值&#xff1b;当传递两个参数时&#xff0c;它设置指定属性名的属性值为指定的值。…

ES6对象新增了哪些扩展?

一、属性的简写 ES6中&#xff0c;当对象键名与对应值名相等的时候&#xff0c;可以进行简写 const baz {foo:foo}// 等同于 const baz {foo} 方法也能够进行简写 const o {method() {return "Hello!";} };// 等同于const o {method: function() {return &qu…

DR2: Diffusion-based Robust Degradation Remover for Blind Face Restoration

DR2: Diffusion-based Robust Degradation Remover for Blind Face Restoration (Paper reading) Zhixin Wang, Shanghai Jiao Tong University, CH, CVPR2023, Cited:0, Code, Paper 1. 前言 传统的盲脸部修复通常使用预定义的退化模型来合成降质的低质量数据进行训练&#…

如何减少电脑内存占用?

内存(Memory)是计算机一个重要的组成部件&#xff0c;也称为内存储器或主存储器。它可以暂时存放CPU中运算的数据&#xff0c;以及与硬盘等外部存储器交换的数据&#xff0c;是CPU和硬盘之间的桥梁。若电脑内存占用过高&#xff0c;这会影响到电脑运行的速度&#xff0c;那该如…