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.UncaughtExceptionHandlerClasses
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
VoidEnums
Character.UnicodeScript
ProcessBuilder.Redirect.Type
Thread.StateExceptions
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
UnsupportedOperationExceptionErrors
AbstractMethodError
AssertionError
BootstrapMethodError
ClassCircularityError
ClassFormatError
Error
ExceptionInInitializerError
IllegalAccessError
IncompatibleClassChangeError
InstantiationError
InternalError
LinkageError
NoClassDefFoundError
NoSuchFieldError
NoSuchMethodError
OutOfMemoryError
StackOverflowError
ThreadDeath
UnknownError
UnsatisfiedLinkError
UnsupportedClassVersionError
VerifyError
VirtualMachineErrorAnnotation Types
Deprecated
FunctionalInterface
Override
SafeVarargs
SuppressWarnings
java.math
- Classes
BigDecimal
BigInteger
MathContext - Enums
RoundingMode