Java基础十三

1 正则表达式

1.1 正则表达式的引入

  • 示例:校验QQ,要求必须是5-15位数字,并且不能以0开头
package com.xuweiwei;

import java.util.Scanner;

public class QQDemo {
    public static void main(String[] args) {
        Scanner input  = new Scanner(System.in);
        System.out.println("请输入你的QQ号码:");
        String qq = input.next();
        String result = checkQQ(qq) == true ?"正确":"错误";
        System.out.println("QQ格式"+result);

    }

    public static boolean checkQQ(String qq){
        boolean flag = true;

        if(qq.length() >=5 && qq.length() <=15){

            if(!qq.startsWith("0")){

                char[] chars = qq.toCharArray();
                for (char aChar : chars) {

                    if(!Character.isDigit(aChar)){
                        flag = false;
                        break;
                    }

                }

            }else{
                //不满足开头为0
                flag = false;
            }

        }else {
            //如果不满足5-15位
            flag = false;
        }

        return flag;
    }
}

1.2 正则表达式的概述

  • 是指一个用来描述或者匹配一系列符合某个语法规则的字符串的单个字符串。其实就是一种规则,但是有自己特殊的应用。
  • 示例:
package com.xuweiwei;

import java.util.Scanner;

public class QQDemo2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的QQ号码:");
        String qq = input.next();
        String result = checkQQ(qq) == true ? "正确" : "错误";
        System.out.println("QQ格式" + result);
    }

    private static boolean checkQQ(String qq) {
        String regex = "[1-9][0-9]{4,14}]";
        return qq.matches(regex);

    }
}

1.3 正则表达式的规则

1.3.1 字符

  • x表示字符x。举例:a表示‘a‘
  • \\表示\。
  • \n表示换行。
  • \r表示回车。

1.3.2 字符类

  • [abc]表示a或b或c。
  • [^abc]表示任意字符,除了a、b、c。
  • [a-zA-Z]表示a到z,A到Z,两头的字母包括在内。
  • [0-9]表示0到9的字符都包括。

1.3.3 预定义字符类

  • .表示任何字符。
  • \d表示数字[0-9]。
  • \D表示非数字[^0-9]。
  • \w表示单词字符[a-zA-Z_0-9]。
  • \W表示非单词字符[^a-zA-z_0-9]。

1.3.4 边界匹配器

  • ^表示行的开头。
  • $表示行的结尾。
  • \b表示单词边界。单词边界就是不是单词字符的地方。举例:hello world中的空格就是单词边界。

1.3.5 数量

  • x?表示0或1次。
  • x*表示0或多次。
  • x+表示一次或多次。
  • x{n}表示n次。
  • x{n,}表示至少n次。
  • x{n,m}表示[n,m)次。

1.4 正则表达式的应用

  • 判断功能:
public boolean matches(String regex)
  • 分割功能:
public String[] split(String regex)
  • 替换功能
public String replaceAll(String regex,String replacement)
  • 获取功能:
Pattern和Matcher类的使用
  • 示例:校验手机号码
package com.xuweiwei.demo1;

import java.util.Scanner;

/**
 * 判断手机号码是否满足要求?
 */
public class RegexDemo1 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入你的手机号码:");
        String phone = input.next();

        //定义手机号码的规则
        String regex = "(13[0-9]|14[579]|15[0-3,5-9]|16[6]|17[0135678]|18[0-9]|19[89])\\d{8}";
        String result = phone.matches(regex) == true?"手机号码合法":"手机号码不合法";

        System.out.println(result);

    }
}
  • 示例:校验邮箱
package com.xuweiwei.demo1;

import java.util.Scanner;

public class RegexDemo2 {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);
        System.out.println("请输入邮箱:");
        String email = input.next();

        String regex = "[a-zA-Z0-9_.-][email protected][a-zA-Z0-9-]+(\\.[a-zA-Z0-9-]+)*\\.[a-zA-Z0-9]{2,6}";
        String result = email.matches(regex) == true ? "邮箱合法" : "邮箱不合法";
        System.out.println(result);
    }
}
  • 示例:
package com.xuweiwei.demo1;

public class RegexDemo3 {
    public static void main(String[] args) {
        String ages = "18-24";
        String regex = "-";

        String[] ageArray = ages.split(regex);

        for (String s : ageArray) {
            System.out.println(s);
        }
    }
}
  • 示例:
package com.xuweiwei.demo1;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegexDemo4 {
    public static void main(String[] args) {
        /**
         * 模式和匹配器的典型应用
         */
        //把正则表达式编译成模式对象
        Pattern p = Pattern.compile("a*b");
        //通过模式对象得到匹配器对象,这个时候被匹配的字符串
        Matcher m = p.matcher("aaaab");
        //调用匹配器的matches的功能
        boolean result = m.matches();
        System.out.println("result:" + result);

    }
}
  • 示例:
package com.xuweiwei.demo1;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 获取三个字符组成的单词
 */
public class RegexDemo5 {
    public static void main(String[] args) {
        String str = "da jia ting wo shuo,jin tian yao xia yu,bu shang wan zi xi,gao xing bu?";
        String regex = "\\b\\w{3}\\b";

        //把规则编译成模式对象
        Pattern p = Pattern.compile(regex);
        //通过模式对象得到匹配器对象
        Matcher matcher = p.matcher(str);
        //通过find方法就是查找有没有满足条件的子串
        while (matcher.find()){
            System.out.println(matcher.group());
        }

    }
}

2 Random类

2.1 Random类概述

  • 产生随机数的类。

2.2 Random的构造方法和成员方法

  • 无参构造方法:没有给种子,用的是默认的种子,是当前时间的毫秒值。
public Random()
  • 有参构造方法:给出了指定的种子。
public Random(long seed)
  • 成员方法:返回int范围内的随机数。
public int nextInt()
  • 成员方法:返回的是[0,n)范围内的随机数。
public int nextInt(int n)
  • 示例:
package com.xuweiwei.demo1;

import java.util.Random;

public class RandomDemo {
    public static void main(String[] args) {
        Random random = new Random();

        for (int i = 0; i < 100; i++) {
            int num = random.nextInt(100) + 1;
            System.out.println(num);
        }
    }
}

3 System类

3.1 System类的概述

  • System类包含一些有用的类字段和方法。
  • System类不能被实例化。

3.2 常用的成员方法

  • 成员方法:
public static void gc()
  • 成员方法:
public static void exit(int status)
  • 成员方法:
public static long currentTimeMillis()
  • 成员方法:
public static void arraycopy(Object src,int srcPos,Object dest,int destPos,int length)
  • 示例:
package com.xuweiwei.demo1;

import java.util.Arrays;

public class SystemDemo {
    public static void main(String[] args) {
        int[] arr = {11,22,33,44,55};

        int[] arr2 = {6,7,8,9,10};

        System.arraycopy(arr,1,arr2,2,2);

        System.out.println(Arrays.toString(arr));
        System.out.println(Arrays.toString(arr2));

    }
}

4 BigInteger类

4.1 BigInteger类概述

  • 可以让超过Integer范围内的数据进行运算。

4.2 BigInteger的应用

  • 示例:
package com.xuweiwei.demo1;

import java.math.BigInteger;

public class BigIntegerDemo {
    public static void main(String[] args) {
        BigInteger b = new BigInteger("2147483648");

        System.out.println(b);

    }
}

5 BigDecimal类

5.1 BigDecimal类的引入

  • 示例:
package com.xuweiwei.demo1;

public class BigDecimalDemo {
    public static void main(String[] args) {
        System.out.println(0.09 + 0.01);
        System.out.println(1.0 - 0.32);
        System.out.println(1.015 * 100);
        System.out.println(1.301 / 100);
    }
}

5.2 BigDecimal类概述

  • 不可变的、任意精度的有符号的十进制数。

5.3 BigDecimal的应用

  • 示例:
package com.xuweiwei.demo1;

import java.math.BigDecimal;

public class BigDecimalDemo {
    public static void main(String[] args) {
        BigDecimal d1 = new BigDecimal("0.09");
        BigDecimal d2 = new BigDecimal("0.01");

        System.out.println(d1.add(d2));

        d1 = new BigDecimal("1.0");
        d2 = new BigDecimal("0.32");

        System.out.println(d1.subtract(d2));

        d1 = new BigDecimal("1.015");
        d2 = new BigDecimal("100");

        System.out.println(d1.multiply(d2));

        d1 = new BigDecimal("1.301");
        d2 = new BigDecimal("100");

        System.out.println(d1.divide(d2));
    }
}

6 Date类

6.1 Date类概述

  • 类Date表示特定的瞬间,精确到毫秒。

6.2 Date类的构造方法及成员方法

  • 构造方法:
public Date()
  • 构造方法:
public Date(long date)
  • 成员方法:
public long getTime()
  • 成员方法:
public void setTime(long time)
  • 示例:
package com.xuweiwei.demo1;

import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        Date d = new Date();
        System.out.println(d);

        Date d2 = new Date(System.currentTimeMillis());
        System.out.println(d2);

    }
}
  • 示例:
package com.xuweiwei.demo1;

import java.util.Date;

public class DateDemo {
    public static void main(String[] args) {
        Date d = new Date();
        long time = d.getTime();
        System.out.println(time);

    }
}

7 DateFormat类

7.1 DateFormat类的概述

  • DateFormat是日期/时间格式化子类的抽象类,它以语言无关的方式格式化并解析日期或时间。
  • 是抽象类,使用的是子类SimpleDateFormat类。

7.2 SimpleDateFormat类的方法

  • 构造方法:
public SimpleDateFormat()
  • 构造方法:
public SimpleDateFormat(String pattern)
  • 方法:将Date类型的数据格式化为字符串
public final String format(Date date)
  • 方法:将字符串解析为Date类型的数据
public Date parse(String source)
           throws ParseException
  • 示例:
package com.xuweiwei.demo1;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;

public class SimpleDateFormatDemo {
    public static void main(String[] args) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

        //String --> Date
        Date date = sdf.parse("2018-04-02 12:12:12");
        System.out.println(date);

        //Date --> String
        String str = sdf.format(new Date());
        System.out.println(str);

    }
}

8 Calendar类

8.1 Calendar类概述

  • Calendar是一个休闲类,它为特定瞬间和一组诸如YEAR等日历字段之间的转换提供了一些方法,并为操作日历字段(如获取下个星期的日期)提供了一些方法。

8.2 常用的成员方法

  • 成员方法:获取Calendar对象(其实实例是Calendar的子类的实例化对象,因为Calendar是抽象类)
public static Calendar getInstance()
  • 成员方法:返回给定日历字段的值。
public int get(int field)
  • 成员方法:设置当前日历的年月日。
public final void set(int year, int month,int date)
  • 成员方法:根据给定的日历字段和对应的时间,来对当前的日历进行操作。
public abstract void add(int field, int amount)
  • 示例:
package com.xuweiwei.demo1;

import java.util.Calendar;

public class CalendarDemo {
    public static void main(String[] args) {
        Calendar calendar = Calendar.getInstance();
        //获取年
        int year = calendar.get(Calendar.YEAR);
        //获取月
        int month = calendar.get(Calendar.MONTH);
        //获取日
        int day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"-"+(month+1)+"-"+day);

    }
}
  • 示例:
package com.xuweiwei.demo1;

import java.util.Calendar;

public class CalendarDemo2 {
    public static void main(String[] args) {
        //获取当前的日历时间
        Calendar calendar = Calendar.getInstance();
        //获取年
        int year = calendar.get(Calendar.YEAR);
        //获取月
        int month = calendar.get(Calendar.MONTH);
        //获取日
        int day = calendar.get(Calendar.DATE);
        System.out.println(year+"-"+(month+1)+"-"+day);

        //三年前的今天
        calendar.add(Calendar.YEAR,-3);
        year = calendar.get(Calendar.YEAR);
        month = calendar.get(Calendar.MONTH);
        day = calendar.get(Calendar.DAY_OF_MONTH);
        System.out.println(year+"-"+(month+1)+"-"+day);

    }
}

原文地址:https://www.cnblogs.com/xuweiweiwoaini/p/9315553.html

时间: 2024-11-02 19:11:07

Java基础十三的相关文章

Java基础重点指南

Java基础重点指南 每个人都有自己的学习方法,下面是我学完Java后总结的一些要点: 一:(了解)Java诞生于1995年,由Sun公司开发.它把源代码编译成“中间码”,然后通过“Java虚拟机”把中间码“翻译”成机器码,再在本机上运行.Java有3个版本(Java SE,Java EE,Java ME),SE用于桌面程序开发,也是Java基础,EE用于企业式开发(如网站等),ME用于嵌入式开发(如掌上电脑,移动通讯开发等).通过 Java 可以做很多,但前提是要深入学习. 二:Java 编译

JAVA基础篇NO1--环境变量的配置及命名规则

标签(空格分隔): java基础 一:计算机概述 计算机:硬件和软件 硬件:控制器 运算器 存储器 输入和输出设备       存储器:外存(硬盘) 内存 软件:系统软件 应用软件   系统软件:windows Linux DOS IOS Android Unix macOS           裸机:没有安装操作系统   应用软件:QQ Office MD web APP 二:软件开发与计算机语言 什么是软件?按照特定的组织顺序的数据和指令的集合 计算语言分类 :机器语言(二进制0和1) 汇编

微冷的雨Java基础学习手记(一)

使用Java理解程序逻辑 之凌波微步 船舶停靠在港湾是很安全的,但这不是造船的目的 北大青鸟五道口原玉明老师出品 1.学习方法: 01.找一本好书 初始阶段不适合,可以放到第二个阶段,看到知识点时,要进行验证 02.查看帮助文档和搜索引擎的使用 借助网络上的Blog文章 03.不要急功近利 不要抱着速成的想法,否则必然走弯路学习编程不是一蹴而就的事情付出的成本高,才能有一个高薪的收入 04.不要浮躁 不要什么都学,只学有用的 浮躁的程度和技术水平成反比的走自己的路,让别人去浮躁去吧! 每天问问自

“全栈2019”Java第九十三章:内部类应用场景(迭代器设计模式)

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第九十三章:内部类应用场景(迭代器设计模式) 下一章 "全栈2019"Java第九十四章:局部内部类详解 学习小组 加入同步学习小组,共同交流与进步. 方式一:关注头条号Gorhaf,私信"Java学习小组". 方式二:关注公众号Gorhaf,回复"Java学习

“全栈2019”113篇Java基础学习资料及总结

难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java第一章:安装JDK11(Mac) "全栈2019"Java第二章:安装JDK11(Windows) "全栈2019"Java第三章:安装开发工具IntelliJ IDEA "全栈2019"Java第四章:创建第一个Java程序 "全栈2019

夯实Java基础系列目录

学习Java语言也有很长一段时间了,但是之前只是学习了Java的基础部分,对于什么IO流.多线程之类的只学习了一点,并没有过多的去学习,所以随着后面学习的深入,发现没有这部分知识更加的重要,所以现在我又重新来复习一遍Java基础,努力打好自己的Java基础,在这里我要说句话(其实一万句都不够):Java基础非常重要!Java基础非常重要!Java基础非常重要! 一.Java基础 1.夯实Java基础(一)--数组 2.夯实Java基础(二)--面向对象之封装 3.夯实Java基础(三)--面向对

JAVA基础学习流程

JAVA基础学习: 第一步:学习JAVA的开发环境配置.开发第一个Java程序.也建议大家开始使用eclipse等IDE,不必纠结是不是一定要从记事本开始. 第二步:学习数据类型.运算符.变量.这是编程的基础,是程序的“砖块”.这些内容大多数编程语言都有,而且非常类似. 第三步:学习控制语句.这是编程的基础,是程序的“混凝土”.有了控制语句+变量,理论上你就可以写任意的程序了.因此,这是进入程序的门槛,需要大量的练习. 第四步:学习面向对象基础.通过类.对象.包等基本概念讲解.学习的时候,一定要

-Java基础-Java介绍

声明:本栏目所使用的素材都是凯哥学堂VIP学员所写,学员有权匿名,对文章有最终解释权:凯哥学堂旨在促进VIP学员互相学习的基础上公开笔记. java的介绍 1.1java简介 Java是一种可以撰写跨平台应用程序的面向对象的程序设计语言. 它最初被命名为Oak,目标设定在家用电器等小型系统的编程语言,来解决诸如电视机.电话.闹钟.烤面包机等家用电器的控制和通讯问题.由于这些智能化家电的市场需求没有预期的高,Sun放弃了该项计划.就在Oak几近失败之时,随着互联网的发展,Sun看到了Oak在计算机

第3篇-JAVA基础

第3篇-JAVA基础 每篇一句 :目标是给梦想一个期限,行动与坚持就是实现梦想的过程 初学心得: 遇到困难或问题,它不是休止符,而是引向你如何解决问题的标识 (笔者:JEEP/711)[JAVA笔记 | 时间:2017-03-26| JAVA基础 Ⅱ] 上篇回顾 上篇文章中我们学习了JAVA底层的运行机制与深入剖析以及解释其中JAVA基础代码的含义 本篇文章将JAVA基础Ⅱ全面剖析解释,因为JAVA基础非常重要,务必要牢记知识点!!! 1.JAVA基础语法格式 JAVA采用unicode编码 1