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

 

 

 

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

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

 

 

 

 

 

   

 

转载于:https://www.cnblogs.com/dwj-ngu/p/6514210.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值