String类型

String类型

要点提示:字符串是一个字符序列。

        char 类型只能表示一个字符。为了表示一串字符,使用称为 String (字符串)的数据类型。例如,下述代码将 message声明为一个字符串,其值为 "Welcome to Java";

String message = "Welcome to Java";

          String 实际上与System 类和Scanner类一样,都是Java库中一个预定义的类。String 类型不是基本类型,而是引用类型(reference type)。任何Java类都可以将变量表示为引用 类型。使用引用类型声明的变量称为引用变量,它引用一个对象。这里,message 是一个引 用变量,它引用一个内容为 Welcome to ]ava的字符串对象。

        如何将字符串陚值给该变量以及如何使用 String 类中的方法?

String对象的简单方法
方法描述
length( )返回字符串中的宇符数
charAt(index)返回字符串 S 中指定位置的字符
coucat(s1)将本字符串和字符串 S1 连接,返回一个新字符串
toUpperCase( )返回一个新宇符串,其中所有的字母大写
toLowerCase( )返回一个新宇符串,其中所有的字母小写
trim( )返回一个新字符串,去掉了两边的空白宇符
       //获取指定角标处的字符
        System.out.println(s.charAt(0));
        //判断指定子串是否包含在s中
        System.out.println(s.contains("ab"));
        //判断指定子串是否在s的结尾
        System.out.println(s.endsWith("cd"));
        //按照字典顺序比较两个字符串的大小
        //返回值有负数 0 正数
        //负数 前者在后者ASCII之前
        //0 前者和后者相等
        //正数 前者在后者ASCII之后
        System.out.println("abc".compareTo("abd"));//返回-1
        System.out.println("abc".compareTo("abc"));//返回0
        //比较两个字符串是否相等(比的是内容)
        System.out.println("abc".equals("abc"));
        //比较两个字符串是否相等(比的是内容)IgnoreCase忽略大小写
        System.out.println("ABC".equalsIgnoreCase("abc"));
        //在字符串中从左到右查找指定元素第一次出现的位置   
        System.out.println("abcccccd".indexOf('c'));
        //在字符串中从右往左查找指定元素第一次出现的位置   
        System.out.println("abcccccd".indexOf("cd"));
        System.out.println("".isEmpty());
        s="abababab";
        System.out.println(s.replace('a','c'));//替换
        System.out.println(s.substring(0,3));//角标[0,3)的字串
        System.out.println(s.toUpperCase());//变成大写的
        System.out.println("  abc abc abc   ".trim());//去掉前面后面的空格

求字符串长度

可以调用字符串的length( ) 方法获取它的长度。例如,下面代码.

 

String message = "Welcome to Java"; 
System.out.println("The length of " + message + " is " + message. length( ));
显示
The length of Welcome to Java is 15 

注意:使用一个字符串时,往往是知道它的直接量值的。为方便起见,Java 允许在不创建新变量的情况下,使用字符串直接量直接引用字符串。这样,"Welcome to Java". length( ) 是正确的,它返15。注意,""表示空字符串,并且"".length()为 0。

从字符串中获取字符

方法 s.charAt(index)可用于提取字符串s中的某个特定字符,其中下标index的取值范围在 0 ~s.length()-l之间。例如,message.charAtO))返回字符 W.

连接字符串

可以使用concat方法连接两个字符串。例如,如下所示的语句将字符串si和 S2 连接 构成 S3:
       

String s3 = sl.concat(s2) ;
String s3 =s1+ s2;
Three strings are concatenated 
String message-"Welcome ” "to •• + "Java"; 
// String Chapter is concatenated with number 2 
String s = "Chapter” + 2; // s becomes Chapter2 
// String Supplement is concatenated with character B 
String s1 = "Supplement" + 'B*; // s1 becomes SupplementB

字符串的转换

方法toLowerCase( ) 返回一个新字符串,其中所有字母小写;方法 toUpperCase( ) 返回 一个新字符串,其中所有字母大写。例如,

"Welcome".toLowerCase()返回一个新字符串 welcome。 
"Welcome".toUpperCase()返回一个新字符串 WELCOME。 

方法 tHm()通过删除字符串两端的空白字符返回一个新字符串。字符 ' '、 \t、\f、\r、 或者 \n 被称为空白字符。例如

"\t   Good Night \n".trim( )返回一个新字符串 Good Night。

从控制台读取字符串

为了从控制台读取字符串,调用 Scanner 对象上的 nextO 方法。例如,下面的代码就 可以从键盘读取三个字符串:

Scanner input-new Scanner(System.in); 
System.out.print("Enter three words separated by spaces: "); 
String s1 = input.next(); 
String s2 * input.next(); 
String s3 = input.next(); 
System.out.println("s1 is " + s1); 
System.out.println("s2 is " + s2); 
System.out.println("s3 is " + s3); 

next()方法读取以空白字符结束的字符串(即 '  '、'\t'、'\f'、'\r'、'\n')。可以用 nextLine( ) 方法读取一整行文本。nextLine( ) 方法读取以按下回车键为结束标志的字符串。例如,下面的语句读取一行文本:

Scanner input = new Scanner(System.in);  
System.out.println("Enter a line:"); 
String s = input.nextLine(); 
System.out.println("The line entered is " + s);

重要警告:为了避免输入錄误,不要在 nextByte( )、nextShort( )、nextlnt( )、nextLong( )、nextFloat( )、nextDouble( )、 和 next( )之后使用 nextLine( ).

从控制台读取字符

为了从控制台读取字符,调用 nextLine( ) 方法读取一个字符串,然后在字符串上调用 charAt(0)来返回一个字符。例如,下列代码从键盘读取一个字符

Scanner input=new Scanner(System.in);  
System.out.print("Enter a character: "); 
String s = input.nextLine(); 
char ch=s.charAt(O); 
System.out.println("The character entered is " + ch); 

字符串比较

如何比较两个字符串的内容是否相等呢?你可能会尝试使用 == 操作符,如下所示:

if (string1 == string2) 
    System.out.println("string1 and string2 are the same object"); 
else 
    System.out.println("string1 and string2 are different objects");

       然而,操作符~只能检测 stringl和 string〗是否指向同一个对象,但它不会告诉你 它们的内容是否相同。因此,不能使用~操作符判断两个字符串变量的内容是否相同。取 而代之,应该使用 equals 方法。例如,可以使用下面的代码比较两个字符串:

if (string1.equals(string2)) 
    System.out.println("string1 and string2 have the same contents"); 
else 
    System.out.println("string1 and string2 are not equal");

例如,下面的语句先显示 true, 然后显示 false

String sl = "Welcome to Java"; 
String s2 = "Welcome to Java"; 
String s3="Welcome to C++"; 
System.out.println(s1.equals(s2)); // true 
System.out.println(s1.equals(s3)); // false

compareTo 方法也用来对两个字符串进行比较。例如,考虑下述代码:

s1.compareTo(s2)

       如果 s1与 S2 相等,那么该方法返回值 0; 如果按字典顺序(即以 Unicode码的顺序) s1小于 s2, 那么方法返回值小于 0;如果按字典顺序 s1大于 S2,方法返回值大于 0。 方法 compareTo 返回的实际值是依据 s1 和 s2 从左到右数第一个不同字符之间的距离得 出的。例如,假设 s1为"abc",s2 为"abg", 那 么s1.compareTo(s2)返回-4。首先比较的 是 s1与s2 中第一个位置的两个字符(a 与 a)。因为它们相等,所以比较第二个位置的两个 字符(b与 b)。因为它们也相等,所以比较第三个位置的两个宇符(c与 g)。由于字符 c比 字符 9小 4, 所以比较之后返回-4。

瞀告:如果使用像 >、>=、< 或 <= 这样的比较操作符比较两个字符串,就会发生语法错误。 替代的方法就是使用 sl.compareTo(s2)来进行比较.

注意:如果两个字符串相等,equals 方法送回 true; 如果它们不等,方法返回 false.

String 类还提供了对字符串进行比较的方法 equalsIgnoreCase 和 compareToIgnoreCase

当比较两个字符串时,方法 equalsIgnoreCase 和 compareToIgnoreCase 忽略字母的大小写还 可以使用 str.startsWith(prefix)来检测字符串 str 是否以特定前缀(prefix) 开始,使用 str.endsWith(suffix)来检测字符串 str 是否以特定后缀(suffix) 结束,并且可以使用 str. contains(si)来检测是否字符串 str 包含字符串 si。例如:

"Welcome to Java".startsWith("We") returns true.  
"Welcome to Java".startsWithC"we") returns false. 
"Welcome to 3ava".endsWith("va")   returns true. 
"Welcome to Java".endsWith('V')    returns false. 
"Welcome to Java".containsCto")    returns true. 
"Welcome to Java".contains("To”)  returns false. 

获得子字符串

方法 s.charAt(index) 可用于提取字符串 s 中的某个特定字符。也可以使用 String 类 中的 substring 方法从字符串中提取子串

获取字符串中的字符或者子串

String 类提供了几个版本的 indexOf 和 lastlndexOf方法,它们可以在字符串中找出一个 字符或一个子串

例如:

"Welcome to Java".indexOf('W')         returns 0.
"Welcome to Java".indexOf('o')         returns 4.
"Welcome to Java".indexOf('o',5)       returns 9.
"Welcome to Java".indexOf('come')      returns 3.
"Welcome to Java".indexOf("Java")      returns 11.
"Welcome to Java".indexOf("java")      returns -1.

"Welcome to Java".lastlndexOf('W')     returns 0.
"Welcome to Java".lastlndexOf('o')     returns 9.
"Welcome to Java".lastlndexOf('o',5)   returns 4.
"Welcome to Java".lastlndexOf("come")  returns 3.
"Welcome to Java".lastlndexOf("Java")  returns -1.
"Welcome to Java".lastlndexOf("java")  returns 11.

假设一个字符串 s 包含使用空格分开的姓和名。可以使用下面的代码从字符串中抽取姓 和名。

int k = s.indexOf(' ');
String firstName = s.substring(0, k); 
String lastName = s.substring(k + 1 ); 

例如,如果 S 是 Kim Jones, 下图显示了如何抽取出姓和名。

字符串和数字间的转换

可以将数值型字符串转换为数值。要将字符串转换为 int 值,使用 Integer.parselnt 方法,如下所示:

int intValue = Integer.parseInt(intString); 

intString 是一个数值型字符串,例如"123"。

要将字符串转换为 double 值,使用Double.parseDouble 方法,如下所示:

double doubleValue = Double.parseDouble(doubleString); 

doublestring是一个数值型字符串,例如"123.45"。

       如果字符串不是数值型字符串,转换将导致一个运行时错误。Integer•和 Double 类都包 含在 java.lang 包中,因此它们是自动导入的。 可以将数值转换为字符串,只需要简单使用字符串的连接操作符,如下所示:

String s = number +" ";

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值