常用类---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对象.如果常量池没有存在,还需要创建一个饮用,所以最多两个.

 

 

 

编译时期只是检查语法,运行时期才会调用方法.调用变量.

所以编译器不会对最后的结果进行优化处理.  编译器优化会在编译时期将常量优化成一个常量

 

 

 

 

 

   

 

posted @   NobodyHero  阅读(99)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
· 零经验选手,Compose 一天开发一款小游戏!
点击右上角即可分享
微信分享提示