常用类---String类前言,
String.length方法的实现,底层部分还是用的char封装成的数组..
String类型的创建:
1). 直接赋值: String s = "1";
2). 通过构造器创建: String s = new String("s");
String的空值
1).表示引用为空: String str = "null"; 没有初始化,没有分配内存空间. 会出现空指针的错误.
2).内容为空字符串: String str = ""; 已经进行了初始化操作,分配了内存空间,但是没有内容.
判断字符串非空:
1).引用不能为空(不能为null)
2).字符内容不能为空字符串.
字符串的比较操作:
1). 使用等号. (只能比较引用的内存地址,相同ture)
2). 使用equals方法, equals的父类是Object是所有类的父类. (在Object中,和等号相同,建议子类覆盖equals方法去比较自己想比较的内容.)
String类覆盖equals方法,比较的是字符内容. 先比较内存地址值是否相同,相同为ture,不同比较类型是否都为String.换成相同的类型再将字符串一个一个进行比较.
内存分析图. 他们俩的地址值不一样, str1永远不==str2. 但是他们是equals的.
String str1 = "ABC"
1). 最多创建一个String对象,最少不创建String对象.
如果常量池已经存在了"ABC" 那么不创建直接引用. 常量池起到缓存的作用,就像Integer缓存-128-127的数一样.
String str2 = new String("ABC")
1).最多创建两个String对象,至少创建一个String对象.
new关键字.绝对会在堆空间,创建内存区域,所以至少创建一个String对象.如果常量池没有存在,还需要创建一个饮用,所以最多两个.
编译时期只是检查语法,运行时期才会调用方法.调用变量.
所以编译器不会对最后的结果进行优化处理. 编译器优化会在编译时期将常量优化成一个常量
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!