目录

1. java.lang 包 (核心基础类)

1.1 Object 类:

1.2 String 类:

1.3 StringBuilder 和 StringBuffer 类:

1.4 包装类:

2. java.util 包 (工具类和集合框架)

2.1 集合框架:

3.日期和时间


1. java.lang 包 (核心基础类)

这个包是 Java 的核心,不需要手动 import

1.1 Object 类:

  • 作用: Java 中所有类的根类。
  • 常用方法:
  • equals(Object obj): 比较两个对象是否相等。注意: 默认比较的是内存地址,通常需要重写
  • hashCode(): 返回对象的哈希码值,与 equals 方法紧密相关。
  • toString(): 返回对象的字符串表示,建议重写以提供有意义的信息。
  • getClass(): 返回对象的运行时类。
  • wait()notify()notifyAll(): 用于多线程间的通信和同步。

代码示例:

public class Test {
    private String name;
    private int age;

    // 重写 equals 方法
    @Override
    public boolean equals(Object obj) {
        if (this == obj) return true;
        if (obj == null || getClass() != obj.getClass()) return false;
        Test person = (Test) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

    // 重写 hashCode 方法
    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
    // 重写 toString 方法
    @Override
    public String toString() {
        return "Student{name='" + name + "', age=" + age + "}";
    }
    public static void main(String[] args) {
        Test person1 = new Test();
        person1.name = "张三";
        person1.age = 18;

        Test person2 = new Test();
        person2.name = "张三";
        person2.age = 18;

        System.out.println(person1.equals(person2));// true
        System.out.println(person1.hashCode());// -1062632135
        System.out.println(person2.hashCode());// -1062632135
        System.out.println(person1.toString());// Student{name='张三', age=18}
    }
}

1.2 String 类:

  • 作用: 不可变的字符序列。一旦创建,其值不能被修改。
  • 常用方法:
  • length(): 返回字符串长度。
  • charAt(int index): 获取指定索引的字符。
  • substring(int beginIndex, int endIndex): 截取子字符串。
  • equals(Object anObject): 比较字符串内容是否相等。强烈推荐,而不是 ==
  • equalsIgnoreCase(String anotherString): 忽略大小写比较。
  • indexOf(String str) / lastIndexOf(String str): 查找子串位置。
  • startsWith(String prefix) / endsWith(String suffix): 判断前缀 / 后缀。
  • split(String regex): 按正则表达式分割字符串。
  • replace(CharSequence target, CharSequence replacement): 替换字符或子串。
  • trim(): 去除首尾空白字符 (Java 11+ 推荐使用 strip())。

代码示例:

public class Test {
	
	public static void main(String[] args) {
		
       	//final 修饰的类是始终类,不能被继承,断子绝孙类
		//为什么要设计成final,不希望子类去重写父类的方法
		//String类的操作方法是:一个标准
		String  s1 ="123";
		String  s2  = new String("123");
		String   s3 = s1.intern();
		System.out.println(s1==s3);
		System.out.println(s1.equals(s3));
		
		
	    //长度,去除空格,截取,分割,替换,连接,转换,输出....
		System.out.println(s1.length());//方法
		int[] as  = new int[10];
		System.out.println(as.length);//属性
		
		
		String s4 = " 123   ";
		System.out.println(s4.trim());
		System.out.println(s4.length());
		System.out.println(s4.trim().length());
		
		String  s5 = "  12     3   ";
		System.out.println(s5.trim().length());
		
		String  result  ="";
		char[] cs = s5.toCharArray(); // 把一个字符串转换成数组
		for(char c:cs)
		{
			if(c>= '0' && c <='9')
			{
				result+=String.valueOf(c);
			}
			
		}
		System.out.println(result);
		
		String  s6 = "123456";
		System.out.println(s6.charAt(0));
		
		System.out.println(s6.indexOf("5"));
		
		String  s7 = "lixin@qq.com";
		System.out.println(s7.indexOf(".")>0);
		System.out.println(s7.indexOf("@")>0);
		System.out.println(s7.indexOf(".")>0  && s7.indexOf("@")>0);
		
		System.out.println(s7.charAt(s7.indexOf(".")));
		
		String  s8 ="a.txt.txt";
		System.out.println(s8.charAt(s8.lastIndexOf(".")));
		
		System.out.println(s8.substring(1));
		
		System.out.println(s8.substring(s8.indexOf(".")));
		
		System.out.println(s8.substring(s8.indexOf(".")).equals(".txt"));
		
		System.out.println(s8.substring(s8.lastIndexOf("."), s8.length()));
		
		System.out.println(s8.startsWith("a"));
		System.out.println(s8.endsWith(".txt"));
		
		String s9 ="13913321086,13913321087,13913321086";
		
		String[]  strs = s9.split(",");
		
		for(String s :strs)
		{
			System.out.println(s);
		}
		//替换     
		String str ="我讨厌你";
		String  result1 = str.replaceFirst("讨厌你", "喜欢你");
		System.out.println(result1);
		//格式化输出
		String  str1 = String.format("你好,%s,%s", "张三","李四");
		System.out.println(str1);
		String  str3 = str1.concat("23");
	}

}

1.3 StringBuilder  StringBuffer 类:

  • 作用: 可变的字符序列,用于高效拼接字符串。
  • 区别:
    • StringBuffer: 线程安全,但性能较低。
    • StringBuilder: 非线程安全,性能高。单线程环境下首选。
  • 示例代码:

(单线程下StringBuilder时间更短,更占优势

//测试StringBuffer和StringBuilder的效率
public class Test {
    public static void test1(long size, String str) {
        StringBuffer sb = new StringBuffer();

        long startTime = System.currentTimeMillis();

        for (int i = 0; i < size; i++) {
            sb.append(str);
        }

        long endTime = System.currentTimeMillis();

        System.out.println("StringBuffer的拼接字符串的时间为:" + (endTime - startTime));
    }

    public static void test2(long size, String str) {
        StringBuilder sb = new StringBuilder();

        long startTime = System.currentTimeMillis();

        for (int i = 0; i < size; i++) {
            sb.append(str);
        }

        long endTime = System.currentTimeMillis();

        System.out.println("StringBuilder的拼接字符串的时间为:" + (endTime - startTime));
    }

    public static void main(String[] args) {

        long size = 3000000;

        String str = "123456";

        test1(size, str);// 52 125
         test2(size,str); //39 73
    }
}

(多线程状态下StringBuffer更占据优势

这里代码量过多,小编用截图给大家演示

这里可看出StringBuffer输出的值为固定的10000,因为其具有线程安全性。

但是StringBuilder输出的数值并不固定。

  • 建议使用原则:

     如果在单线程环境中操作字符串,优先使用 StringBuilder

     如果在多线程环境中需要操作共享的字符串缓冲区,则使用 StringBuffer

  • 常用方法:
    • append(...): 在末尾追加内容。
    • insert(int offset, ...): 在指定位置插入内容。
    • delete(int start, int end): 删除指定范围的内容。
    • reverse(): 反转字符串。
    • toString(): 转换为 String 对象。
  • 代码示例:
  • public class Springbuffer {
        public static void main(String[] args) {
            StringBuffer sb1  = new StringBuffer("123");
            StringBuffer sb2  = new StringBuffer("123");
            System.out.println(sb1 == sb2);// false
            //StringBuffer 类没有重写从 Object 类继承来的 equals 方法
            System.out.println(sb1.equals(sb2));// false
            System.out.println(sb1.append(true));// 123true
            System.out.println(sb1.insert(0, "6"));// 6123true
            System.out.println(sb1.reverse());// eurt3216
            System.out.println(sb1.delete(0, 2));//rt3216
        }
    
    }
    

1.4 包装类:

作用: 为 8 种基本数据类型提供对象形式的表示,以便在需要对象的场景(如集合)中使用.

  • 对应关系:
  •  int -> Integer
  • char -> Character
  • boolean -> Boolean,
  •  byte -> Byte
  • short -> Short,
  • long -> Long
  • float -> Float
  • double -> Double
  • 常用方法:
    • 装箱 (Boxing): Integer i = Integer.valueOf(10); (或自动装箱 Integer i = 10;)
    • 拆箱 (Unboxing): int num = i.intValue(); (或自动拆箱 int num = i;)
    • 类型转换: parseInt(String s) (字符串转 int), toString() (数字转字符串)。
  • 代码示例
  • public class Test {
        public static void main(String[] args) {
            // 装箱
            Integer a = 10;  // 自动装箱
            Integer b = Integer.valueOf(20);  // 手动装箱
    
            // 拆箱
            int c = a;  // 自动拆箱
            int d = b.intValue();  // 手动拆箱
    
            // 类型转换
            String numStr = "100";
            int con = Integer.parseInt(numStr);// 字符串转换成数字
            String backToStr = Integer.toString(con);// 数字转换成字符串
    
            System.out.println("装箱: " + a + ", " + b);// 10, 20
            System.out.println("拆箱: " + c + ", " + d);// 10, 20
            System.out.println("类型转换: " + numStr + " -> " + con + " -> " + backToStr);// 100 -> 100 -> 100
        }
    }
    

2. java.util 包 (工具类和集合框架)

2.1 集合框架:

(小编有一期专门讲集合的文章可以看一下,这里罗列出来就不进行代码示例了)

  • 集合框架 (Collections Framework):

    • List 接口: 有序、可重复的集合。
      • ArrayList最常用。底层是动态数组,查询快,增删慢。
      • LinkedList: 底层是双向链表,增删快,查询慢。
      • Vector: 古老的 List 实现,线程安全,但性能较差,已被 ArrayList 替代。
    • Set 接口: 无序、不可重复的集合。
      • HashSet最常用。底层是哈希表,存取速度快。
      • LinkedHashSet: 在 HashSet 基础上维护了元素的插入顺序。
      • TreeSet: 元素会自动进行排序(自然排序或自定义排序)。
    • Map 接口: 存储键值对 (key-value),key 唯一。
      • HashMap最常用。底层是哈希表,存取速度快。允许 null 键和 null 值。
      • LinkedHashMap: 在 HashMap 基础上维护了键值对的插入顺序。
      • TreeMap: 键会自动进行排序。
      • Hashtable: 古老的 Map 实现,线程安全,不允许 null 键和 null 值,性能较差,已被 HashMap 替代。
  • Arrays 类:

    • 作用: 操作数组的工具类,提供了大量静态方法。
    • 常用方法:
      • sort(): 排序数组。
      • binarySearch(): 二分查找。
      • toString(): 将数组转为字符串。
      • copyOf(): 复制数组。
      • fill(): 填充数组。
  • Collections 类:

    • 作用: 操作集合的工具类,提供了大量静态方法。
    • 常用方法:
      • sort(): 排序 List
      • binarySearch(): 在 List 中二分查找。
      • max() / min(): 查找最大 / 最小值。
      • reverse(): 反转 List
      • shuffle(): 随机打乱 List
      • synchronizedList() / synchronizedMap(): 将集合包装成线程安全的集合。

3.日期和时间

java.time 包 (Java 8+)现代 Java 开发的首选。线程安全,API 设计清晰。

    • LocalDate: 只表示日期 (年、月、日)。
    • LocalTime: 只表示时间 (时、分、秒、纳秒)。
    • LocalDateTime: 表示日期和时间。
    • ZonedDateTime: 带时区的日期和时间。
    • DateTimeFormatter: 用于日期时间的格式化和解析。

代码示例:

// 获取当前日期时间
LocalDateTime now = LocalDateTime.now();

// 格式化输出
DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
String formattedNow = now.format(formatter); // "2025-10-7 15:30:00"

// 解析字符串
LocalDateTime parsedDate = LocalDateTime.parse("2023-10-7 15:30:00", formatter);

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐