当前位置:   article > 正文

Java基础(六)——字符串(String)类型_java字符串型

java字符串型

String类

字符串是一个字符序列。
char类型只能表示一个字符,为了表示一串字符,使用String(字符串)数据类型。
String实际上是java库中一个预定义的类。Stirng类型不是基本类型,而是引用类型。任何java类都可以将变量表示为一个引用类型。使用引用类型声明的变量成为引用变量,它引用的是一个对象。

String string = "Hello World!";
  • 1

上述代码中,String是一个引用类型,string是一个引用变量,而它引用的是一个内容为 Hello World! 的字符串对象。

一、String对象的简单方法

方法描述
length()返回字符串中的字符数
charAt(index)返回字符串s中指定位置的字符
concat(s1)将本字符串和字符串s1连接,返回一个新的字符串
toUpperCase()返回一个新的字符串,其中所有的字母大写
toLowerCase()返回一个新的字符串,其中所有的字母小写
trim()返回一个新的字符串,去掉了两边的空白字符

注:以上方法指定从一个特定的字符串实例来调用,因此,这些方法都是实例方法,非实例方法称为静态方法。静态方法可以不使用对象来调用。如,定义在Math类中的所有方法都是静态方法。它们没有绑定到一个特定的对象实例上。实例方法使用reference-Variable.methodName(arguments)来调用;静态方法则是用ClassName.methodName(arguments)来调用,如:

public class Test1 {
    public static void main(String[] args) {
        String string = "Hello World!";
        System.out.println(string.length()); // 使用实例string来调用,实例方法
        System.out.println(Math.pow(2, 3)); // 使用类名Math来调用,静态方法
    }
}
/*output
12
8.0
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

1.求字符长度

调用上述的length()方法。
注意:使用一个字符串时,往往是知道它的直接量的值的,为方便起见,Java允许再不创建新的变量的情况下,直接使用字符串直接量来引用字符串。即,允许 “Hello World!”.length() 这样的调用。其中 “” 表示空字符串,且"".length()为0.

public class Test2 {
    public static void main(String[] args) {
        System.out.println("Hello World!".length());
        System.out.println("".length());
    }
}
/*output
12
0
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

2.从字符串中获取字符

方法s.charAt(index)可用于提取字符串s中下标为index的特定字符,其中index的值在 [0, s.length() - 1] 之间,字符串第一个字符的下标为0.

3.连接字符串

使用concat方法可连接两个字符串 String string3 = string1.concat(string2)。
除此自外,Java也提供了另外一种简便的方法连接字符串,使用加号(+)连接两个或多个字符串。

public class Test3 {
    public static void main(String[] args) {
        String string1 = "Hello";
        String string2 = " World!";
        String string3 = string1.concat(string2);
        String string4 = string1 + string2 + "!!!";
        System.out.println(string3);
        System.out.println(string4);
    }
}
/*output
Hello World!
Hello World!!!!
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

两种连接方式是等价的。
加号也可以用于连接数字和字符串,但在这种情况下,会先将数字转换成字符串,再进行连接。
注意:若要使用加号连接字符串,至少要有一个操作数必须为字符串,如果操作数之一不是字符串,非字符串值先转换成字符串,再与另外的字符串连接。
如果操作数都不是字符串,加号就是一个将两个数字相加的加法操作符。
增强的 += 操作符也可用于字符串连接。

public class Test4 {
    public static void main(String[] args) {
        String string1 = "Hello" + " World!" + 123;
        System.out.println(string1); // 连接字符串
        System.out.println(1 + 2 + 'a'); // 加法操作符
        string1 += string1;
        System.out.println(string1);
    }
}
/*output
Hello World!123
100
Hello World!123Hello World!123
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

4.字符串的转换

方法trim()通过删除字符串两端的空白字符返回一个新的字符串。其中,字符 ’ '、\t、\f、\r、\n被称为空白字符。

5.字符串的比较

方法描述
equals(s1)如果该字符串等于字符串s1,返回true
equalsIgnoreCase()如果该字符串等于字符串s1,返回true,不区分大小写
compareTo(s1)返回一个大于0、等于0、小于0的整数,表明一个字符串是否大于、等于或者小于s1
compareToIgnoreCase()和compareTo一样,但不区分大小写
startsWith(prefix)如果字符串以特定前缀开始,返回true
endsWith(suffix)如果字符串以特定后缀结束,返回true
contains(s1)如果s1时该字符串的子字符串,返回true

注意:== 操作符只能检测string1和string2是否指向同一个对象,不能判定内容是否一致,因此比较两个字符串内容是否一致不能使用 ==,应该使用equals方法。

public class Test5 {
    public static void main(String[] args) {
        String string1 = new String("Hello World!");
        String string2 = new String("Hello World!");
        String string3 = string1;
        System.out.println(string1 == string3); // string1和string3是同一个对象
        System.out.println(string2 == string3); // string2和string3不是同一个对象
        System.out.println(string2.equals(string3)); // string2和string3内容相等
    }
}
/*output
true
false
true
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

compareTo方法也可以用来比较两个字符串,s1.compareTo(s2) ,如果s1和s2相等,则返回0;如果按照字典顺序(即Unicode码顺序),s1小于s2,那么方法返回小于0;如果s1字典顺序大于s2,方法返回值大于0.compareTo方法返回值实际是根据s1和s2从左到右数第一个不同字符之间的距离得出的。
警告:如果使用比较运算符(>、>=、<、<=等)比较两个字符串,会发生语法错误,应使用compareTo方法。

6.获取子字符串

方法charAt()可用于提取字符串中特定的字符。也可以通过使用String类中的substring方法冲字符串中获取子字符串。

方法描述
substring(beginIndex)返回该字符串的子字符串,从特定位置beginIndex的字符开始到字符串结尾
substring(beginIndex, endIndex)返回该字符串的子字符串,从特定位置beginIndex的字符开始到下标为endIndex - 1的字符,注意下标为endIndex的字符不属于该子字符串的一部分

7.查找字符串中的字符或者子串

方法描述
indexOf(ch)返回字符串中出现的第一个ch的下标。如果没有匹配,返回-1
indexOf(ch, fromIndex)返回字符串中fromIndex之后出现的第一个ch的下标。如果没有匹配,返回-1
indexOf(s)返回字符串中出现的第一个字符串s的下标。如果没有匹配,返回-1
indexOf(s, fromIndex)返回字符串中fromIndex之后出现的第一个字符串s的下标。如果没有匹配,返回-1
lastIndexOf(ch)返回字符串中出现的最后一个ch的下标。如果没有匹配,返回-1
lastIndexOf(ch, fromIndex)返回字符串中fromIndex之前出现的最后一个ch的下标。如果没有匹配,返回-1
lastIndexOf(s)返回字符串中出现的最后一个字符串s的下标。如果没有匹配,返回-1
lastIndexOf(s, fromIndex)返回字符串中fromIndex之前出现的最后一个字符串s的下标。如果没有匹配,返回-1

字符串和数字之间的转换

可以将数值型的字符串转换为数值。
要将字符串转换为int值,使用Integer.parseInt方法;要将一个字符串转换为double值,使用Double.parseDouble方法,其他数值类型同理。
注意:如果字符串不是一个数值型字符串,转换时会导致一个运行时错误。Integer和Double类都包含在java.lang包中,是自动导入的。
同时也可将数值转换为字符串,只需简单使用字符串连接操作符 String strng = number + “”; 即可;或者使用String类的静态方法valueOf。

public class Test6 {
    public static void main(String[] args) {
        byte byteValue = Byte.parseByte("1");
        short shortValue = Short.parseShort("2");
        int intValue = Integer.parseInt("3");
        long longValue = Long.parseLong("4");
        float floatValue = Float.parseFloat("5.0f");
        double doubleValue = Double.parseDouble("6.0d");
        String string1 = 7 + "";
        String string2 = String.valueOf(8);
        System.out.println(byteValue);
        System.out.println(shortValue);
        System.out.println(intValue);
        System.out.println(longValue);
        System.out.println(floatValue);
        System.out.println(doubleValue);
        System.out.println(string1);
        System.out.println(string2);
    }
}
/*output
1
2
3
4
5.0
6.0
7
8
*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30

格式化控制台输出

使用System.ouu.printf方法可以在控制台上显示格式化输出,调用该方法的语法为:

System.out.printf(format, item1,item2, ..., itemn);
  • 1

其中format指一个由子串和格式化标识符构成的字符串。
简单的格式化标识符是以百分号(%)开头的转换码。

标识符输出举例
%b布尔值true或false
%c字符‘a’
%d十进制数200
%f浮点数45.46000
%e标准科学计数法形式的数4.566e++01
%s字符串“Java”

警告:条目(item)与格式标识符在类型上必须严格匹配,对应与格式标识符%f和%e必须时浮点型值。因此int型变量不能匹配%f或%e。使用%来标记格式标识符,如果要在格式字符串中输出直接量%,需使用%%。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/617968
推荐阅读
相关标签
  

闽ICP备14008679号