JavaSe——5、java常用类

java.util.Scanner

  • 文本扫描器,主要提供hasNext()和next()方法,可以读取键盘输入,文本文件、字符串等。
  • 具体使用
public static void main(String[] args) {
            Scanner sc =new Scanner(System.in);
            //读取文件 Scanner sc =new Scanner("F:/text.txt");
            //设置分隔符为回车 sc.useDelimiter("\n");
            while(sc.hasNext()){
                System.out.println(sc.next());
            }

java.lang.System(java运行平台)

public final class System {

    private static native void registerNatives();
    static {
        registerNatives();
    }

      private System() {
    }
      public final static PrintStream out = null;
      public final static PrintStream err = null;
  }
  • final修饰的,JDK提供的工具类,构造器由private修饰,不可new创建对象,属性都是final static修饰,方法都是static修饰。ctrl点进去System类里,ctrl+o看看属性和方法吧。
  • 成员变量(in、out、err):

    • public final static InputStream in,in属性,标准输入流。
    • public final static PrintStream out ,out属性,标准输出流。
    • public final static PrintStream err,err属性,标准错误输出流。
  • 成员方法:

    • getenv();获取环境变量。
    • getProperty();获取系统属性。
    • gc();垃圾回收。
    • runFinalization();资源清理。
    • currentTimeMillis();返回与1970年1月1日的时间差,long型。
    • identityHashCode();唯一的hashcode值,经过内存地址计算得到,即使某类被重写hashcode方法,该值也不变。
    • setIn()、setOut()、setErr:改变输入输出流的方式。

java.lang.Runtime(java运行时环境)

public class Runtime {
 private static Runtime currentRuntime = new Runtime();
    public static Runtime getRuntime() {
        return currentRuntime;
    }
      private Runtime() {}
 }
  • 每个Java程序对应一个Runtime实例,可通过getRuntime()获取。

  • 成员方法:

    • gc()、runFinalization(),垃圾清理、资源回收。
    • load()、loadLibrary(),加载文件、加载动态链接库。
    • availableProcessors(),处理器数量,freeMemory(),totalMemory(),MaxMemory(),空闲内存数、总内存数、最大内存数(堆内存)。
    • exec(),启动单独的进程来执行外部程序。

java.lang.Object类

  • 所有的类、数组和枚举类的父类,没有extends指定父类的类,默认extends Object。
  • 成员方法:
    • boolean equals();判断俩对象是否相等(必须为同一个对象)。
    • finalize();当没有引用变量引用该对象,垃圾回收器通过此方法回收资源。
    • getClass();返回该对象运行时类。
    • hashCode();返回该对象hashCode值。
    • toString();运行时类名@16进制hashcode值,通常重写。
    • wait();notify();notifyAll();控制线程的暂停和运行。
    • clone();
      protected修饰,只能被子类重写或调用。
      实现clone的步骤:
      1、实现Cloneable接口,只是标记性接口,里面没有方法,声明实现了该接口的对象可以自我克隆。
      2、实现clone()方法。
      3、在clone()方法里调用super.clone();即通过Object的clone()方法实现自我克隆。
Class User implements Cloneable{
    int age;
    Address address;
    ...
    public User clone()throws CloneNotSupportedException{
        return (User)super.clone();
    }

}
Class Test(){
    main(){
        User u1 = new User();
        User u2 = u1.clone();
        u1==u2;//false
        u1.address==u2.address//true
    }
}

复制所有对象的属性值,因为address是引用类型,地址值一样,所以为true。

  • clone方法执行的是浅拷贝,即拷贝类里的基本类型变量时,可以完成赋值拷贝,但是拷贝类里的引用类型的变量时,只能拷贝到地址,指向的还是同一对象。深拷贝的要求是即使是引用类型,也要创建一个新的对象副本。

java.util.Objects(工具类)

  • 空指针安全的操作对象的工具类,即对象为null时不会报空指针异常。
  • 成员方法:
    • toString();hashCode();等方法。

String、StirngBuffer、StringBuilder

  • (单独写一篇)

java.lang.Math

这里写图片描述
这里写图片描述

  • 静态成员变量:π和e。
  • 成员方法:三角函数、绝对值、随机数、log值、四舍五入、开方、n次方等。

在读Math类源码的时候发现个事情,sin、cos等函数的实现是 return
StrictMath.sin(a);而进入StrictMath类中找到sin函数,发现public static native double
sin(double
a);native修饰,那么java不能实现sin函数吗,为什么要链接其他方法实现。查了很多资料,大概说是用泰勒级数的13级展开式求得的。参考如下:
https://stackoverflow.com/questions/26146190/how-is-sine-implemented-in-java

java.util.concurrent.ThreadLocalRandom extends Random

java.util.Random

  • 根据种子生成伪随机数,可以默认种子也可以指定种子,ThreadLocalRandom继承了Random类,可以并发产生随机数。

java.math.BigDecimal

  • 为了解决float和double等浮点数运算遇到的精度丢失问题。
  • 实例化最好用new BigDecimal(“0.2501”);或者用BigDecimal.valueOf(0.35);
  • 有add、substract、multiply、divide、pow等方法。
  • 主要用于精确的计算(比如商业、银行等)。

java.util.Date

  • 创建Date:
    • Date d1 = new Date(); Tue Aug 29 21:36:13 CST 2017
  • 比较日期的前后:
    • before、after、compareTo
  • 格式化输出日期:
            Date date=new Date();
            SimpleDateFormat matter=new SimpleDateFormat("y年M月d日H时m分s秒");
            String time=matter.format(date);

格式替换规则:
G: 替换为公元标志,例如AD或“公元”;
y:替换为2位数字的年,例如:98;
M:替换为年中的月份,例如:July、July、7;
w:替换为年中的周数,例如:28;
W:替换为月份中的周数,例如:3;
D:替换为年中的天数,例如:189;
d:替换为月份中的天数,例如:26;
F:替换为月份中星期,例如:4;
E:替换为星期中的天数,例如Tuesday、Tue、星期二;
a:替换为Am/Pm标记,例如PM;
H:替换为一天中的小时数(0~23),例如0;
k:替换为一天中小时数(1~24),例如11;
K:替换为Am/Pm中的小时数(0~11),例如:11;
h:替换为Am/Pm中的小时数(1~12),例如:12.
m:替换为小时中的分钟数,例如:39;
s:替换为分钟数的秒数,例如49;
S:替换为毫秒数,例如290;
z:替换为时区,例如CST;

java.util.Calendar

public abstract class Calendar implements Serializable, Cloneable, Comparable<Calendar> {
  • 抽象类,可以通过getInstance();创建实例,创建时可指定TimeZone和Locale。
  • 修改日期、时间方便,具有容错性等。

TimeZone

  • 抽象类,表示时区,getDisplayName(),获取默认时区名称,getDefault(),获取运行机器的默认时区,getID(),获取默认时区ID。

java.util.regex下有两个类,分别是:

java.util.regex.Pattern和java.util.regex.Matcher。

  • String类:matches();replaceAll();replaceFirst();split();参数都可以用正则表达式。

  • Pattern类:

    • 创建实例:Pattern p = Pattern.compile(“/d”);Pattern的实例就是编译后的正则表达式。
    • split方法:p.split(“agbc13”);返回一个字符串数组。String的split方法就是调用Pattern类的split实现的。
    • matcher方法:匹配字符串,返回true或false。Pattern.matches(“\d+”,”2223”);
    • Matcher m=p.matcher(“22bb23”); 即matcher方法仅用字符串作参数,返回一个Matcher对象,用来保存匹配后的结果信息。
  • Matcher类:
    • matches():返回true或false。lookAt():匹配到字符串最前面才返回true。find():任意位置匹配到就返回true。用过lookAt、matches或find后,则可用start、end、group分别返回首个匹配到的位置,最后一个被匹配到的位置和被匹配到的所有子序列。

附:

java.lang包中的接口、类、枚举、异常、错误、注解:

java.lang

  • Interfaces
    Appendable
    AutoCloseable
    CharSequence
    Cloneable
    Comparable
    Iterable
    Readable
    Runnable
    Thread.UncaughtExceptionHandler

    扫描二维码关注公众号,回复: 947447 查看本文章
  • Classes
    Boolean
    Byte
    Character
    Character.Subset
    Character.UnicodeBlock
    Class
    ClassLoader
    ClassValue
    Compiler
    Double
    Enum
    Float
    InheritableThreadLocal
    Integer
    Long
    Math
    Number
    Object
    Package
    Process
    ProcessBuilder
    ProcessBuilder.Redirect
    Runtime
    RuntimePermission
    SecurityManager
    Short
    StackTraceElement
    StrictMath
    String
    StringBuffer
    StringBuilder
    System
    Thread
    ThreadGroup
    ThreadLocal
    Throwable
    Void

  • Enums
    Character.UnicodeScript
    ProcessBuilder.Redirect.Type
    Thread.State

  • Exceptions
    ArithmeticException
    ArrayIndexOutOfBoundsException
    ArrayStoreException
    ClassCastException
    ClassNotFoundException
    CloneNotSupportedException
    EnumConstantNotPresentException
    Exception
    IllegalAccessException
    IllegalArgumentException
    IllegalMonitorStateException
    IllegalStateException
    IllegalThreadStateException
    IndexOutOfBoundsException
    InstantiationException
    InterruptedException
    NegativeArraySizeException
    NoSuchFieldException
    NoSuchMethodException
    NullPointerException
    NumberFormatException
    ReflectiveOperationException
    RuntimeException
    SecurityException
    StringIndexOutOfBoundsException
    TypeNotPresentException
    UnsupportedOperationException

  • Errors
    AbstractMethodError
    AssertionError
    BootstrapMethodError
    ClassCircularityError
    ClassFormatError
    Error
    ExceptionInInitializerError
    IllegalAccessError
    IncompatibleClassChangeError
    InstantiationError
    InternalError
    LinkageError
    NoClassDefFoundError
    NoSuchFieldError
    NoSuchMethodError
    OutOfMemoryError
    StackOverflowError
    ThreadDeath
    UnknownError
    UnsatisfiedLinkError
    UnsupportedClassVersionError
    VerifyError
    VirtualMachineError

  • Annotation Types
    Deprecated
    FunctionalInterface
    Override
    SafeVarargs
    SuppressWarnings

java.math

  • Classes
    BigDecimal
    BigInteger
    MathContext
  • Enums
    RoundingMode

猜你喜欢

转载自blog.csdn.net/lk7688535/article/details/77658667