Java知识复习(常用类)

运行Java程序的参数

    public static void main(String[] args) {

    }
  • public修饰符:Java类由JVM调用,所以用public修饰符把main方法暴露出来,让JVM可以自由调用。
  • static修饰符:JVM直接通过类来调用main方法。
  • void返回值:JVM调用该方法,返回值传给JVM没有意义,所以用void返回值。

Scanner类

Scanner主要提供两个方法来扫描输入的内容。

- hasNextXxx,是否还有下一个输入项。
- nextXxx,获取下一个输入项。

import java.util.Scanner;

public class TestDemo03 {
    private static Scanner input;

    public static void main(String[] args) {
        input = new Scanner(System.in);
        while (input.hasNext()) {
            System.out.println("输入的内容是:" + input.next());
        }
    }
}

Scanner还可以读取文件输入

Scanner input = new Scanner(new File("abc.txt")); 

BufferedReader获取键盘输入


    public class TestDemo03 {

    public static void main(String[] args) {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String string = null;
        try {
            while (null != (string = br.readLine())) {
                System.out.println("输入的是:" + string);
            }
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}

正则表达式

  • 正则表达式是一个对字符串进行处理的工具。

正则表达式的特殊字符

字符解释
x字符x(x可以代表任何合法的内容)
\0mnn八进制0mnn所表示的字符
\xhh十六进制值0xhh所表示的字符
\uhhhh十六进制值0xhhhh所表示的UNICODE字符
\t制表符(’\u0009’)
\n换行符(’\u000A’)
\r回车符(’\u000D’)
\f换页符(’\u000C’)
\a报警符(’\u0007’)
\eEscape符(’\u001B’)
\cxx对应的控制符。x必须为a-z或A-Z之一,如:\cM匹配Ctrl-M。
$匹配一行的结尾,要匹配$本身,要用\$
^匹配一行的开头,要匹配^本身,要用\^
()标记子表达式的开始和结束位置
[]用于确定中括号表达式的开始和结束位置
{}用于标记前面子表达式的出现频度
*指定前面子表达式出现0次或多次
+指定前面子表达式出现1次或多次
?指定前面子表达式出现0次或1次
.匹配除了换行符\n之外的任何单字符
\用于转义下一个字符,或者指定八进制、十六进制符
|指定两项之间任选一项

(要匹配以上字符本身,要用\连接需要匹配的字符)。

预定义字符

预定义字符说明
.可以匹配任何字符
\d匹配0-9的所有数字
\D匹配非数字
\s匹配所有的空白字符,包括空格、制表符、回车符、换页符、换行符等
\S匹配所有的非空白字符
\w匹配所有的单词字符,包括0-9,所有字母和下划线_
\W匹配所有非单词字符
使用Pattern和Matcher来使用正则表达式(Pattern是不可变类,可供多个并发线程安全使用)
package com.example.chapter;

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

public class TestDemo01 {
    public static void main(String[] args) {
        String[] mails = { "shajs@123.com", "sds@as.cn", "asas@22.gov", "saas.com", "asas@xx.org" };
        String mailRegEx = "\\w{3,10}@\\d+\\.(com|cn|gov|org)";
        Pattern pattern = Pattern.compile(mailRegEx);
        Matcher matcher = null;
        for (String mail : mails) {
            if (matcher == null) {
                matcher = pattern.matcher(mail);
            } else {
                matcher.reset(mail);
            }
            String result = mail + (matcher.matches() ? " is" : " is not") + " email";
            System.out.println(result);
        }
    }
}

System类

  • System类代表的是当前Java程序的运行平台,程序不能创建System的对象
  • System类提供了两个方法可以获取系统当前的时间,currentTimeMillis()和nanoTime(),这两个方法的返回值为long.前者单位为毫秒,后者单位为纳秒。
public class Demo01 {
    public static void main(String[] args) {
        System.out.println(System.currentTimeMillis());//1506004702738
        System.out.println(System.nanoTime());//273159338426083

    }
}
  • System类的in、out、err分别代表系统的标准输入(一般为键盘)、标准输出(一般为显示器)、错误输出流。
  • System类提供了setIn(),setOut(),setErr()方法来改变系统的标准输入、标准输出和标准错误输出流。

Object类

Object类是所有类、数组、枚举类的父类。当定义一个类没有用extends关键字为它指定父类,则该类默认继承Object类。

几个常用的方法:

  • boolean equals(Object obj);判断指定对象与该对象是否相等,可以自己重写该方法定义判断相等的条件。
  • protected void finalize();当系统中没有引用变量引用该对象时,垃圾回收器调用此方法来清理该对象的资源。
  • Class< ?> getClass();返回该对象的运行时类。
  • int hashCode();返回该对象的hashCode值。
  • String toString();返回该对象的字符串表示。

Java7新增的Objects类
Objects是一个工具类,提供了一些工具方法来操作对象。

String ,StrinfBuffer ,StringBuilder 类

  • String类是不可变类。
  • StringBuffer 对象代表一个字符序列可变的字符串。
  • StringBuilder与StringBuffer基本相似,StringBuffer是线程安全的,StringBuilder不是线程安全,所以性能略高。(优先考虑使用StringBuilder类)
  • String类提供的大量构造方法和方法可以参考api文档。

Math类
Math类是一个工具类,构造器由private修饰,所以无法创建Math对象。
Math类提供的方法可参考api文档。

Calendar类

Calendar类可以更好的处理日期和时间。Calendar类是抽象类。
public class Demo01 {
    public static void main(String[] args) {
        // 创建一个默认的Calendar对象
        Calendar calendar = Calendar.getInstance();
        System.out.println(calendar.get(Calendar.YEAR));// 取出年,2017
        // 月份的起始值为0,所以得到当前月份要加1
        System.out.println(calendar.get(Calendar.MONTH));// 取出月,8
        System.out.println(calendar.get(Calendar.DATE));// 取出日,22
        System.out.println(calendar.getTime());

        calendar.add(Calendar.YEAR, 2);
        System.out.println(calendar.getTime());

        calendar.roll(Calendar.MONTH, -2);
        System.out.println(calendar.getTime());
    }
}

add与roll的区别
add(int field , int amount)方法主要用于改变Calendar特定字段的值;
1. 当被修改的字段超出范围,会发生进位,上一级字段也会增大

        calendar.set(2010, 2, 12);
        calendar.add(Calendar.MONTH, 11);
        System.out.println(calendar.getTime());//Sat Feb 12 16:52:39 CST 2011

2.如果下一级字段也需要改变,该字段会修改到变化最小的值。

        calendar.set(2019, 11, 30);
        calendar.add(Calendar.MONTH, 2);
        System.out.println(calendar.getTime());//Sat Feb 29 16:59:57 CST 2020

roll(int field,int amount) 方法
1.修改的字段超出范围,上一级字段不会改变。
2.下一级字段处理的方式与add类似。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值