Java与众不同的字符串-String类

首先,无论你学习什么编程语言,是不是感觉都是从”Hello World!“开始写起的,而Hello World!本身就是一个字符串,从定义上来说就是字符串就是由一个或者多个字符组成的有序数列,简单来说就是一串字符,亦或者可以理解为就是一段text。

String对象的创建

字符串的创建,分为两种,一种是通过变量直接创建,另一种实例化对象,由于String本身就是一个对象,可以直接通过实例化对象的形式来创建。

第一种,通过变量的形式直接创建
String 变量名 = 字符串;
String DataName = characterString

        //通过变量的形式创建字符串
        String DataName = characterString
        String str1 = "Hello World!";
        System.out.print(str1);

第二种,通过实例化对象的形式来创建
String 对象名 = new String();
String objectName = new String();

       //实例化对象
       String objectName = new String();
        String str2 = new String();

获取字符串的长度

获取字符串的长度的方法和获取数组长度无异,都是使用length()方法

        //获取字符串长度
        System.out.println(str1.length());
        结果:
        字符串长度为:12

字符串查找

按照平常思维,查找字符串,无疑是查找指定位置的字符,或者是查找一个字符在什么位置,简单来理解就是到什么位置去找某人,某人在什么位置。

找到指定位置的字符

跟数组一样我们也可以把一串字符看成一个有多个字符组成的数组,而每个字符都有一个索引值,索引值从零开始。

        //获取指定位置的字符
        System.out.println("字符串下标为5的字符为:"+str1.charAt(6));
结果:
字符串下标为5的字符为:W

找到指定字符所在的位置

查找指定字符所在的位置,使用的是indexOf()方法,它有几个传入值,
indexOf(String str,int indexfrom);第一个属性值是需要查找的字符,第二个属性值是开始查找的索引值
indexOf(int ch , int indexfrom);第一个属性值是需要查找的字符,第二个属性值是开始查找的索引值
另一点就是,如果查找的字符不属于该字符串,则放回-1;
相同的还有一个获取最后一次字符出现的位置,使用的是lastIndexOf()

        //获取指定字符所在的位置
        //获取第一次出现的位置
        System.out.println("查找字符所在位置为:"+str1.indexOf("a"));//查找一个不存在于字符串中的字符
        System.out.println("查找字符所在位置为:"+str1.indexOf("e"));
        System.out.println("查找字符所在位置为:"+str1.indexOf('o',5));
        //获取最后一次出现的位置
        System.out.println("查找字符所在位置为:"+str1.lastIndexOf("o"));
结果:
查找字符所在位置为:-1
查找字符所在位置为:1
查找字符所在位置为:7
查找字符所在位置为:7

字符串截取

字符串截取就是在一个字符串中截取从一个字符到另一个字符之间的所有字符,
方法为substring(int beganIndex,int endIndex);这里是索引值,输入的属性值是其字符所对应的索引值即下标,但是不包括endIndex字符。额外了解,substring是计算机专业词汇,字串的意思,子字符串。

        //字符串截取
        System.out.println(str1.substring('e','o'));
结果:
o Wor

字符串切割

切割的单词是split,而字符串切割使用的刚好就是split()方法,将字符串切割为字符子串。
split(String regex,int limit);第一个参数regex就是切割的判断字符,以什么为切割的字符标准。第二个参数事实上是一个限制标准,limit,但使用这个参数会改变字符串的长度。

另外一个就是将字符串切割为byte数组,在实际工作中,网络上的数据传输就是使用二进制字节数据。因此字符串和字节数组之间的相互转换也很常用。
这里使用的就是getBytes()方法,也很好理解,就是get获取,bytes字节,获取字节。

        //字符串切割
        //切割为字符串数组
        String newstr1 = "Considering the above-mentioned";
        String[] stringArray = newstr1.split(" ",5);//将newstr1字符串切割并赋值给字符数组stringArray
        for (String str3:stringArray)//通过for each循环遍历数组
        {
            System.out.print(str3+"\t");
        }
        //
        System.out.println("\n将字符串转换为byte数组:");
        // 将字符串转换为字节数组
        byte[] ascii = newstr1.getBytes();
        // 遍历字节数组,打印每个元素
        for (byte aByte : ascii) {
            System.out.print(aByte + "\t");
        }
结果:
Considering	the	above-mentioned	
将字符串转换为byte数组:
67	111	110	115	105	100	101	114	105	110	103	32	116	104	101	32	97	98	111	118	101	45	109	101	110	116	105	111	110	101	100	

字符串大小写切换

字符串大小写切换,很容易想到,两种切换,大写转换为小写,小写转换为大写。
字符串转换为小写:toLowerCase()方法。
字符串转换为大写:toUpperCase()方法。

        //字符串大小写转换
        String firstString = "As we have ofen said:It is never too old to learn";
        String s = firstString.toLowerCase();
        System.out.println("\n转换为小写后:"+s);
        String secoundString = "A girl who loves to lough won't have too much lack";
        String s1 = secoundString.toUpperCase();
        System.out.println("转换为大写后:"+s1);
结果:
转换为小写后:as we have ofen said:it is never too old to learn
转换为大写后:A GIRL WHO LOVES TO LOUGH WON'T HAVE TOO MUCH LACK

字符串比较

字符串比较不要使用==,在String有专用的方法,boolean equals(Object object)方法,来比较字符串内容是否相同,返回一个布尔类型的结果。另外,在比较字符串内容是否相同时,必须使用 equals() 方法。

        // 用两种方法创建三个内容相同的字符串
        String str12 = "hello";
        String str22 = "hello";
        String str33 = new String("hello");
        System.out.println("使用equals()方法比较str12和str22的结果为:" + str12.equals(str22));
        System.out.println("使用==运算符比较str12和str22的结果为:" + (str12 == str22));
        System.out.println("使用==运算符比较str12和str22的结果为:" + (str12 == str22));
        System.out.println("使用==运算符比较str12和str33的结果为:" + (str12 == str33));
结果:
使用equals()方法比较str12和str22的结果为:true
使用==运算符比较str12和str22的结果为:true
使用==运算符比较str12和str22的结果为:true
使用==运算符比较str12和str33的结果为:false
©️2020 CSDN 皮肤主题: 1024 设计师:上身试试 返回首页