Java-字符串

一:创建

  • 直接赋一个字面量
String str="ABCD"

在这里插入图片描述

  • 通过构造器
String string=new String("ABCD);


二:字符串对象的空串与NUll串

//Null串
String str=null //表示引用为空,没有初始化,没有分配内存空间
要检查一个字符串是否为 null, 要使用以下条件:if (str == null)
 //空串 "" 是长度为 0 的字符串
String str=""   //内容为空字符串,初始化了,也分配内存空间了,只不过没有内容
//可以调用以下代码检查一个字符串是否为空:
if (str.lengthQ = 0)if (str.equals(""))

三:字符串的分类

  • 可变字符串

当对象创建以后,对象的内容可以保持变化,变化以后对象保持不变。

1.StringBuffer
2.StringBuilder(效率最高)
区别:StringBuffer使用了synchronized,线程安全,但是效率低,反之StringBuilder效率高

  • 不可变字符串(String)

当前对象创建完毕以后,该对象的内容是不可改变的,一旦改变就是一个新对象。

四:判断字符串为空

  • 引用不能为空
  • 字符串内容不能为空字符串

五:字符串的比较操作

  • 使用"=="
    只能比较引用的地址是否相同
  • 使用"equal"(覆盖父类的方法)
public boolean equals(Object anObject) {
       if (this == anObject) {
           return true;
       }
       if (anObject instanceof String) {
           String anotherString = (String)anObject;
           int n = value.length;
           if (n == anotherString.value.length) {
               char v1[] = value;
               char v2[] = anotherString.value;
               int i = 0;
               while (n-- != 0) {
                   if (v1[i] != v2[i])
                       return false;
                   i++;
               }
               return true;
           }
       }
       return false;
   }
  • 面试必备
    单独使用"=“创建的字符串都是直接量,编译时期就已经存储到常量池里面
    使用new String(”")创建的对象会存储到堆内存,运行期才创建
    使用包含直接量的字符串链接如"aa"+"bb"创建也是直接编译时期就确定,已经存储到常量池
    使用包含String的直接量(无finally修饰符)的字符串表达式创建的对象也是运行时期才创建的存储在堆中
    通过变量/调用方法去连接字符串,都只能在运行时期才能确定变量的值和方法的返回值,不存在编译优化操作

    其他:常用方法
方法名说明
public String(String original)初始化新创建的String对象,使其表示与参数相同的字符序列; 换句话说,新创建的字符串是参数字符串的副本。
public int length()返回此字符串的长度。
public char charAt(int index)返回char指定索引处的值。
public String concat(String str)将指定的字符串连接到该字符串的末尾。
public static String join(CharSequence delimiter, CharSequence… elements)返回一个新的字符串,由CharSequence elements的副本组成,并附有指定的delimiter的delimiter 。
public String[] split(String regex, int limit)将此字符串拆分为给定的regular expression的匹配。
public boolean equals(Object anObject)将此字符串与指定对象进行比较。
public boolean equalsIgnoreCase(String anotherString)将此String与其他String比较,忽略案例注意事项。 如果两个字符串的长度相同,并且两个字符串中的相应字符等于忽略大小写,则两个字符串被认为是相等的。
public String toLowerCase()转换成小写。
public String toUpperCase()转换为大写。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值