【Java 入门 Day18】常用类篇(下):String 可变字符串 BigDecimal,开发里的 “字符串工具人”!
2026/6/13 22:50:57 网站建设 项目流程

家人们!上一篇咱们唠了 Object 类和包装类,今天必须把开发里的 “字符串工具人” 们给盘明白!String、StringBuilder、StringBuffer,还有 BigDecimal,这些类写代码的时候天天见,尤其是字符串拼接、浮点数计算,用错了就会出 bug,看完这篇你再也不用踩坑了!


三、String 类:不可变的 “字符串钉子户”

String 类,堪称 Java 里的 “钉子户”,一旦创建,内容就不能修改了,所以也叫不可变字符串。

1. 创建字符串的两种方式,面试常考!

  • 方式一:直接赋值String s1 = "hello";
    • 只会创建一个对象,在字符串常量池里生成,下次再用"hello"的时候,直接从常量池里拿,不会重复创建。
  • 方式二:new String("world");
    • 会创建两个对象:一个在堆空间里,一个在字符串常量池里。如果常量池里已经有"world"了,就只会在堆里创建对象。

2. String 类里的常用方法,开发必备!

  • charAt(int index):根据下标获取对应的字符,比如"hello".charAt(0)会返回'h',下标超出范围会报StringIndexOutOfBoundsException
  • contains(String str):判断字符串里是否包含某个子串,比如"hello".contains("he")返回true
  • equals(String str):比较两个字符串的内容是否相同,开发里比较字符串必须用equals,不能用==
  • length():获取字符串的长度,注意和数组的length区分,数组是属性数组名.length,字符串是方法字符串.length()
  • trim():去除字符串前后的空格,比如用户输入的用户名前后有空格,用trim()去掉再处理。
  • split(String str):按指定的分隔符拆分字符串,比如"a,b,c".split(",")会返回一个数组["a","b","c"]

3. String 的不可变性:为什么拼接字符串效率低?

因为 String 是不可变的,每次拼接字符串,都会在原来的字符串基础上拷贝一个副本,在副本上拼接,相当于每次都要新建对象,效率很低。

  • 比如String s = "a" + "b";,编译器会直接优化成"ab",只创建一个对象;但如果是变量拼接,比如String s1 = "a"; String s2 = "b"; String s = s1 + s2;,就会新建多个对象,效率很差。

四、可变字符串:StringBuilder&StringBuffer,拼接字符串的 “效率之王”

既然 String 拼接效率低,Java 就给了两个可变字符串类:StringBuilderStringBuffer,它们的内容是可变的,拼接字符串不用每次都新建对象,效率比 String 高很多。

1. 两者的区别,面试必背!

  • 开发里大部分情况都是单线程环境,优先用StringBuilder;如果是多线程环境,需要线程安全,就用StringBuffer

2. 常用方法:拼接字符串的神器

  • append(String str):字符串拼接,比如new StringBuilder().append("a").append("b"),拼接效率超高,比+拼接快很多。
  • 举个栗子:循环拼接字符串的时候,用StringBuilder比用String+拼接快几十倍!

五、BigDecimal 类:解决浮点数精度问题的 “救命稻草”

开发里用floatdouble做浮点数计算的时候,经常会出现精度丢失的问题,比如0.1 + 0.2,结果不是0.3,而是0.30000000000000004,这时候就该BigDecimal出场了!

1. 常用构造方法

  • new BigDecimal(String n):用字符串创建BigDecimal对象,能保证精度,不建议用new BigDecimal(double n),还是会有精度问题。

2. 常用计算方法

  • 加法:bd1.add(bd2)
  • 减法:bd1.subtract(bd2)
  • 乘法:bd1.multiply(bd2)
  • 除法:bd1.divide(bd2, 保留位数, 取舍模式),比如bd1.divide(bd2, 2, BigDecimal.ROUND_HALF_UP),表示保留两位小数,四舍五入。

好了家人们!Java 里的常用类,从 Object 到包装类,再到 String、可变字符串和 BigDecimal,全给你扒得明明白白了!再也不用写代码的时候被字符串拼接、浮点数精度问题搞疯了!要是还有啥没看懂的地方,评论区唠唠,我给你掰开揉碎了讲明白!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询