JAVA——String类

来源:互联网 发布:单片机datesheet是什么 编辑:程序博客网 时间:2024/05/01 05:01

String类
  字符串:一串字符,可以看成一个字符数组。
  字符串是常量,一旦被赋值,就不能被改变
这里写图片描述

如上图,不能改变的意思是指”hello”或者”world”不能变,而s作为引用是可以变的。

1、构造方法:
    public String() : 空构造
    public String(byte[] bytes) : 把字节数组转成字符串
    public String(byte[] bytes, int index , int length):把字节数组的一部分(从下标index处开始(包括index处字符)往后取length个字符)组成字符串
    public String(char[] value):把字符数组转成字符串
    public String(char[] value , int index , int count):把字符数组的一部分(从第index处开始(包括index处字符)往后取length个字符)组成字符串

2、常用方法:
  <1>获取长度:   
    public int length():返回字符串的长度
  <2>判断功能:
    boolean equalsIgnoreCase(Object obj) :比较字符串的内容是否相同
    boolean equalsIgnoreCase(String str) :忽略大小写比较字符串的内容是否相同
    boolean contains(String str):判断大字符串是否包含小字符串str
    boolean startWith(String str):判断字符串是否以某个指定的字符串str开头
    boolean endWith(String str):判断字符串是否以某个指定的字符串str结尾
    boolean isEmpty():判断字符串是否为空

   注意:
     **字符串内容为空和字符串为空的区别
     String s = “” ;  //内容为空
     String s = null ;  //字符串为空 ,此时调用isEmpty()方法的话会报空指针异常错误**

 <3>获取值
  int length() :获取字符串的长度
  char charAt(int index):获取指定索引位置的字符
  int indexOf(int ch):返回指定字符ch第一次出现处的索引
     注:此时参数和返回值都是int类型,而不是char类型
  int indexOf(String str , int fromIndex):返回指定字符串str第一次出现的索引
  String substring(int start) :从指定位置start开始截取字符串
  String substring(int start , int end):从指定开始位置到指定结束位置截取字符串

 <4>String的转换功能
   byte getBytes() :把字符串转换为字节数组
   char[] toCharArray():把字符串转换为字符数组
   static String valueOf(char[] chs):把字符数组转换为字符串
   static String valueOf(int i):把int型的数据转换为字符串
       注意:String类的valueOf()方法可以把任意类型的数据转换为字符串
   String toLowerCase():把字符串转成小写
   String toUpperCase():把字符串转成大写
   String concat(String str):把字符串拼接
   
 <5>其他功能:
    替换功能:
   String replace(char old, char new)
   String replace(String old , String new)
    去除字符串连续的两空格:
   String trim() ;

    按字典顺序比较两个字符串:
   int compareTo(String str)
   int compareToIgnoreCase(String str) //不区分大小写
    注:返回的int值是依次比较两个字符串中的每一位上的字符,相等就比较下一位,不同就把该位上的两个字符相减得到它们的ASCII值的差值。如果要比较的字符串是当前字符串的子串,即前n位都相同,那么返回长度的差值。
    我们可以从compareTo的源码中看到:
    

public int compareTo(String anotherString) {        int len1 = value.length;  //value就是当前字符串的char型数组,获取其长度        int len2 = anotherString.value.length; //获取要比较的字符串的长度        int lim = Math.min(len1, len2); //取两个长度中的最小值        char v1[] = value;   //转成字符数组        char v2[] = anotherString.value;//转成字符数组        int k = 0;        while (k < lim) {             char c1 = v1[k]; //获取当前字符串中下标为k的位上的字符            char c2 = v2[k]; //获取要比较的字符串中下标为k的位上的字符            if (c1 != c2) {                       return c1 - c2;   //两个字符不同的话就返回ASCII差值            }            k++;        }        return len1 - len2;   //如果前lim位都相同,则返回两个字符串的长度差    }

3、面试题
    String s = new String(“Hello”) 与 String s = “Hello”的区别是什么?
    答:前者会创建2个或者1个对象,后者会创建1个或者0个对象。如下图:这里写图片描述
    
4、

0 0
原创粉丝点击