大数据——Java实用类(二)

String类的常用方法

String类概述

在Java中,字符串被作为String类型的对象来处理。String类位于java.lang包中,默认情况下,该包被自动导入所有的程序。创建String对象的方法如以下代码所示:
String s=“Hello World”;
或者
String s=new String(“Hello World”);
String类提供了许多有用的方法。例如,获得字符串的长度、对两个字符串进行比较、连接两个字符串以及提取一个字符串中的某一个部分等。可以使用String类提供的方法来完成对字符串的操作。

String类常用方法

(1)求字符串长度length()
调用length()方法的语法格式如下:
字符串.length()
length()方法返回字符串的长度。
示例一:注册新用户,要求密码长度不能小于6位。
代码展示:

import java.util.Scanner;
public class Register {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String uname,pwd;
        System.out.print("请输入用户名:");
        uname = sc.next();
        System.out.print("请输入密码:");
        pwd = sc.next();
        if (pwd.length() >= 6) {
            System.out.println("注册成功!");
        } else {
            System.out.println("密码长度不能小于6位!");
        }
    }
}

输出结果:在这里插入图片描述
(2)字符串比较
字符串比较的语法格式如下:
字符串1.equals(字符串2);
比较两个字符串的值是否相同,返回值为boolean类型,如果相同,则返回真值,否则返回假值。
示例二:注册成功后,实现登录验证。用户名为“TOM”,密码为“1234567”。
分析如下:在使用equals()方法比较两个字符串时,它逐个字符比较组成两个字符串的每个字符是否相同。如果都相同,则返回真值,否则返回假值。对于字符的大小写,也在检查范围之内。
代码展示:

import java.util.Scanner;
public class Register {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String uname,pwd;
        System.out.print("请输入用户名:");
        uname = sc.next();
        System.out.print("请输入密码:");
        pwd = sc.next();
        if (uname.equals("TOM") && pwd.equals("1234567")) {
            System.out.println("登录成功!");
        } else {
            System.out.println("用户名或密码错误,登录失败!");
        }
    }
}

输出结果:在这里插入图片描述
示例三:实现会员注册,要求用户名长度不小于3,密码长度不小于6,注册时两次输入密码必须相同 。
代码展示:

import java.util.Scanner;
public class ZhuCE {
    public static void main(String[] args) {
        String name;
        String mima1;
        String miam2;
        boolean flag=false;
do {
            System.out.println("***欢迎进入注册系统***");
            Scanner sc = new Scanner(System.in);
            System.out.print("请输入用户名:");
            name = sc.next();
            System.out.print("请输入密码:");
            mima1 = sc.next();
            System.out.print("请再次输入密码");
            miam2 = sc.next();
    if (name.length() < 3 || mima1.length() < 6 || miam2.length() < 6) {
        System.out.println("用户名长度小于3,密码长度不能小于6!");
        flag = false;
    } else if (!mima1.equals(miam2)) {
        System.out.println("两次密码输入不相同!");
        flag = false;
    } else {
        flag = true;
    }
    }while (flag==false);
        System.out.println("注册成功,请记住密码!");
}}

输出结果:在这里插入图片描述

(3)字符串拼接
字符串拼接的语法格式如下:
字符串1.concat(字符串2);
字符串2被拼接到字符串1的后面,返回拼接后的新字符串。
示例四:
代码展示:

public class Register {
    public static void main(String[] args) {
    String s = new String("你好,");
        String name = new String("张三!");
        String sentence = s.concat(name);
        System.out.println(sentence);
        String sayHi = name + "你好";
        System.out.println(sayHi);
    }
}

输出结果:在这里插入图片描述
拼接字符串的方法有两种:使用“+”运算符或使用String类的concat()方法。
(4)字符串提取和查询
常用的提取和搜索字符串的方法如下所示:
在这里插入图片描述
示例五:

public class TestString {
    public static void main(String[] args) {
     String str = "  你好 |我1是一名 老2师|教jav3a|欢迎来口碑    ";
     System.out.println(str.trim());//左右去空格
        System.out.println(str.contains("我1是一名"));
        System.out.println(str.startsWith("a", 20));
         byte[] bytes=str.getBytes();
        System.out.println(str.length());
        System.out.println(bytes.length);
    }
}

输出结果:
在这里插入图片描述
字符串是一个字符序列,每一个字符都有自己的位置,字符串事实上也是一个字符数组,因此它的索引位置从0到字符串长度-1结束。
示例六:

import java.util.Arrays;
public class TestString2 {
    public static void main(String[] args) {
        String str = "我是一名老师";
        String s = new String(str.getBytes(), 0, 3);
        System.out.println(s);
        char[] chars = str.toCharArray();
        System.out.println(Arrays.toString(chars));//转成char类型数组
    }
}

输出结果:
在这里插入图片描述
(5)字符串拆分
字符串拆分的语法格式如下:
字符串名.split(separator,limit);
separator是可选项,表示根据匹配指定的正则表达式来拆分此字符串。如果匹配不上,则结果数组只有一个元素,即此字符串。
limit可选项,该值用来限制返回数组中的元素个数。
示例七:现有一个字符串,它是一段歌词,每句都以空格“ ”结尾,输出结果如下所示:在这里插入图片描述
分析如下:实现这个需求,只要将每局歌词按照空格拆分即可。此时就可以使用split()方法实现这个需求。
代码展示:

public class Lyric {
    public static void main(String[] args) {
        String words = "长亭外 古道边 芳草碧连天 晚风扶 柳笛声残 夕阳山外山 ";
        String[] printword = new String[100];//定义接收数组
        System.out.println("***原歌词格式***\n" + words);
        System.out.println("\n***拆分后歌词格式***");
        printword=words.split(" ");//按照空格进行拆分
        for (int i = 0; i < printword.length; i++) {
            System.out.println(printword[i]);//打印输出
        }
    }
}

输出结果:在这里插入图片描述
示例八:输入一个字符串,再输入要查找的字符,判断该字符在该字符串中出现的次数。
在这里插入图片描述
代码展示:

import java.util.Scanner;
public class TestAi {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("请输入字符");
        String r1=sc.next();
        System.out.print("请输入要查找的字符:");
        char zi=sc.next().charAt(0);
        char[] a=r1.toCharArray();
        int r=0;
        for (int i = 0; i <r1.length() ; i++) {
            if(zi==a[i])
                r++;
        }
        System.out.println(r1+"中包含"+r+"个"+zi+"字!");
    }
}

输出结果:
在这里插入图片描述

StringBuffer类和StringBuilder类

使用StringBuffer类处理字符串

除了使用String类存储字符串之外,还可以使用StringBuffer类来存储字符串。StringBuffer类也是Java提供的用于处理字符串的一个类。而且它是比String类更高效地存储字符串的一种引用数据类型。特别是对字符串进行连接操作时,使用StringBuffer类可以大大提高程序的执行效率。
(1)如何使用StringBuffer类
StringBuffer类位于java.util包中,是String类的增强类、StringBuffer类提供了很多方法可供使用。
声明StringBuffer对象并初始化的方法如下所示:
StringBuffer sb2=new StringBuffer(“青春无悔”);
(2)常用的StringBuffer类方法
①toString()方法
转换为String类型的语法格式如下:
字符串1.toString();
将StringBuffer类型的字符串1转换为String类型的对象并返回。
②append()方法
追加字符串的语法格式如下:
字符串.append(参数);
将参数连接到字符串后并返回。
该方法和String类的concat()方法一样,都是把一个字符串追加倒另一个字符串后面,所不同的是String类中只能将String类型的字符串追加到一个字符串后,而StringBuffer类可以将任何类型的值追加到字符串之后。
示例九:
使用StringBuffer类实现字符串追加。
代码展示:

public class SbAppend {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer("青春无悔");
        int num = 110;
        //在字符串后面追加字符串
        StringBuffer sb1 = sb.append("我心永恒");
        System.out.println(sb1);
        //在字符串后面追加字符
        StringBuffer sb2 = sb1.append('啊');
        System.out.println(sb2);
        //在字符串后面追加整型数字
        StringBuffer sb3 = sb2.append(num);
        System.out.println(sb3);
    }
}

输出结果:
在这里插入图片描述
③insert()方法
插入字符串的语法格式如下:
字符串.insert(位置,参数);
将参数插入到字符串指定位置后并返回。参数值可以是包括String任何类型。
示例十:编写一个方法,实现将一个数字字符串转换成以逗号分隔的数字串,即从右边开每3个数字用逗号分隔
分析:利用StringBuffer类的length()方法,获取数字串的长度,使用for循环从后向前每隔3位插入逗号。
代码展示:

import java.util.Scanner;
public class TestInsert {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        //接收数字串,存放于StringBuffer类型的对象中
        System.out.print("请输入一串数字:");
        String nums = sc.next();
        StringBuffer str = new StringBuffer(nums);
        //从后往前每隔3位添加逗号
        for (int i = str.length() - 3; i > 0; i = i - 3) {
            str.insert(i, ',');
        }
        System.out.print(str);
    }
}

输出结果:
在这里插入图片描述

使用StringBuilder类处理字符串

java.lang.StringBuilder是JDK 5.0版本新增的类,它是一个 可变的字符序列。 此类提供一个与StringBuffer 兼容的API,被设计用作StringBuffer 的一.个简易替换,在大多数实现中,它比StringBuffer执行要快。使用StringBuilder类处理字符串的方法与StringBuffer类基本一样。

Sting类、StringBuffer类及StringBuilder类对比

String、StringBuffer和StringBuilder 这3个类在处理字符串时有各自的特点和适用场合,具体如下:
(1)String:字符串常量
String是不可变的对象,在每次对String类型进行改变时其实都等同于生成了一个新的String对象,然后指向新的String 对象,所以经常改变内容的字符串最好不要用String类型,因为每次生成对象都会对系统性能产生影响。
(2) StringBuffer:字符串变量
StringBuffer是可变的字符串,在每次对StringBuffer对象进行改变时,会对StringBuffer对象本身进行操作,而不是生成新的对象,再改变对象引用。所以,在字符串对象经常改变的情况下推荐使用StringBuffer类。
字符串连接操作中,Stringuffer 类的执行效率要比String类高,例如:
String str=new String(“welcome to”);
str+=“here”;
以上这两句代码是使用String类型来操作字符串,但其处理步骤实际上是通过建立一个StringBuffer对象,让它调用append()方法,最后再转化成String,这样的话,String的连接操作比StringBuffer多出了一些附加操作,当然效率要低。并且由于String对象的不可变性也会影响性能。
(3 ) StringBuilder:字符串变量
JDK5.0版本以后提供了StringBuilder类,它和StringBuffer类等价,区别在于StringBuffer类是线程安全的,StringBuilder 类是单线程的,不提供同步,理论上效率更高。

日期操作类

java.util包也是Java内置的一一个工具包,它包含了集合框架、日期和时间、随机函数生成器等各种实用工具。java.util 包不会默认导入,如果要使用该包中的类,则必须在程序的开始部分进行手工导入。
下面介绍java.util包中几个常见的类。
java.util 包中提供的和日期时间相关的类有Date类、Calendar 类和SimpleDateFormat类等。
Date类对象用来表示日期和时间,该类提供了一系列操作 日期和时间各组成部分的方法。Date 类中使用最多的是获取系统当前的日期和时间,如Date date= new Date();这句代码是使用系统当前时间创建日期对象。
Calendar类也是用来操作日期和时间的类,它可以看作是Date类的一个增强版。Calendar类提供了一组方法, 允许把一个以毫秒 为单位的时间转换成年、 月、日、小时、分、秒。可以把Calendar类当作是万年历,默认显示的是当前的时间,当然也可以查看其他时间。
Calendar类是抽象类,可以通过静态方法getlnstance0O获得Calender类的对象,其实这个获得的对象是它的子类的对象。
Calendar类提供一些方法和静态字段来操作日历,例如:
➢int get(int field):返回给定日历字段的值。
➢YEAR: 指示年。
➢MONTH: 指示月。
➢DAY_ OF_ MONTH:指示一个月中的某天。
➢DAY OF_ WEEK:指示一个星期中的某天。
另外常用的还有格式化日期时间的类DateFormat类,它在java.text包下,是|一个抽象类,提供了多种格式化和解析时间的方法。格式化是指将日期转换成文本,解析是指将文本转换成日期格式。使用比较多的是它的子类SimpleDateFormat,SimpleDateFormat类是一个以与语言环境有关的方式来格式化和解析日期的具体类,如“yyyy-MM-dd HH:mm:ss”就是指定的一种日期和时间格式。
示例十一:

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
public class TestDate {
    public static void main(String[] args) {
        //格林威治时间1970 01 01 00 00 00 000毫秒到当前毫秒的差值
        long now = System.currentTimeMillis();
       // System.out.println(now/60/60/24/365);
        Date d = new Date();
        System.out.println(d);
        SimpleDateFormat format = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss");
        String rst = format.format(d);
        System.out.println(rst);
        //SimpleDateFormat f = new SimpleDateFormat();
        System.out.println(d.getTime());
        Calendar c = format.getCalendar();
        System.out.println("当前的年:"+c.getWeekYear());
        System.out.println("一年有多少个周:" + c.getWeeksInWeekYear());
       // System.out.println(c.get(Calendar.MONTH));
        //System.out.println(c.get(Calendar.DAY_OF_MONTH));
      //  System.out.println(c.get(Calendar.DAY_OF_YEAR));
        System.out.println(c.get(Calendar.DAY_OF_WEEK_IN_MONTH));
      //  System.out.println(c.getFirstDayOfWeek());
    }
}

输出结果:
在这里插入图片描述

Random类

Random类用于生成随机数。每当需要以任意或非系统方式生成数字时,可使用此类。之前学习过的Math类的random()方法也可以产生随机数,其实Math类的random()方法底层就是使用Random类实现的。
Random类中还定义了很多方法用于获取随机数,最常用的是nextInt()方法,它返回下一个伪随机数,返回值类型是整型。
返回下一个伪随机数的语法格式如下:
int nextInt();
int nextInt(int n);
前者返回下一个伪随机数,它是此随机数生成器的序列中均匀分布的int值。
后者返回下一个伪随机数,它是取自随机数生成器序列的、在0(包括)和指定值n(不包括n)之间均匀分布的int值。
示例十二:随机生成20个10以内或等于0的整数,并将显示出来。
代码展示:

import java.util.Random;
public class RandomDemo {
    public static void main(String[] args) {
        //创建一个Random对象
        Random rand = new Random();
        //随机生成20个随机整数,并显示
        for (int i = 0; i < 20; i++) {
            int num = rand.nextInt(10);
            System.out.println("第"+(i+1)+"个随机数是:"+num);
        }
    }
}

输出结果:在这里插入图片描述
注意:如果用同样一个种字值来初始化两个Random对象,然后用每个对象调用相同的方法,那么得到的随机数也是相同的。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值