Java 字符串 1

简介: Java 字符串

1 字符串概述

在现实生活中,大家一定注册过电子邮箱,用户名和密码等使用的就是字符串。字符串是一系列字符组成的序列。其实,从进入Java编程世界的第一天起,大家就已经在使用字符串了,如程序从控制台输出字符串"欢迎进入"、"教育改变生活"等,可以说字符串无处不在。


1.1如何使用字符串

简单地说,使用字符串主要分为两步。


(1) 定义并初始化字符串。


(2) 使用字符串,对字符串进行一些处理。


前面已经学过如何创建一个字符串,如下所示。


语法:


//创建一个字符串对象” Hello World"


String s =  n Hello World";


在Java中,字符串被作为String类型的对象来处理。String类是Java设计人员预先提供的一个非常有用的类,它位于java, lang包中,默认情况下,该包被自动导入所有的程序。创建String对象的另外两种方法如下列代码所示。


//创建一个空字符串


String s = new String ();


或者


//创建一个字符串对象” Hello World"


String s = new String("Hello World");


正因如此,大家可以通过使用String类提供的方法来完成对字符串的操作。String类提供了许多有用的方法,如获得字符串的长度、对两个字符串进行比较、连接两个字符串及提取一个字符串中的某一部分等。下面我们就来领略一下它的强大之处。


1.2字符串的长度

问题:注册新用户,要求密码长度不能小于6位。

d63df2d0855e4355a1ee5330f02561b9.png



分析:学习了 Scanner类之后,在控制台接收一个从键盘上输入的字符串已经不再是一件难事。那么,如何计算字符串的长度呢? String类提供了 length()方法。字符串是一串字符序列,String类的length()方法用来确定字符串的长度,即字符串中的字符数目。调用length()方法返回的结果就是字符串中的字符数,如图15.1所示。


图15.1获得字符串的长度


调用length()方法的语法如下。


字符串 1. length ();


返回字符串1的长度。


示例1


package cn.jbit.classandobject;

import java.util.*;

public class Register {

   /*

    * 注册密码长度不少于6位

    */

   public static void main(String[] args) {

       Scanner input = new Scanner(System.in);

       String uname,pwd;

       System.out.print("请输入用户名: ");

       uname=input.next();

       System.out.print("请输入密码: ");

       pwd=input.next();


       if(pwd.length()>=6){

           System.out.print("注册成功! ");

       }else{

           System.out.print("密码长度不能小于6位!");

       }

   }

}


运行示例1,运行结果如图15.2所示。

8a26262a6cf041e4a4fa039539da2b9c.png


在示例1中,使用字符串对象pwd的length()方法 "pwd.length()" 获得密码字符串的长度。由于 "1234567" 的长度为7,因此符合 ">=6" 的要求,打印输出 "注册成功"。


图15.2示例1的运行结果



1.3字符串的比较

在生活中,经常会对字符串进行比较。登录计算机操作系统时,输入的密码会和系统中已保存的密码进行比较;去书店买书时,看到的书名会和你大脑中想买的书名进行比较;考试结束去查成绩时,无意中也在将看到的名字和自己的名字进行比较,最终找到自己的成绩。可见,字符串的比较遍布我们的生活。接下来学习如何使用计算机进行字符串的比较。


问题:注册成功后,实现登录验证。用户名为 ”wangfeng” , 密码为 “1234567”。


0df87dbb9f024e0696a1afb655e991be.png


分析:要编写程序让计算机比较两个字符串对象的内容是否一致,在前面章节的学习中已经接触过了,使用equals()方法可以帮助大家解决这个问题。下面一起来回顾一下,分析它的工作原理,如图15.3所示。



5f8998a0c5544feca737e186ef45d039.png


在使用equals()方法比较两个字符串时,它逐个对照组成两个字符串的每个字符是否相同。如果都相同,则返回true ; 否则返回false。对于字符的大小写,也在检查范围之内,语法如下。


语法:


字符串1. equals (字符串2);


比较两个字符串的值是否相同,返回boolean类型的值。如果相同,则返回true;否则返回false。


示例2


package cn.jbit.classandobject;

import java.util.*;

public class Login {

   /*

    * 登录

    */

   public static void main(String[] args) {

       Scanner input = new Scanner(System.in);

       String uname,pwd;


       System.out.print("请输入用户名: ");

       uname=input.next();

       System.out.print("请输入密码: ");

       pwd=input.next();


       if(uname.equals("wangfeng")&&pwd.equals("1234567")){

           System.out.print("登录成功! ");

       }else{

           System.out.print("用户名或密码不匹配,登录失败!");

       }

   }

}

c7ca55f13539496183f0fed66a6e7dd0.png


运行示例2,运行结果如图15.4所示。


图15.4示例2的运行结果


uname.equals("wangfeng")和pwd.equals("1234567") 分别比较输入的值是否符合要求。如果符合,则返回true,打印输出 "登录成功"。


可能大家会有疑问,为什么不能使用双等号(==)来判断两个字符串是否相同呢?在Java中,双等号(==)和equals()方法虽都应用于两个字符串,但所判断的内容是有差别的。简单地讲,"=="判断的是两个字符串对象在内存中的首地址是否相等,即判断是否是同一个字符串对象,而equals()判断的是两个字符串对象的值是否相等。了解了这一点,就不难理解示例3的运行结果了。


示例3


package cn.jbit.classandobject;

public class Difference {

   public static void main(String[] args){

       String str1 = new String("我爱我的祖国");

       String str2 = new String("我爱我的祖国");

       if (str1.equals(str2)){

           System.out.println("两个字符串值相同。");

       }else{

           System.out.println("两个字符串值不相同。");

       }

       if (str1==str2){

           System.out.println("两个字符串相同。");

       }else {

           System.out.println("两个字符串不相同。");

       }

   }

}

b8f7563023174950b95758cd1efa1de6.png


运行示例3,运行结果如图15.5所示。


图15.5示例3的运行结果


在使用equals()方法比较两个字符串时,对于字符的大小写,也在检查范围之内。但有时我们会碰到忽略大小写的验证,如"Java"和"java"都是指Java这门课程,使用equals()方法比较会认为它们不是一门课,因此,需要使用另一种方法——equalslgnoreCase()方法。Ignore是"忽略"的意思,这种方法在比较字符串时会忽略字符的大小写,语法如下。


语法:


字符串  1. equalsIgnoreCase ( 字符串 2);


忽略大小写比较字符串1和字符串2。如果都相同,则返回true;否则返回false。


问题:系统规定,登录时不考虑用户名的大小写问题,该如何实现登录?


分析:修改示例2,使用equalsIgnoreCase()方法即可实现。


示例4

package cn.jbit.classandobject;
import java.util.*;
public class Login1 {
    /**
     * 登录
     *
     */
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        String uname,pwd;
        System.out.print("请输入用户名: ");
        uname=input.next();
        System.out.print("请输入密码: ");
        pwd=input.next();
      /*
      if(uname.equals("TOM")&&pwd.equals("1234567")){
         System.out.print("登录成功! ");
      }else{
         System.out.print("用户名或密码不匹配,登录失败!");
      }*/
        if(uname.equalsIgnoreCase("wangfeng")&&pwd.equalsIgnoreCase("1234567")){
            System.out.print("登录成功! ");
        }else{
            System.out.print("用户名或密码不匹配,登录失败!");
        }
    }
}

d374078e7f40445f8c6dacb576af8835.png


运行示例4,运行结果如图15.6所示。


图15.6示例4的运行结果


那么,还有别的解决办法吗?如果在比较之前就变成全部大写或是全部小写,然后使用equals(),是否也会得到同样的效果呢?下面就来试一试。


在Java中,String类提供了两个方法改变字符串中字符的大小写,如图15.7所示。


toLowerCase():转换字符串中的英文字母为小写。

toUpperCase():转换字符串中的英文字母为大写。

ddffcb8e135e4d20858066f97cb8d9a1.png


语法:


字符串.toLowerCase ()


返回字符串的小写形式


字符串.toUpperCase ()


返回字符串的大写形式


修改示例2,代码如下,同样可以实现忽略大小写实现登录。


if(uname.toLowerCase().equals(("WANGFENG").toLowerCase())

   &&pwd.toUpperCase().equals(("1234567").toUpperCase())){

   System.out.print("登录成功! ");

}else{

   System.out.print("用户名或密码不匹配,登录失败!");



}


目录
相关文章
|
12小时前
|
Java
Java获取字符串最后一位
【5月更文挑战第9天】Java获取字符串最后一位
11 5
|
2天前
|
存储 Java 索引
【JAVA基础篇教学】第十一篇:Java中字符串操作详解
【JAVA基础篇教学】第十一篇:Java中字符串操作详解
|
2天前
|
Java
代码实例演示Java字符串与输入流互转
代码实例演示Java字符串与输入流互转
|
10天前
|
传感器 数据采集 网络协议
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
Java串口通信:从十六进制字符串到字节数组的正确转换与发送
30 4
|
12天前
|
Java
在Java中,如何将字符串转换为浮点数?
【4月更文挑战第30天】在Java中,如何将字符串转换为浮点数?
17 0
|
13天前
|
存储 Java C语言
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
【Java探索之旅】数据类型与变量 浮点型,字符型,布尔型,字符串型
20 0
|
13天前
|
Java
JAVA刷题之字符串的一些个人思路
JAVA刷题之字符串的一些个人思路
|
13天前
|
编解码 JavaScript 前端开发
【专栏】介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例
【4月更文挑战第29天】本文介绍了字符串Base64编解码的基本原理和在Java、Python、C++、JavaScript及Go等编程语言中的实现示例。Base64编码将24位二进制数据转换为32位可打印字符,用“=”作填充。文中展示了各语言的编码解码代码,帮助开发者理解并应用于实际项目。
|
17天前
|
缓存 安全 Java
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
【Java基础】String、StringBuffer和StringBuilder三种字符串对比
9 0
|
23天前
|
Java
java 数组转字符串 和字符串转int
【4月更文挑战第11天】java 数组转字符串 和字符串转int
16 2