2.String 字符串

概述: String字符串是一个不可变的字符序列,常量,被final修饰,不可变

常用API:

  1. public String(byte[] bytes,Charset charset)
    通常用于解决乱码问题:new String (str.getBytes(),”utf-8”)
  2. 与char[],byte[] 可以相互转换
    char[] toCharArray      public String (char[] char) 
    byte[] getBytes()       public String (byte[] bytes)
  1. boolean equals(Object obj)
    重写了equals方法,底层源码 将此字符串与指定的对象比较。当且仅当该参数不为 null,并且是与此对象表示相同字符序列的 String 对象时,结果才为 true

    2. equalsIgnorecase(String str)     比较时忽略大小写
    3. startWith(String str)            是否是制定字符串开头
    4. endWith(String str)                            结尾    
    5. contains(String str)             大字符串中是否包含小字符串
    6. isEmpty()    
    
  2. 与index索引相关:

    1. char charAt(int index): 获取制定索引位置的 字符
      1. 方法运用: 遍历字符串,循环遍历,charAt索引位置返回的字符
    2. int indexOf(int char/String str ..) 返回第一次出现的索引,不存在则返回-1
  3. String subString(int start): 从指定索引位置开始截取字符串,直到末尾,会生成一个新的字符串

    String subString(int start,int end) 指定开始结束位置截取 ,生成新的字符串

       tips: 截取规则,左闭右开  [start,end) 
    
  4. String valuesOf(Obj obj)
    valuesOf 这个方法可以把任意类型的数据转换成字符串,大部分都是通过调用其toString方法实现,具体实现请看源码,同样的,String也能转换成其他基本数据类型(除了char),通过parse XX(String str) 方法

  5. 其他功能:
    1. 替换:
    String replace(char old,char new)
    String replace(String old,String new)
    2. 去除空格:
    String trim()
    3. 按字典顺序比较排序(详细请看treeSet,treeMap相关知识)
    int compareTo(String str)
    int compareToIgnoreCase(String str)

  6. 常见面试题:
    1. String str = new String(“abc”);请问创建了几个对象,为什么?
    答: 2个,一个字符串在常量池中创建,另一个在堆内存中,堆内存中的是该字符串的副本,详情说明参见String的构造函数 public String(String original) 方法说明
    2. 判断定义为String类型的s1和s2是否相等
    String s1 = “ab”;
    String s2 = “abc”;
    String s3 = s1 + “c”;
    System.out.println(s3 == s2); false
    System.out.println(s3.equals(s2)); true

    答:s3==s2 false ,因为在底层经过StringBuffer 拼接 然后 调用toString()方法 串联成一个新的字符串后,是在堆中的一个String对象,而s2 指向的是一个常量池的地址,所以false,具体参见下方Tips

  7. Tips:
    1. Java中 任何数据与字符串用“+” 号相连接,会形成一个新的字符串,底层实现原理是 通过 StringBuilder或StringBuffer二者(也叫字符串缓冲区)的append()方法 串联起来的,最后调用toString()方法,变成最终的 新字符串
    2. null 与”” 空字符串的区别:
    1.”“空字符串是字符串常量,也是一个String类的对象,能调用方法
    2. null是空常量,不能调用任何方法,否则会出现空指针异常,可以给任意的引用数据类型赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值