Java之初识String类(二)

字符、字节和字符串的相互转换

字符和字符串的相互转换

字符串的内部包含字符数组,故字符数组char[ ]和字符串String相互转换。

描述方法名称
字符数组全部转换字符串public String(char value[])
字符数组部分转换字符串public String(char value[],offset,count)
获取一个字符串中指定位置的字符,下标从0开始public char charAt()
将字符串变为字符数组返回public char[] toCharArray()
  1. 字符数组转换字符串
    示例:
public class Test2 {
    public static void main(String[] args) {
        //字符数组的所有内容转字符串
        char[] value = {'s','h','i','A','l','e','n','g','y','a'};
        String str1 = new String(value);
        System.out.println(str1);    //shiAlengya
        System.out.println(new String(value));   //shiAlengya
        
        //字符数组的部分内容转换字符串
        //value表示要转换的数组,3表示从下标为3的位置开始转换,5表示共转换5个字符
        String str2 = new String(value,3,5);  //Aleng
        System.out.println(str2);
}
  1. 获取一个字符串中指定位置的字符,下标从0开始
    示例:
public class Test2 {
    public static void main(String[] args) {
        //获取指定位置的字符
        String string1 = "alengya";
        char ch = string1.charAt(1);  //读取1位置的字符,下标从0开始
        System.out.println(ch);
    }
}
  1. 将字符串变为字符数组返回
  • 以字符串的形式输出字符数组;
  • 遍历字符数组,将数组中的字符一个一个的输出
    示例:
public class Test2 {
    public static void main(String[] args) {
        //将字符串变为字符数组返回
        char[] chars = string1.toCharArray();
        System.out.println(Arrays.toString(chars)); //以字符串的形式输出chars数组    
        //遍历chars数组,将在数组中的字符一个一个的输出
        for (int i = 0;i<chars.length;i++){  
            System.out.print(chars[i]+" ");
        }
        System.out.println();
}
  1. 判断字符串是否全由数字所组成
    思路:先将字符串转换成字符数组,再遍历字符数组判断字符是否为数字。
    示例:
public class Test2 {
	public static boolean isNum(String str){
        char[] cha = str.toCharArray();
        for (int i = 0;i<cha.length;i++){
            if (cha[i]<'0'|| cha[i]>'9'){
                return false;
            }
        }
        return true;
    }
    public static void main(String[] args) {
     	String string = "Aleng21";
        System.out.println(isNum(string));   //false
    }  
}

字节和字符串的相互转换

描述方法名称
字节数组全部转换字符串public String(byte bytes[])
部分字节数组转换字符串public String(byte bytes[],offset,count)
将字符串变为字节数组返回public char[] getByte()

示例:

public class Test2 {
      public static void main(String[] args) {
        String str = "WoDeAleng" ;
        // 字符串String 转 字节数组byte[]
        byte[] bytes = str.getBytes();
        for (int i = 0; i<bytes.length;i++){
            System.out.print(bytes[i]+" ");
        }
        System.out.println();
        // 字节数组byte[] 转 字符串String
        System.out.println(new String(bytes));

        //字节数组的部分内容转换字符串
        String str = new String(bytes,4,5);  //Aleng
        System.out.println(str);
        
        //将字符串变为字符数组返回
        String string1 = "alengya";
        byte[] bytes1 = string1.getBytes();
        System.out.println(Arrays.toString(bytes1));
        for (int i = 0;i<bytes1.length;i++){
            System.out.print(bytes1[i]+" ");
        }
        System.out.println();
    }
}

小结:
char[ ]:是将字符串String按照一个字符一个字符的处理,适合针对文本操作;
byte[ ]:是将字符串String按照一个字节一个字节的处理,适合针对二进制操作。

字符串的常见操作

字符串比较

描述方法名称
区分大小写比较public boolean equals(Object anObject)
不区分大小写比较public boolean equalsIgnoreCase(String anotherString)
比较两个字符串的大小关系public int compareTo(String anotherString)

示例:

public class Handle {
    public static void main(String[] args) {
        String str1 = "aleng";
        String str2 = "Aleng";
        //区分大小写比较
        System.out.println(str1.equals(str2));   //false
        //不区分大小写比较
        System.out.println(str1.equalsIgnoreCase(str2));  //true
        //比较两个字符串的大小关系 
        System.out.println("a".compareTo("A"));  //32
        System.out.println("A".compareTo("a"));  //-32
    }
}

字符串查找

描述方法名称
判断一个字符串是否存在public boolean contains(CharSe)
从开始查找指定字符串的位置public int indexOf(String str)
从指定位置开始查找子字符串的位置public int indexOf(String str,int fromIndex)
从后向前查找子字符串的位置public int lastIndexOf(String str)
从指定位置由后向前查找public int lastIndexOf(String str, int formIndex)
判断是否由指定字符串开头public boolean startWith(String str)
从指定位置开始判断是否由指定字符串开头public boolean startWith(String str,int toffset)
判断是否由指定字符串结尾public boolean endWith(String str)

示例:

public class Handle {
    public static void main(String[] args) {
        /*字符串查找*/
        //判断一个字符串是否存在
        String string = "xuanaleng";
        System.out.println(string.contains("a"));      //true
        //从开始查找指定字符串的位置
        String str1 = "aleng";
        String str2 = "cheng";
        System.out.println(string.indexOf(str1));        //4
        System.out.println(string.indexOf(str2));        //-1
        //从指定位置开始查找子字符串的位置
        System.out.println(string.indexOf(str1, 3));   //4
        System.out.println(string.indexOf(str1, 5));   //-1
        //从后向前查找子字符串的位置
        System.out.println(string.lastIndexOf(str1));  //4
        //从指定位置由后向前查找
        System.out.println(string.lastIndexOf(str1, 3));   //-1
        System.out.println(string.lastIndexOf(str1, 8));    //4

        System.out.println(string.startsWith("a"));  //false
        System.out.println(string.startsWith("xuan"));  //true

        System.out.println(string.startsWith(str1, 4));   //true

        System.out.println(string.endsWith(str1));   //true
        System.out.println(string.endsWith("cheng"));
    }

}

字符串替换

描述方法名称
替换所有的指定内容public String replaceAll(String regex,String replacement)
替换首个内容public String replaceFirst(String regex,String replacement)

示例:

public class Handle {
    public static void main(String[] args) {
        /*字符串替换*/
        String reg = "loveyou";
         //替换所有的指定内容 
        System.out.println(reg.replaceAll("o", "i"));  //liveyiu
        //替换首个内容
        System.out.println(reg.replaceFirst("o", "i"));  //liveyou
    }
}

字符串拆分

描述方法名称
将字符串全部拆分public String[] split(String regex)
将字符串部分拆分,该数组长度就是limit极限public String[] split(String regex,int limit)

示例:

public class Handle {
    public static void main(String[] args) {
        /* 字符串拆分*/   
        String string1 = "woideiailengiduidu";
        //将字符串全部拆分
        String[] ret = string1.split("i");
        System.out.println(Arrays.toString(ret));   //[wo, de, a, leng, du, du]  
        //将字符串部分拆分,该数组长度就是limit极限
        String[] ret1 = string1.split("i",3);  
        System.out.println(Arrays.toString(ret1));  //[wo, de, ailengiduidu]
    }
}

字符串截取

描述方法名称
从指定索引截取到结尾public String subString(int beginIndex)
截取部分内容public String subString(int beginIndex,int endIndex)
public class Handle {
    public static void main(String[] args) {
        /*字符串截取*/
        //从指定索引截取到结尾
        String ret3 = string1.substring(7);
        System.out.println(ret3);
        //截取部分内容
        String ret4 = string1.substring(8,12);  //左开右闭,从8位置开始到12不包含12    
        System.out.println(ret4);
    }
}

其他操作方法

描述方法名称
去掉左右空格,不包含中间空格public String trim()
字符串转大写public String toUpperCase()
字符串转小写public String toLowerCase()
字符串入池操作public native String intern(byte bytes[])
字符串连接,等同于+,不入池public String cocat(String str)
取得字符串长度public int length()
判断是否为空字符串,但不是null,而是长度为0public boolean isEmpty()
public class Handle {
    public static void main(String[] args) {
        /*其他操作方法*/
        //|去掉左右空格,不包含中间空格
        String string3 = " aleng du du";
        String string4 = " Hello World";
        System.out.println(string3.trim());  //aleng du du

        // 字符串转大写
        System.out.println(string3.toUpperCase());  //ALENG DU DU

        // 字符串转小写
        System.out.println(string4.toLowerCase());  //hello world
        // 字符串入池操作
        string4.intern();
        String string5 = " Hello World";
        System.out.println(string4 == string5);   //true   判断 Hello World是否入池    
        // 字符串连接,等同于+,不入池
        System.out.println(string3.concat(string4));   // aleng du du Hello World

        // |取得字符串长度|public char[] getByte()
        System.out.println(string3.length());    //12
        // 判断是否为空字符串,但不是null,而是长度为0
        System.out.println(string3.isEmpty());   //false
    }
}

String和StringBuffer

任何字符串都是String对象,String的常量是不可变的,如果改变对象的内容则只是改变引用的指向;
而为了方便的修改字符串,提供了StringBuffer类。
String通常使用“+”进行字符串连接,而在StringBuffer类中使用append()方法即可完成操作。

public class Handle {
    public static void main(String[] args) {
        
        StringBuffer stringBuffer = new StringBuffer("hello");
        //使用append()方法对字符串进行修改操作
        System.out.println(stringBuffer.append("world"));
        //System.out.println(stringBuffer.reverse());
    }
}

String和StringBuffer最大的区别在于:String类内容不可修改,StringBuffer类的内容可以修改。
StringBuffer类还有一些字符串反转、删除和插入等操作。
字符串反转调用StringBuffer类的reverse()方法。

public class Handle {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("hello");
        //使用reverse()方法使字符串反转
        System.out.println(stringBuffer.reverse());
    }
}

删除指定范围的字符操作

public class Handle {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("helloworld");
        //使用delete()方法删除指定范围字符
        System.out.println(stringBuffer.delete(5,9));
    }
}

插入数据

public class Handle {
    public static void main(String[] args) {
        StringBuffer stringBuffer = new StringBuffer("helloworld");
        //使用delete()方法删除指定范围字符
        System.out.println(stringBuffer.insert(0,"你好哇,"));
    }
}
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值