栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Java-String类常用API

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Java-String类常用API

文章目录
  • 1、字符,字节与字符串
    • 1.1、字符数组与字符串之间互相转换
    • 1.2、字符串转换为字符
    • 1.3、字节数组转换成字符串
    • 1.4、字节串转换成字节数组
  • 2、字符串的比较
  • 3、字符串的查找
  • 4、字符串的替换
  • 5、字符串拆分
  • 6、字符串截取
  • 7、补充操作
  • 8、StringBuffer 和 StringBuilder

引言:JDK在String类中为我们提供了很多的方法,也就是API,下面我们列举一些常用的API,并结合一些代码实例去帮助这些API的用法。

1、字符,字节与字符串 1.1、字符数组与字符串之间互相转换

字符串内部包含一个字符数组,String 可以和 char[] 相互转换.

方法1:调用String类的构造方法,传入字符数组。

        //字符数字转换成字符串
        char[] ch=new char[]{'a','b','c'};
        String str=new String(ch);
        //abc

方法2:将字符数组中索引从offset位置开始,一共count个字符转换为字符串。

        char[] ch=new char[]{'a','b','c'};
        String str=new String(ch,0,1);
        System.out.println(str);
        //a
1.2、字符串转换为字符


方法1:获取index位置的字符

        char[] ch=new char[]{'a','b','c'};
        String str=new String(ch);
        char c=str.charAt(1);
        System.out.println(c);
        // b

方法2:将字符串转换为字符数组

        char[] ch=new char[]{'a','b','c'};
        String str=new String(ch);
        char[] ch2=str.toCharArray();
        System.out.println(Arrays.toString(ch2));
        //[a, b, c]
1.3、字节数组转换成字符串

字节常用于数据传输以及编码转换的处理之中,String 也能方便的和 byte[] 相互转换

方法1:将字节数组转变为字符串。

        byte[] be=new byte[]{97,98,99};
        String str= new String(be);
        System.out.println(str);
        //abc

方法2:从字节数组的offset索引开始,长度为length个元素转变为字符串

        byte[] be=new byte[]{97,98,99};
        String str=new String(be,0,2);
        System.out.println(str);
        //ab
1.4、字节串转换成字节数组


方法3:按照默认的编码(UTF-8)格式将字符串转变为字节数组保存

        byte[] be=new byte[]{97,98,99};
        String str=new String(be,0,2);
        byte[] be1=str.getBytes();
        System.out.println(Arrays.toString(be1));
        //[97, 98]

方法4:按照我们给定的编码格式进行转化

2、字符串的比较

上面使用过String类提供的equals()方法,该方法本身是可以进行区分大小写的相等判断。除了这个方法之外,String类还提供有如下的比较操作:

方法1:严格比较每一个字符的内容,大小写不同也不可以

        String str1="abc";
        String str2="abc";
        String str3="Abc";
        System.out.println(str1.equals(str2));
        System.out.println(str1.equals(str3));
       // true
       // false

方法2:不区分大小写的比较(在开发中常用在校验验证码)

        String str1="abc";
        String str2="abc";
        String str3="Abc";
        System.out.println(str1.equalsIgnoreCase(str3));//str3-str1
        //true

方法3:比较大小关系(字符通过相应的编码格式转变成int类型进行大小的比较,最后返回的也是一个整型)

        String str1="abc";
        String str2="abc";
        String str3="Abc";
        System.out.println(str1.compareTo(str3));
        //32
3、字符串的查找

从一个完整的字符串之中可以判断指定内容是否存在,对于查找方法有如下定义:

方法1:判断一个字符串是否存在

        String str="hello world";
        String s="hello";
        String s1="abc";
        String s2="r";
        System.out.println(str.contains(s));
        System.out.println(str.contains(s1));
        System.out.println(str.contains(s2));
        //true
        //false
        //true

方法2:从头开始查找,找到了则返回字符串第一个字符出现的位置,查不到则返回-1;

        String str="hello world";
        String s="hello";
        String s1="abc";
        String s2="r";
        String s3="llo";
        System.out.print(str.indexOf(s));
        System.out.print(str.indexOf(s1));
        System.out.print(str.indexOf(s2));
        System.out.print(str.indexOf(s3));
        // 0 -1 8 2

方法3:从指定位置开始查找

        String str="hello world";
        String s2="r";
        System.out.print(str.indexOf(s2,4));
        System.out.print(str.indexOf(s2,9));
        System.out.print(str.indexOf(s2,8));
        //8 -1 8

方法6:判断字符串是否以指定字符开头

        String str="hello world";
        String s="hello";
        String s1="abc";
        String s2="r";
        System.out.println(str.startsWith(s));
        System.out.println(str.startsWith(s1));
        System.out.println(str.startsWith(s2));
        // true false false

方法8:判断字符串是否以指定字符结尾

        String str="hello world";
        String s="hello";
        String s1="abc";
        String s2="d";
        System.out.println(str.endsWith(s));
        System.out.println(str.endsWith(s1));
        System.out.println(str.endsWith(s2));
        // false false true
4、字符串的替换

使用一个指定的新的字符串替换掉已有的字符串数据,可用的方法如下:

方法1:替换所有的指定内容

        String str="aaacbdeeee";
        String str1=str.replaceAll("a","e" );
        System.out.println(str1);
        //eeecbdeeee       

方法2:替换首个内容

        String str="aaacbdeeee";
        String str1=str.replaceFirst("a","_" );
        System.out.println(str1);
        //_aacbdeeee
5、字符串拆分

可以将一个完整的字符串按照指定的分隔符划分为若干个子字符串。

方法1:将字符串按照给定的格式拆分
例如:将字符串从空格位置拆分

        String str="hello world";
        System.out.println(Arrays.toString(str.split(" ")));
        //[hello, world]

当不给定格式时,就将字符串的每个字符都拆分成一个字符元素

        String str="hello world";
        System.out.println(Arrays.toString(str.split("")));
        //[h, e, l, l, o,  , w, o, r, l, d]

方法2:拆分成长度为limit的数组

        String str="hello world";
        System.out.println(Arrays.toString(str.split("",2)));
        //[h, ello world]
        String str="hello world";
        System.out.println(Arrays.toString(str.split(" ",2)));
        //[hello, world]

注意:
拆分是特别常用的操作. 一定要重点掌握. 另外有些特殊字符作为分割符可能无法正确切分, 需要加上转义
示例:拆分IP地址:

String str = "192.168.1.1" ; 
String[] result = str.split("\.") ; 
for(String s: result) { 
 System.out.println(s); 
}
6、字符串截取

从一个完整的字符串之中截取出部分内容。

        String str = "helloworld" ;
        System.out.println(str.substring(5));
        System.out.println(str.substring(0, 5));
        //world
        //hello

截取过程中注意区间是左闭右开的

7、补充操作


注意这些方法是由之后都需要一个变量去保存返回的地址,原指向的对象内容不会变。
方法1:

        String str = " hello world " ;
        System.out.println("["+str+"]");
        System.out.println("["+str.trim()+"]");
        //[ hello world ]
        //[hello world]

方法2:会将字符串中的所有小写字母转化成大写字母

        String str = " hEllo world " ;
        String str1=str.toUpperCase();
        System.out.println(str1);
        // HELLO WORLD 

方法3:会将所有字符串转变成小写

        String str = "HeLLO WORLD " ;
        String str1=str.toLowerCase(Locale.ROOT);
        System.out.println(str1);
        //hello world 

方法5:字符串的链接,但是链接的结果不入常量池

        String str = "HeLLO WORLD " ;
        String str1="lizhelin";
        System.out.println(str.concat(str1));
        //HeLLO WORLD lizhelin
8、StringBuffer 和 StringBuilder

首先来回顾下String类的特点:
任何的字符串常量都是String对象,而且String的常量一旦声明不可改变,如果改变对象内容,改变的是其引用的指向而已。
通常来讲String的操作比较简单,但是由于String的不可变性,为了方便字符串的修改,提供StringBuffer和StringBuilder类。
StringBuilder类和StringBuffer类使用起来语法是相同的。
在String中使用"+"来进行字符串连接,但是这个操作在StringBuilder类中需要更改为append()方法:

public synchronized StringBuilder append(各种数据类型 b) 

范例:观察StringBuffer使用

public class Test{ 
 public static void main(String[] args) { 
 StringBuilder sb = new StringBuilder(); 
 sb.append("Hello").append("World"); 
 fun(sb); 
 System.out.println(sb); 
 } 
 public static void fun(StringBuilder temp) { 
 temp.append("n").append("www.bit.com.cn"); 
 } 
}
//HelloWorld www.bit.com.cn

StringBuilder类中也提供了很多的字符串操作的方法:

方法1:字符串反转

public synchronized StringBuilder reverse() 

方法2:删除指定范围的数据:

public synchronized StringBuilder delete(int start, int end) 

方法3:插入数据

public synchronized StringBuilder insert(int offset, 各种数据类型 b)

面试题:请解释String、StringBuffer、StringBuilder的区别:
1、String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
2、StringBuffer是线程安全的操作,性能较差;StringBuilder是线程不安全,性能较高。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/873604.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号