Java基础类(四):String类

目录

1、String类里面常用的20个方法

1、和长度有关的方法

2、和数组有关的方法

3、和判断有关的方法

4、和改变内容有关的方法

5、和位置有关的方法

6、由基本数据型态转换成String

7、String 转换成 数字的基本数据类型

8、String与new String() 区别


1、String类里面常用的20个方法


1、和长度有关的方法

返回类型 方法名      作用

int        length()        得到一个字符串的字符个数(一个中文是一个字符,一个英文是一个字符,一个转义字符是一个字符)

2、和数组有关的方法

返回类型    方法名                     作用  

 byte[]       getBytes()           将一个字符串转换成字节数组

char[]        toCharArray()     将一个字符串转换成字符数组

String[]      split(String)        将一个字符串按照指定内容劈开

3、和判断有关的方法

返回类型       方法名                                         作用

boolean       equals(String)                        判断两个字符串的内容是否一模一样

boolean      equalsIgnoreCase(String)     忽略大小写的比较两个字符串的内容是否一模一样

boolean      contains(String)                     判断一个字符串里面是否包含指定的内容

boolean      startsWith(String)                   判断一个字符串是否以指定的内容开头

boolean       endsWith(String)                判断一个字符串是否以指定的内容结尾



4、和改变内容有关的方法

和改变内容有关的方法,都不会直接操作原本的字符串 而是将符合条件的字符串返回给我们,所以注意接收

返回类型    方法名                                      作用

String         toUpperCase()                    将一个字符串全部转换成大写

String        toLowerCase()                    将一个字符串全部转换成小写

String        replace(String,String)         将某个内容全部替换成指定内容

String        replaceAll(String,String)     将某个内容全部替换成指定内容,支持正则

String        repalceFirst(String,String)     将第一次出现的某个内容替换成指定的内容

String       substring(int)           从指定下标开始一直截取到字符串的最后

String       substring(int,int)       从下标x截取到下标y-1对应的元素 String trim() 去除一个字符串的前后空格



5、和位置有关的方法

返回类型    方法名                               作用

char          charAt(int)                得到指定下标位置对应的字符

int             indexOf(String)        得到指定内容第一次出现的下标

int           lastIndexOf(String)   得到指定内容最后一次出现的下标

6、由基本数据型态转换成String

String 类别中已经提供了将基本数据型态转换成 String 的 static 方法 ,也就String.valueOf() 这个参数多载的方法

1、String.valueOf(boolean b) : 将 boolean 变量 b 转换成字符串

2、String.valueOf(char c) : 将 char 变量 c 转换成字符串

3、String.valueOf(char[] data) : 将 char 数组 data 转换成字符串

4、String.valueOf(char[] data, int offset, int count) : 将 char 数组 data 中 由 data[offset] 开始取 count 个元素 转换成字符串

5、String.valueOf(double d) : 将 double 变量 d 转换成字符串

6、String.valueOf(float f) : 将 float 变量 f 转换成字符串

7、String.valueOf(int i) : 将 int 变量 i 转换成字符串

8、String.valueOf(long l) : 将 long 变量 l 转换成字符串

9、String.valueOf(Object obj) : 将 obj 对象转换成 字符串, 等于 obj.toString()

    int i = 10; 
  String str = String.valueOf(i); 
  这时候 str 就会是 "10" 

7、String 转换成 数字的基本数据类型

要将 String 转换成基本数据型态转 ,大多需要使用基本数据型态的包装类别
比如说 String 转换成 byte ,可以使用 Byte.parseByte(String s) ,这一类的方法如果无法将 s 分析 则会丢出 NumberFormatException

1、byte :        Byte.parseByte(String s) : 将 s 转换成 byte

2、byte :        Byte.parseByte(String s, int radix) : 以 radix 为基底 将 s 转换为 byte ,比如说 Byte.parseByte(“11”, 16) 会得到 17

3、double :    Double.parseDouble(String s) : 将 s 转换成 double

4、float :        Float.parseFloat(String s) : 将 s 转换成 float

5、int :           Integer.parseInt(String s) : 将 s 转换成 int

6、long :       Long.parseLong(String s)

8、String与new String() 区别

JVM为了提升性能和减少内存开销,避免字符串的重复创建,维护了一块特殊的内存空间——字符串实例池。

String赋值的两种方式。

1、String str = "test";

以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,

如果存在,直接把实例池中"test"的地址返回给str。如果不存在,则会在实例池中创建"test"对象,并把该对象的地址返回给str。

所以通过==比较是,str1,str2指向的是同一地址,所以返回true;

2、String str = new String("test");

以这种方式赋值时,JVM会先从字符串实例池中查询是否存在"test"这个对象,

若不存在则会在实例池中创建"test"对象,同时在堆中创建"test"这个对象,然后将堆中的这个对象的地址返回赋给引用str。

若实例池存在则直接在堆中创建"test"这个对象,然后将堆中的这个对象的地址返回赋给引用str。

这时str1和str2分别指向堆中不同的地址,所以返回false; 

面试题:用四种方法统计下面字符串"葡萄"出现的次数
public class Test01{
    public static void main(String[] args){
        String str = "吃葡萄不吐葡萄皮,不吃葡萄倒吐葡萄皮";
        //请用四种方法统计 葡萄 出现的次数
        //第一种
       /*String str1 = str.replace("葡萄"," ");
        char[] data = str1.toCharArray();
        int count = 0;
        for(char a : data){
            if(a == ' '){
                count++;
            }
        }
        System.out.println(count);*/

        //第二种
        /*int count = 0;
        int x = 0;

        while(x != -1){
            x = str.indexOf("葡萄");
            if(x != -1){
                count++;
                str = str.replaceFirst("葡萄","");
            }
        }
        System.out.println(count);*/
        //第三种
      /*  for(int x = 0; x < str.length() ; x++){
            if(str.contains("葡萄")){
                str = str.replaceFirst("葡萄","");
            }else{
                System.out.println(x);
                break;
            }
        }*/
        //第四种
        String[] data = str.split("葡萄");

        if(!str.endsWith("葡萄")){    //这里startsWith("葡萄")在split时,会在开头产生空串
            System.out.println(data.length -1);
        }else{
            System.out.println(data.length);
        }
        //第五种
        /*int count = 0;
        int x = 0;
        while(x != -1){
            x = str.indexOf("葡萄");
            if(x != -1){
                if((x+2) < str.length()){
                    str = str.substring(x+2);
                }
                count++;
            }
        }
        System.out.println(count);*/
        //第六种
        /*String str2 = str.replace("葡萄","");
        System.out.println((str.length() - str2.length())/2);*/
    }
}
  • 73
    点赞
  • 295
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值