当前位置: 首页 > news >正文

【Java 入门 Day18】常用类篇(下):String 可变字符串 BigDecimal,开发里的 “字符串工具人”!

家人们!上一篇咱们唠了 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,全给你扒得明明白白了!再也不用写代码的时候被字符串拼接、浮点数精度问题搞疯了!要是还有啥没看懂的地方,评论区唠唠,我给你掰开揉碎了讲明白!

http://www.jsqmd.com/news/1008136/

相关文章:

  • 终极指南:用MAA明日方舟助手实现全日常一键长草
  • 2026 河南粮油机械厂商选型参考:油脂全套加工设备厂家梳理指南 - 海棠依旧大
  • 3步掌握个人数据主权:WeChatMsg让您的微信记忆永久留存
  • 2026年6月武汉燃气灶维修平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • 抖音无水印下载器完全指南:5分钟掌握批量下载技巧
  • packwiz 模组包导出教程:如何将包发布到 CurseForge 和 Modrinth
  • Infinite Noise TRNG安全最佳实践:保护你的随机数生成
  • ABAP财务开发必知:OB52账期表T001B字段全解析与实战查询技巧
  • Windows 11系统优化神器:一键清理让你的电脑重获新生
  • 母牛羊饲料常见问题解答(2026最新专家版) - 资讯速览
  • 【车辆】基于110cc全地形车(ATV)平台开发的自主无人地面车辆(UGV)设计与实现
  • 专业音频格式转换深度解析:NCMconverter技术实现与实战指南
  • 116、【Agent】【OpenCode】项目配置(SemVer)(补充)
  • 2026年6月西安冰箱维修平台横评:4大品牌实测,哪家更靠谱? - 简单到家
  • 【篮球英语】17 比赛战术:从挡拆到区域联防
  • i.MX23 LCDIF接口深度解析:四种工作模式、数据通路与实战避坑指南
  • 终极指南:如何在安卓手机上为星露谷物语安装MOD?SMAPI安卓安装器完整教程
  • 中山大学发现:让AI“自我审视“练习,竟能让音乐创作更有灵魂
  • 深入解析MC56F81xxx PWM硬件故障保护机制与工程实践
  • 乌鲁木齐本地推荐:专业办理公司注销与记账的优质企业服务公司 - 新疆全疆企业服务
  • 2026年济南车灯专业店在哪?车灯不亮咋解决?后浪车灯,赵太奇带你来了解车灯 - Ayu8888
  • 如何深度定制iOS界面:解锁Misaka高级定制功能的完整指南
  • SPT-AKI存档编辑器:离线塔科夫玩家的终极数据管理解决方案
  • 终极风扇控制解决方案:FanControl让你的电脑既安静又高效
  • BepInEx游戏插件框架:轻松解锁游戏无限潜能的终极指南
  • 五色全线史低!AirPods Max 2 登陆亚马逊最低价
  • Windows网络性能测试架构:iperf3-win-builds部署方案与优化实践
  • TypingMind高级功能全解析:插件系统、AI角色、多模型切换实战
  • 5分钟学会:Sharp-dumpkey一键提取微信数据库密钥完整教程
  • 猫抓浏览器扩展终极指南:三步解锁网页媒体资源下载