【JavaSE】数组_字符串

1、数组

1.1概念

  • 数组是一种线性的数据结构,它包含一组相同类型的元素,并且每个元素都有一个唯一的索引值。这些元素在内存中按照顺序连续存储
  • 数组是一种引用数据类型。在数组中,可以存储基本数据类型,也可以存储引用类型
  • 引用类型:类、String、数组、接口、枚举、注解
  • 方法中的变量,如果是基本数据类型,存储在栈内存中
  • 如果是引用类型,内容存储在堆内存中,在栈内存中,有一个变量指向堆内存地址(引用)

1.2数组的声明和初始化

1.2.1声明数组

  • 声明数组时,我们需要指定数组的类型和名称。
  • 例如:
// 声明一个整型数组
int[] numbers; 

//声明一个双精度浮点型数组
double[] scores; 

1.2.2初始化数组

  • 在声明数组之后,我们需要为数组分配内存空间并初始化它。这可以通过使用new关键字来完成。
静态初始化

在声明数组的同时直接初始化数组元素的值:

int[] numbers = {1, 2, 3, 4, 5}; // 静态初始化整型数组

动态初始化

先声明数组,然后分配内存空间并初始化数组元素的值:

int[] numbers = new int[5]; // 分配一个长度为5的整型数组  
numbers[0] = 1; // 初始化第一个元素  
numbers[1] = 2; // 初始化第二个元素  
// ...以此类推

1.3.数组的索引

  • 数组中的每个元素都有一个唯一的索引值,用于访问该元素。在Java中,数组的索引是从0开始的。例如,在一个长度为5的数组中,索引的有效范围是0到4。

1.4.数组的长度

  • 数组的长度是指数组中元素的个数。
  • 在Java中,可以使用length属性来获取数组的长度。例如:
int[] numbers = {1, 2, 3, 4, 5};  
int length = numbers.length; // 获取数组长度,length的值为5

1.5 数组的遍历

  • 遍历数组是指依次访问数组中的每个元素,并对它们执行某些操作。
  • 在Java中可以使用循环结构(如for循环)来遍历数组。例如:
int[] numbers = {1, 2, 3, 4, 5};  
for (int i = 0; i < numbers.length; i++) {  
    System.out.println(numbers[i]); // 遍历并打印数组中的每个元素  
}

1.6 数组的拷贝

  • 在Java中,数组是引用类型,直接赋值一个数组变量会使其指向另一个数组对象,而不是创建一个新的数组对象。
  • 要拷贝一个数组,可以使用System.arraycopy()方法或数组的clone()方法。

1.7 多维数组

  • 除了上述的一维数组之外,Java还支持多维数组,如二维数组、三维数组等。
  • 多维数组中的每个元素本身也是一个数组。
  • 二维数组可以看作是一个表格或矩阵。

2、字符串

2.1定义

  • 符串是由一系列字符(char)组成的不可变序列。
  • 在Java中,字符串是对象,属于java.lang.String类。
  • 不是基本数据类型,是一种引用类型

2.2特点

  • 不可变性:字符串一旦创建,其内容就不能被修改。每次对字符串的修改操作(如拼接、替换等)都会生成一个新的字符串对象。
  • 引用类型:字符串是引用类型,存储在堆内存中。
  • 常量池:对于通过字面量创建的字符串,Java会尝试在字符串常量池中查找是否存在相同内容的字符串。如果存在,则直接引用该字符串,避免重复创建。

2.3使用方式

  • 字面量方式:直接使用双引号包围文本创建字符串对象,如"Hello, World!"
  • 构造器方式:使用String类的构造器创建字符串对象,如new String("Hello, World!")。但这种方式与字面量方式在内存分配上有所不同。

2.4常用方法

  • 构造方法:用于创建字符串对象,如String(char[] value)String(byte[] bytes)等。
  • 比较方法
    • equals(Object anObject):比较两个字符串的内容是否相等。
    • equalsIgnoreCase(String anotherString):忽略大小写比较两个字符串的内容是否相等。
    • compareTo(String anotherString):按字典顺序比较两个字符串的大小。
  • 转换方法
    • toCharArray():将字符串转换为字符数组。
    • toUpperCase()toLowerCase():将字符串转换为大写或小写形式。
  • 查找和截取方法
    • indexOf(int ch)indexOf(String str):查找字符或子串首次出现的索引位置。
    • substring(int beginIndex)substring(int beginIndex, int endIndex):截取子串。
  • 替换和拆分方法
    • replace(char oldChar, char newChar)replace(CharSequence target, CharSequence replacement):替换字符串中的字符或子串。
    • split(String regex):根据正则表达式拆分字符串。
  • 其他方法
    • length():返回字符串的长度。
    • isEmpty():判断字符串是否为空(即长度为0)。
    • trim():去除字符串首尾的空白字符。
    • format(String format, Object... args):格式化字符串。

2.5内存分配

  • 字面量方式:字符串字面量存储在字符串常量池中,当创建相同内容的字符串时,会指向常量池中的同一个对象。
  • 构造器方式:使用new关键字创建的字符串对象在堆内存中分配空间,与常量池中的字符串内容相同但引用地址不同。

2.6特殊转义字符

  1. 换行符 (\n):
    • 描述:在字符串中表示换行。
    • 示例:"Hello\nWorld!" 将输出为两行,第一行是 "Hello",第二行是 "World!"。
  2. 回车符 (\r):
    • 描述:在字符串中表示回车(在某些系统中与换行符功能相似)。
    • 注意:在不同的操作系统中,换行和回车的表现可能不同。例如,在Windows中,换行通常使用 \r\n,而在Unix/Linux中,换行通常使用 \n
  3. 制表符 (\t):
    • 描述:在字符串中表示水平制表符,通常用于对齐文本。
    • 示例:"Hello\tWorld!" 将在 "Hello" 和 "World!" 之间插入一个制表符。
  4. 双引号 (\"):
    • 描述:在字符串中表示双引号字符本身,因为双引号在字符串中通常用于界定字符串的开始和结束。
    • 示例:"He said, \"Hello!\"" 将在输出中包含双引号。
  5. 单引号 (\'):
    • 描述:在字符串中表示单引号字符本身。
    • 示例:String s = 'It\'s a beautiful day!'; 注意这里示例中的字符串实际上应该使用双引号来界定,但这里是为了演示单引号的转义。
  6. 反斜杠 (\\):
    • 描述:在字符串中表示反斜杠字符本身,因为反斜杠在字符串中通常用作转义字符的前缀。
    • 示例:"C:\\path\\to\\file" 用于表示Windows文件路径中的反斜杠。
  7. Unicode 转义字符 (\uXXXX\UXXXXXXXX):
    • 描述:用于表示 Unicode 字符。其中 XXXXXXXXXXXX 是 Unicode 字符的十六进制表示。
    • 示例:"\u00A9" 表示版权符号(©)。
  • 17
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值