Java字符串-1

简介: 本章工作任务实现注册信息的有效性验证格式化显示商品金额本章技能目标

本章工作任务


实现注册信息的有效性验证

格式化显示商品金额

本章技能目标


掌握String的基本用法

会使用==和equals()比较字符串

会使用StringBuffer类的方法对字符串进行操作

本章简介


在前面章节中,大家学习了如何定义和调用方法,以及带参方法的使用。在本章中,我们来学习字符串。字符串被广泛地用在Java程序设计中,很多操作都要使用字符串来完成。例如,系统中存储的密码、频繁使用的电子邮箱、登录系统或BBS的用户名等,都要使用字符串来存储。那么对字符串的处理当然也是必不可少的。因此,在学习的过程中一定要重视它。字符串运用得好坏足以影响程序的运行效率,了解处理字符串的常用方法,可以省去不少程序编写与维护的工夫。下面就来学习处理字符串的方法。


技术内容


15.1 字符串概述

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


15.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类提供了许多有用的方法,如获得字符串的长度、对两个字符串进行比较、连接两个字符串及提取一个字符串中的某一部分等。下面我们就来领略一下它的强大之处。


15.1.2字符串的长度

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



分析:学习了 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所示。


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


图15.2示例1的运行结果


15.1.3字符串的比较

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


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


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




在使用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("用户名或密码不匹配,登录失败!");
        }
    }
}

运行示例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("两个字符串不相同。");
        }
    }
}


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


图15.5示例3的运行结果


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


语法:


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


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


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


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


相关文章
|
27天前
|
SQL Java 索引
java小工具util系列2:字符串工具
java小工具util系列2:字符串工具
138 83
|
4月前
|
安全 Java API
【Java字符串操作秘籍】StringBuffer与StringBuilder的终极对决!
【8月更文挑战第25天】在Java中处理字符串时,经常需要修改字符串,但由于`String`对象的不可变性,频繁修改会导致内存浪费和性能下降。为此,Java提供了`StringBuffer`和`StringBuilder`两个类来操作可变字符串序列。`StringBuffer`是线程安全的,适用于多线程环境,但性能略低;`StringBuilder`非线程安全,但在单线程环境中性能更优。两者基本用法相似,通过`append`等方法构建和修改字符串。
75 1
|
1月前
|
存储 安全 Java
Java零基础-字符串详解
【10月更文挑战第18天】Java零基础教学篇,手把手实践教学!
108 60
|
27天前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
55 26
|
1月前
|
存储 缓存 安全
java 中操作字符串都有哪些类,它们之间有什么区别
Java中操作字符串的类主要有String、StringBuilder和StringBuffer。String是不可变的,每次操作都会生成新对象;StringBuilder和StringBuffer都是可变的,但StringBuilder是非线程安全的,而StringBuffer是线程安全的,因此性能略低。
49 8
|
1月前
|
缓存 算法 Java
本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制
在现代软件开发中,性能优化至关重要。本文聚焦于Java内存管理与调优,介绍Java内存模型、内存泄漏检测与预防、高效字符串拼接、数据结构优化及垃圾回收机制。通过调整垃圾回收器参数、优化堆大小与布局、使用对象池和缓存技术,开发者可显著提升应用性能和稳定性。
51 6
|
2月前
|
Java 数据库
案例一:去掉数据库某列中的所有英文,利用java正则表达式去做,核心:去掉字符串中的英文
这篇文章介绍了如何使用Java正则表达式从数据库某列中去除所有英文字符。
58 15
|
2月前
|
Java
JAVA易错点详解(数据类型转换、字符串与运算符)
JAVA易错点详解(数据类型转换、字符串与运算符)
61 4
|
3月前
|
Java 数据库
java小工具util系列1:日期和字符串转换工具
java小工具util系列1:日期和字符串转换工具
57 3