学习笔记

  1. String、StringBuilder、StringBuffer 的区别

类 可变性 线程安全 效率
 String  不可变 安全 低(频繁拼接会生成新对象)
 StringBuilder  可变 不安全 高(单线程推荐)
 StringBuffer  可变 安全(加 synchronized ) 中(多线程推荐)

java

public class StringTest {
public static void main(String[] args) {
// String 不可变,每次拼接产生新对象
String str = "a";
str += "b";
str += "c";
System.out.println(str);

// StringBuilder 单线程,高效拼接
StringBuilder sb = new StringBuilder();
sb.append("a").append("b").append("c");
System.out.println(sb.toString());

// StringBuffer 多线程安全,带同步锁
StringBuffer sbf = new StringBuffer();
sbf.append("a").append("b").append("c");
System.out.println(sbf.toString());
}
}

  1. ArrayList 和 LinkedList 的区别
  • ArrayList :基于动态数组实现- 优点:随机访问快( get(i)  直接定位)
  • 缺点:增删元素慢(需要移动元素)
  • LinkedList :基于双向链表实现- 优点:增删元素快(只需修改指针)
  • 缺点:随机访问慢(需要遍历查找)

使用场景:

  • 多查询、少增删 → 用 ArrayList
  • 多增删、少查询 → 用 LinkedList

java

import java.util.ArrayList;
import java.util.LinkedList;

public class ListTest {
public static void main(String[] args) {
// ArrayList 数组,查询快
ArrayList arrayList = new ArrayList<>();
arrayList.add("Java");
arrayList.add("Blog");
System.out.println(arrayList.get(0));

// LinkedList 双向链表,首尾增删快
LinkedList linkedList = new LinkedList<>();
linkedList.addFirst("Head");
linkedList.addLast("Tail");
System.out.println(linkedList.getFirst());
}
}

posted @ 2026-06-15 20:12  2295209806  阅读(4)  评论(0)    收藏  举报