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 |
|
常用方法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"为分隔符进行分隔,结果不包含分隔符 |
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]; //了解,创建多维数组 } }
本文来自博客园,作者:FengweiTech,转载请注明原文链接:https://www.cnblogs.com/fengwei-blogs/p/22164759

浙公网安备 33010602011771号