Java中的String的一些常用方法

家人们好!

字符, 字节与字符串

字符与字符串

获取指定位置的字符

public static void main(String[] args) {
        String str = "hello" ;
        System.out.println(str.charAt(0)); // 下标从 0 开始
    }

在这里插入图片描述

如果超过了应有的长度:

 public static void main(String[] args) {
        String str = "hello" ;
        System.out.println(str.charAt(10)); // 下标从 0 开始
    }

在这里插入图片描述

字符串与字符数组的转换

public static void main(String[] args) {
        String str = "helloworld" ;
// 将字符串变为字符数组
        char[] data = str.toCharArray() ;
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+" ");
        }

在这里插入图片描述

public static void main(String[] args) {
        String str = "helloworld" ;
        char[] data = str.toCharArray() ;
        // 字符数组转为字符串
       System.out.println(new String(data)); // 全部转换
        System.out.println(new String(data,5,5)); // 部分转换
    }

在这里插入图片描述

给定字符串一个字符串, 判断其是否全部由数字所组成

思路: 将字符串变为字符数组而后判断每一位字符是否是" 0 “~”‘9’"之间的内容,如果是则为数字

public static void main(String[] args) {
            String str = "1a23456" ;
            System.out.println(isNumber(str)? "字符串由数字所组成!" : "字符串中有非数字成员!");
        }
        public static boolean isNumber(String str) {
            char[] data = str.toCharArray() ;
            for (int i = 0; i < data.length; i++) {
                if (data[i]<'0' || data[i]>'9') {
                    return false ;
                }
            }
            return true ;
    }

在这里插入图片描述

字节与字符串

实现字符串与字节数组的转换处理

 public static void main(String[] args) {
        String str = "helloworld" ;
// String 转 byte[]
        byte[] data = str.getBytes() ;
        for (int i = 0; i < data.length; i++) {
            System.out.print(data[i]+" ");
        }
// byte[] 转 String
        System.out.println(new String(data));
    }

在这里插入图片描述

字符串常见操作

字符串比较

不区分大小写比较

public static void main(String[] args) {
        String str1 = "hello" ;
        String str2 = "Hello" ;
        System.out.println(str1.equals(str2)); // false
        System.out.println(str1.equalsIgnoreCase(str2)); // true
    }

在这里插入图片描述

观察compareTo()比较

在String类中compareTo()方法是一个非常重要的方法,该方法返回一个整型,该数据会根据大小关系返回三类内容:

1. 相等:返回0.
2. 小于:返回内容小于0.
3. 大于:返回内容大于0.

public static void main(String[] args) {
        System.out.println("A".compareTo("a")); // -32
        System.out.println("a".compareTo("A")); // 32
        System.out.println("A".compareTo("A")); // 0
        System.out.println("AB".compareTo("AC")); // -1
        System.out.println("刘".compareTo("杨"));
    }

在这里插入图片描述compareTo()是一个可以区分大小关系的方法,是String方法里是一个非常重要的方法。

字符串的比较大小规则, 总结成三个字 “字典序” 相当于判定两个字符串在一本词典的前面还是后面. 先比较第一个字符的大小(根据 unicode 的值来判定), 如果不分胜负, 就依次比较后面的内容

字符串查找

字符串查找,最好用最方便的就是contains()

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.contains("world")); // true
    }

在这里插入图片描述

使用indexOf()方法进行位置查找

 public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.indexOf("world")); // 5,w开始的索引
        System.out.println(str.indexOf("bit")); // -1,没有查到
        if (str.indexOf("hello") != -1) {
            System.out.println("可以查到指定字符串!");
        }
    }

在这里插入图片描述
现在基本都是用contains()方法完成。
使用indexOf()需要注意的是,如果内容重复,它只能返回查找的第一个位置…

使用indexOf()的注意点

String str = "helloworld" ; 
System.out.println(str.indexOf("l")); // 2 
System.out.println(str.indexOf("l",5)); // 8 
System.out.println(str.lastIndexOf("l")); // 8

在这里插入图片描述在进行查找的时候往往会判断开头或结尾。

判断开头或结尾

 public static void main(String[] args) {
        String str = "**@@helloworld!!" ;
        System.out.println(str.startsWith("**")); // true
        System.out.println(str.startsWith("@@",2)); // ture
        System.out.println(str.endsWith("!!")); // true
    }

在这里插入图片描述

字符串替换

字符串的替换处理

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.replaceAll("l", "_"));
        System.out.println(str.replaceFirst("l", "_"));
    }

在这里插入图片描述

注意事项: 由于字符串是不可变对象, 替换不修改当前字符串, 而是产生一个新的字符串.

字符串拆分

实现字符串的拆分处理

public static void main(String[] args) {
        String str = "hello world hello bit" ;
        String[] result = str.split(" ") ; // 按照空格拆分
        for(String s: result) {
            System.out.println(s);
        }
    }

在这里插入图片描述

字符串的部分拆分

public static void main(String[] args) {
        String str = "hello world hello bit" ;
        String[] result = str.split(" ",2) ;
        for(String s: result) {
            System.out.println(s);
        }
    }

在这里插入图片描述

拆分IP地址

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

  public static void main(String[] args) {
        String str = "192.168.1.1";
        String[] strings = str.split("\\.",7);
        for (String s:strings) {
            System.out.println(s);
        }
        System.out.println("=================");
        String str2 = "192\\168\\1\\1";
        strings = str2.split("\\\\",7);
        for (String s:strings) {
            System.out.println(s);
        }

    }

在这里插入图片描述

注意事项:

  1. 字符“|”, “*”, “+”都得加上转义字符,前面加上" \ ".
  2. 而如果是"“,那么就得写成” \ \ ".
  3. 如果一个字符串中有多个分隔符,可以用"|"作为连字符.

多次拆分

public static void main(String[] args) {
        String str = "name=zhangsan&age=18" ;
        String[] result = str.split("&") ;
        for (int i = 0; i < result.length; i++) {
            String[] temp = result[i].split("=") ;
            System.out.println(temp[0]+" = "+temp[1]);
        }

在这里插入图片描述

这种代码在以后的开发之中会经常出现

字符串截取

观察字符串截取

public static void main(String[] args) {
        String str = "helloworld" ;
        System.out.println(str.substring(5));
        System.out.println(str.substring(0, 5));
    }

在这里插入图片描述

注意事项:

  1. 索引从0开始
  2. 注意前闭后开区间的写法, substring(0, 5) 表示包含 0 号下标的字符, 不包含 5 号下标

其他操作方法

观察trim()方法的使用

 public static void main(String[] args) {
        String str = "    abc     defg     ";
        String ret = str.trim();
        System.out.print(ret);
        System.out.println("==============");

    }

在这里插入图片描述

trim 会去掉字符串开头和结尾的空白字符(空格, 换行, 制表符等).

大小写转换

public static void main(String[] args) {
        String str = " hello%$$%@#$%WORLD 哈哈哈 " ;
        System.out.println(str.toUpperCase());
        System.out.println(str.toLowerCase());
    }

在这里插入图片描述

这两个函数只转换字母

字符串length()

public static void main(String[] args) {
        String str = " hello%$$%@#$%world 哈哈哈 " ;
        System.out.println(str.length());
    }

在这里插入图片描述

注意:数组长度使用数组名称.length属性,而String中使用的是length()方法

观察isEmpty()方法

System.out.println("hello".isEmpty()); 
System.out.println("".isEmpty()); 
System.out.println(new String().isEmpty());

在这里插入图片描述

首字母大写

String类并没有提供首字母大写操作,需要自己实现

public static void main(String[] args) { 
 System.out.println(fistUpper("yuisama")); 
 System.out.println(fistUpper("")); 
 System.out.println(fistUpper("a")); 
 } 
 public static String fistUpper(String str) { 
 if ("".equals(str)||str==null) { 
 return str ; 
 } 
 if (str.length()>1) { 
 return str.substring(0, 1).toUpperCase()+str.substring(1) ; 
 } 
 return str.toUpperCase() ; 
 }

在这里插入图片描述

观察StringBuffer使用

 public static void main(String[] args) { 
 StringBuffer sb = new StringBuffer(); 
 sb.append("Hello").append("World"); 
 fun(sb); 
 System.out.println(sb); 
 } 
 public static void fun(StringBuffer temp) { 
 temp.append("\n").append("how are you?"); 
 } 

在这里插入图片描述

String和StringBuffer最大的区别在于:String的内容无法修改,而StringBuffer的内容可以修改。频繁修改字符串的情况考虑使用StingBuffer。

注意:String和StringBuffer类不能直接转换。如果要想互相转换,可以采用如下原则:

String 变为 StringBuffer:利用StringBuffer的构造方法或append()方法
StringBuffer 变为 String:调用toString()方法。
除了append()方法外,StringBuffer也有一些String类没有的方法

字符串反转:

StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.reverse());

在这里插入图片描述

删除指定范围的数据:

StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.delete(5, 10));

在这里插入图片描述

插入数据:

StringBuffer sb = new StringBuffer("helloworld"); 
System.out.println(sb.delete(5, 10).insert(0, "你好"));

在这里插入图片描述拓展:
请解释String、StringBuffer、StringBuilder的区别:

一: String的内容不可修改,StringBuffer与StringBuilder的内容可以修改.
二: StringBuffer与StringBuilder大部分功能是相似的.
三: StringBuffer采用同步处理,属于线程安全操作;而StringBuilder未采用同步处理,属于线程不安全操作.

看完记得点赞哟!

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

粉色的志明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值