Java-语法速查:字符串(String)、数组(Array)

1、字符串

字符串实际是String对象,String类是不可变的,每次修改都会创建新的字符串(频繁拼接时性能差)。

不可变的的原因:

  • public final class String:String类被final修饰,不能被继承
  • private final char value[]:存放字符串内容的字符数组,private 保证外部无法访问数组内容;final 保证数组引用不会指向其他对象
    • String 类没有提供任何可以修改内部数组的公有方法(比如 setCharAt)

字符串拼接的三种方式:

  • + 运算符(频繁拼接会产生大量临时对象,性能差)
  • StringBuilder(线程不安全,性能好,单线程首选)
StringBuilder str_demo= new StringBuilder("");
str_demo.append("one"); // 在末尾添加内容
str_demo.append(",");
str_demo.insert(4, "two"); // 在索引4位置插入内容
System.out.println(str_demo.toString()); //输出结果:one,two
  • StringBuffer(线程安全,性能稍低)

创建方式1

String s1 = "hello";

1、在常量池中查找是否存在"hello"

2、如果存在,则s1指向它

3、不存在就在常量池中创建对象

 

创建方式2(一定创建堆内存对象,可能复用常量池对象)

String s2 = new String("hello");

1、先去常量池中查找是否存在"hello",没有则创建

2、再在堆中创建对象

比较引用数据类型 

public class PersonTest {
    public static void main(String[] args) {
        String s1 = new String("hello");
        String s2 = new String("hello");
        System.out.println(s1 == s2); // 输出 false
// 通过new()创建的s1 和 s2 指向不同的对象
System.out.println(s1.equals(s2)); //输出 ture
// 默认情况下,equals()方法继承自Object类,其实现与==相同,比较的是堆内存地址。 // 许多类(如String、Integer等)重写了equals()方法,使其比较对象的内容而非地址。 String s3 = "hello"; String s4 = "hello"; System.out.println(s3 == s4); // 输出 true
// s3和s4指向相同的对象,保存在常量池
System.out.println(s3.equals(s4)); //输出 ture } }

常用方法1

s3.length(); //获取长度
s3.isEmpty(); //判断是否为空

s3.equals(s4); //判断内容是否相同
s3.equalsIgnoreCase(s4); //忽略大小写进行判断

s3.contains("hello"); //判断是否包含指定内容
s3.indexOf("he"); //返回内容的开始索引,判断是否包含子串
s3.startsWith("he"); //判断是否以指定内容开头

 常用方法2

s3.substring(0); //从索引0开始截取内容
s3.replace("he","HE"); //把"he"替换为"HE"
s3.trim(); //去除首尾的空格,strip()(Java 11+)能去除所有Unicode空白字符

System.out.println(s3); //s3为"hello"
String[] result = s3.split("l"); //以"l"为分隔符进行分隔,结果不包含分隔符
\\注意转义,split(".") 需要写成 split("\\.")
System.out.println(Arrays.toString(result)); //输出结果为[he, , o] String[] fruits = {"apple", "banana", "orange"}; String join_result = String.join("-->", fruits); // 用指定符号连接字符串数组或集合中的元素为一个字符串 System.out.println(join_result); //输出结果:apple-->banana-->orange s3.toCharArray(); //转换为字符数组,方便修改和遍历

2、数组

Java中的数组(Array)是一种用于存储固定大小同一种数据类型的多个元素的容器

数组在内存中是连续存储的,每个元素通过索引(下标)进行访问(下标从0开始)。

//Arrays是数组类,包含了很多操作数组的方法
import java.util.Arrays;

public class PersonTest {
    public static void main(String[] args) {
        //数值元素的默认值为 0,引用元素的默认值为null
        int[] arr1 = new int[5];               // 默认0,[0, 0, 0, 0, 0]
        System.out.println(Arrays.toString(arr1));
        int[] arr2 = new int[]{1,2,3};         // 显式赋值,[1, 2, 3]
        int[] arr3 = {1,2,3};                  // 简写(仅在声明时),[1, 2, 3]

        int length = arr1.length; //数组长度
        System.out.println(length);
        Arrays.sort(arr1); //排序
        Arrays.toString(arr1); //一维数组转字符串

        int[][] matrix = new int[3][4]; //了解,创建多维数组
    }
}

 

posted @ 2026-08-03 10:30  FengweiTech  阅读(7)  评论(0)    收藏  举报