String常用方法

1.构造方法

String类有特别多个构造方法,下述两个我们已经使用过了:

new String();
new String("字符串内容");

String类还支持使用byte和char类型的数组来实例化对象:

  • (1)byte []

    • String(byte[] bytes)

      byte [] bytes= {97,98,99};
      String s = new String(bytes);	//将byte数组做为参数实例化字符串对象
      System.out.println(s);	//会将byte数组中的值转换为Unicode字符集中对应的字符
      
      //输出结果为:abc
      
    • String(byte[] bytes, int offset, int length)

      byte [] bytes= {97,98,99};
      String s = new String(bytes,1,2);	//第一个参数为byte[],第二个为起始数据下标,第三个参数为长度
      System.out.println(s);
      
      //输出结果为:bc
      
  • (2)char[](与byte类似)

    • String(char[] value)

      char[] chars= {'我','爱','中','国'};
      String s1 = new String(chars);	//将char数组做为参数实例化字符串对象
      System.out.println(s1);	//直接输出
      
      //输出结果为:我爱中国
      
    • String(char[] value, int offset, int count)

      char[] chars= {'我','爱','中','国'};
      String s1 = new String(chars,1,3);	//第一个参数为char[],第二个为起始数据下标,第三个参数为长度
      System.out.println(s1);
      
      //输出结果为:爱中国
      

      还有其它构造方法,可在api文档中查阅。

2.普通方法

  • char charAt(int index)

    //返回字符串中指定下标的字符
    
    char c = "hello".charAt(1);
    System.out.println(c);	//结果为:e
    
  • int indexOf(String str)

(不知道为什么排版调不过去Q_Q)

//返回字符串中指定下标的字符

//返回字符串中指定字符的下标(第一个)

System.out.println("hello".indexOf("l"));	//结果为:2
  • int lastIndexOf(String str)
//返回字符串中指定字符的下标(最后一个)

System.out.println("hello".lastIndexOf("l"));	//结果为:3
  • int compareTo(String anotherString)

    //按字典顺序比较两个字符串
    //两个字符串相等则比较结果为0
    //比较到不相同的第一个字符将不再进行比较,若前面的字符比后面的大,则结果为1,若前面的字符比后面的小,则结果为-1
    
    System.out.println("abc".compareTo("abc")); //0,相等
    System.out.println("abd".compareTo("abc")); //1,d>c
    System.out.println("abc".compareTo("abd")); //-1,c<d
    
  • **int compareToIgnoreCase(String str) **

    //同上compareTo,但是忽略大小写
    
    System.out.println("aBc".compareToIgnoreCase("Abc")); //0
    System.out.println("Abd".compareToIgnoreCase("aBc")); //1
    System.out.println("abC".compareToIgnoreCase("abD")); //-1
    
  • boolean equals(Object anObject)

    //比较两个字符串的内容是否相等,相等为treu,不相等则为false
    
    System.out.println("abc".equals("abc")); //true
    System.out.println("abd".equals("abc")); //false
    System.out.println("abc".equals("abd")); //false
    
  • boolean contains(CharSequence s)

    //字符串中是否包含某个子串
    
     System.out.println("Hello.java".contains(".java")); //true
    
  • **boolean startsWith(String prefix) **

    //是否以什么开头
    
    System.out.println("https://www.baidu.com".startsWith("https"));	//true
    
  • **boolean endsWith(String suffix) **

    //是否以什么结尾
    	
    System.out.println("Hello.java".endsWith(".java"));		//true
    
  • int length()

    //返回字符串的长度(包含空格和tab,一个空格算1,一个tab算2)
    
    System.out.println("  hello world".length());	//13
    
  • boolean isEmpty()

    //判断字符串是否为""(注意区别于null)
    
    System.out.println("".isEmpty());   //true
    System.out.println("a".isEmpty());  //false
    
  • String replace(CharSequence target, CharSequence replacement),也可是char

    //用新的字符串代替原字符串中的子串
    
    String s = "http://www.baidu.com".replace("http", "https");
    System.out.println(s);	//https://www.baidu.com
    
    //只要符合的子串都替换
    String s1 = "http://www.baidu.com.http".replace("http", "https");
    System.out.println(s1);	//https://www.baidu.com.https
    
  • **String[] split(String regex) **

    //以regex作为分隔符分割字符串,以数组接收
    
    String[] s1 = "2021-01-24".split("-");
    for (String s2 : s1) {
        System.out.print(s2+"\t");	//输出:2021	01	24	
    }
    
  • String substring(int beginIndex) ,有重载,(int beginIndex,int endIndex),前开后闭[ )

    //返回指定下标该字符串的子串
    
    System.out.println("hello".substring(1));	//ello
    System.out.println("hello".substring(1,3));	//el
    
  • String toLowerCase()

    //将字符串中所有的大写字母转换成小写
    
     System.out.println("helloWORLD".toLowerCase()); //helloworld
    
  • String toUpperCase()

    //将字符串中所有的大写字母转换成大写
    
    System.out.println("helloWORLD".toUpperCase()); //HELLOWORLD
    
  • String trim()

    //删除任何前导和尾随空格
    
    System.out.println("  hello  world  ".trim());  //hello  world
    
  • byte[] getBytes()

    //将字符串中的每个字符一个一个转换成对应的Unicode编码表里的值,并存在byte[]中
    
    byte[] bytes = "hello".getBytes();
    for (byte aByte : bytes) {
        System.out.print(aByte+"\t");	//输出:104 101 108 108 111
    }
    
  • char toCharArray()

    //将字符串中的每个字符一个一个存在char[]中
    
    char[] chars = "hello".toCharArray();
    for (char aChar : chars) {
        System.out.print(aChar+"\t");	//输出:h e e l o
    }
    
  • String toString()

    //输出字符串对象的:全限定包名 类名 @ 哈希码值
    //直接输出字符串与字符串对象调用toString()同
    

3. 静态方法

  • String String.valueof(各个类型的参数)

    //将其它数据类型转换为String类型
    
    //虽然输出结果与参数一致,但是数据类型已经变成了String
    System.out.println(String.valueOf(true));	//输出true
    System.out.println(String.valueOf(1));		//输出1
    System.out.println(String.valueOf(10.10));	//输出10.10
    
    //参数为对象
    System.out.println(String.valueOf(new StringDemo05()));	//输出com.dh.string.StringDemo05@38082d64
    

    解析:

    valueOf()的本质调用的是Object中的toString方法,所以参数为对象时,输出的是getClass()+@+hashCode();

    所以要想输出对象的属性,就需要在类StringDemo05中重写toString()。


以上方法是比较常用的,并不是全部,以上介绍的一些方法中也还有一些别的重载,可以自行查阅api文档~

posted @ 2021-01-24 15:32  deng-hui  阅读(127)  评论(0编辑  收藏  举报