java lang包

类型

java基本类型及其封装类

类型占位数默认值封装类
boolean1falseBoolean
byte80Byte
short160Short
char16‘\u0000’Character
int320Integer
float320.0fFloat
long640LLong
double640.0dDouble

封装类常用方法:valueOf(),praseInt(),intValue()等。
java虚拟机封装类的缓存机制
Byte、Short、Integer、Long缓存-128~127
Character缓存0~127,Float和Double不缓存
自动类型提升
short、byte、char在进行计算时JVM会自动将其提升为int计算。
浮点数处理
JVM在处理浮点数运算时,不抛出任何运行时异常,会产生NAN值(0/0.0)和INFINITE值(非零数/0.0)。
enum
创建:public enum E_Name{A,B;},通过调用父类
new Enum<E_Name>(“A”,0)实现。
Obejct
常用方法:equals比较引用、hashcode使用native方法、toString:类全名+@+hashcode、clone、finalize、wait、notify。
规范:如果两个对象equals为true则其hashcode也相同。
String(不可变)
基本方法: endWith、startWith()是否以某个字符开头、indexOf返回搜索字符的索引、subString(0,len)返回指定范围子字符串、replace(a,b)将a替换为b、split划分、tocharArray将string转换为char[],charAt(index)获得索引的值、format格式输出字符串、trim去掉字符两边unicode编码<32的字符,intern返回该字符在字符常量池中的地址。
正则表达:
Pattern p=Pattern.compile(regular expression);
Matcher m=p.matcher(string);
m.lookingAt():输入序列从区域开头部分与模式相匹配 boolean
m.matches():判断整体是否匹配正则 boolean
m.find():整个序列按照正则寻找匹配的子项,可能有多个子项匹配 boolean
m.group():返回匹配的子序列
m.start():返回匹配子序列的开始索引
m.end().返回匹配子序列的结束索引
规则:.单个字符、*0或多个字符、+至少一个、?非贪婪匹配、{m,n}匹配m到n个、^匹配开头、$匹配结尾。\d数字、\w数字+英文、\s空白、\b边界。
String方法详解:
equals:先匹配引用->匹配类型instanceOf->匹配长度->匹配内容
hashcode:初始h=0,h=h*31+char[i],选择31的原因:h*31=h<<5-h;
字符串常量池
字符串常量池在jdk1.7后存放在堆中,s=“abc”,用字面量创建字符对象时会先在字符串常量池中检查是否存在该字符串存在则返回常量池中的地址,不存在则在常量池中创建该字符串。使用new String()创建时会先检查常量池中有无该字符,没有则在常量池中创建,然后再在堆中创建相应字符对象。
字符串+号的原理
a+b+c+d
首先new StringBuilder(),然后使用StringBuilder方法append添加a、b、c、d,最后使用new String()获得相加结果字符。StringBuilder初始char[]大小为16,扩容为size<<1+2
StringBuilder
线程不安全,append()、insert(index,string)
StringBuffer
线程安全
Class
代表着一个类的类型信息,存储了对应类的几乎所有的信息。
获得class类对象的三种方式(返回运行时类型)
1.Class c=new Object().getClass();
2.Class c=Object.class;
3.Class c=Class.forName(“java.lang.Object”);//参数为类的完整限制名
Integer.TYPE=int.class
常用方法
getName()-完整限制名、getSimpleName()-类名
getComponentType()返回类数组的组件类型,如果不是数组返回null
getConstructors()、getMethods()、getFields():获得公有构造器、方法和字段(包括超类)
getDeclaredConstructors()、getDeclaredFields()、getDeclaredMethods():获得所有构造器、方法和字段(不包括超类)
getModifiers():获得类前修饰符
isArray():是否是数组类型
isPrimitive():是否是基本类型
newInstance():创建类的实例(区别?)只能利用无参构造函数创建类实例对象

Constructor c=Class.getConstructor(String.class,int.class):获得具体构造函数
c.newInstance(“s”,1):有参构造函数创建类实例对象

Field f=Class.getField();
getModifiers()、getType()、getName().
例:public string name;

Method m=Class.getMethod();
getModifiers() ,getReturnType(),getName(),getParameters(),getExceptionTypes().
例:public void m_name(int 1) throws Exception{}

setAccessible:如果是私有字段,要先将该私有字段进行取消权限检查的能力。
ClassLoader
JVM自带类加载器,每个类加载器都有一个父加载器
Bootstrap ClassLoader:加载核心类库,%JRE_HOME%\lib下的rt.jar、resources.jar、charsets.jar和class等
Extention ClassLoader:加载目录%JRE_HOME%\lib\ext目录下的jar包和class文件
App ClassLoader:加载当前应用的classpath的所有类。
双亲委托
查找class对象,当前类加载器缓存如果无->父加载器如果无->父加载器路径下查找如果无->子加载器路劲下查找,如果未找到抛出异常。
Complier
为Java代码提供对本地代码的支持和相关服务。

工具

Math
pow(x,n):x的n次方、abs()绝对值、round四舍五入、ceil取上、floor取下、sqrt平方根、random[0,1)之间的数
SecurityManager
java安全管理器,通过加载policy来分配权限。
Override
标识某一个方法是否覆盖了它的父类的方法
SuppressWarnings
抑制编译器产生警告信息

接口

Appendable
可附加char序列和值的对象,append
CharSequence
CharSequence是char值的可读序列,charAt
Cloneable
标记接口,表示该对象能被克隆
Comparable
调用int compareTo方法使继承他的类可以进行比较大小(排序)<0 当前元素小于比较元素。
Iterable
iterator(),迭代器遍历hasNext,next,可使用for-each循环遍历。
初始cursor=0,lastSet=-1,next后cursor=i+1,lastSet=i;remove后 cursor-=
1,lastSet=-1;
Readable
int read()缓冲区读取,返回-1终止读取,read方法遇到’ '空格或-1输出。hasNext()调用read方法,如果遇到-1返回false,遇到空格退出当前读取。
Runnable
run() 在独立线程中调用,类继承非Thread类使当前类实现多线程。
UncaughtExceptionHandler
未捕获异常崩溃时回调此方法。

系统

Throwable异常
Error:Error比Exception更严重,不易通过后续代码处理和修复,如VirtualMachineError,ThreadDeath。
Exception:checked(try catch中捕获),unchecked(RuntimeException)如NullPointerException, IndexOutOfBoundsException。
System
System.arraycopy(),复制数组,源,index,目,index,length。
currentTimeMillis(),当前毫秒时间
nanoTime(),当前纳秒时间
gc(),运行垃圾收集器
exit(),终止正在运行的JVM,0正常终止
getenv(),获取操作系统环境变量。操作系统级
getProperties(),系统属性包括当前用户,java运行时的版本,以及文件路径分隔符等。java平台中有效
identityHashCode(),与没有重写的hashCode获得值相同
Runtime单例模式
每个java程序在运行时相当于启动了一个JVM进程,每个JVM进程都对应一个RunTime实例。
gc(),运行垃圾收集器
系统内存信息
freeMemory
totalMemory
maxMemory
处理器数:availableProcessors()
执行本地程序:exec(String);
加载动态链接库:load()
Thread
daemon:是否为守护线程(守护线程随用户线程一同死亡)
priority:线程优先级,1~10,默认5
start(),启动start方法后,系统才开启一个线程来执行子任务,并为线程分配资源,线程进入就绪状态。
run(),覆盖Runable中的方法,线程进入运行状态时自动执行。
sleep(),交出cup使其执行其他线程,进入阻塞状态,不释放锁
yield(),交出cup使其执行其他线程,进入就绪状态,不释放锁
join(),等待这个线程死亡。 实际调用wait方法,释放锁
wait(),将当前线程置入休眠状态
notify(),唤醒当前对象上的等待线程,等待获取该对象的对象锁
interrupt(),用来中断一个正处于阻塞状态的线程.
ProcessBuilder-final类
用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。
通过构造方法可以设置当前工作目录,还可以改变环境参数。
ProcessBuilder.start(),生成Process抽象类
directory(),目录
environment(),运行环境
Process-abstract类
Runtime.exec()和ProcessBuilder.start()两种方式获取进程
exitValue(),返回子进程结果
destroy(),终止子进程
waitFor(),子进程等待。(可能导致子进程阻塞,甚至产生死锁)
getInputStream(),获得子进程输入流
StackTraceElement
堆栈跟踪中的一个元素,每个元素表示单个堆栈帧。
1.Thread.currentThread().getStackTrace()
2.Throwable.getStackTrace()

其他

jdk1.8之后,default关键字,被其修饰的方法可以不必由子类实现,并且由dafault修饰的方法在接口中有方法体。

java label语法
circulate不能是java中的关键词,类似goto的功能
后面需跟循环体,标记循环的位置

直接跳出双重循环,使用常规break只能跳出内部的循环,continue类似
public static void main(String[] args) {
    circulate:
    for(int i=0;i<2;i++){
        for(int j=0;j<5;j++){
            System.out.println(i+" "+j);
            if(j==3){
                break circulate;
            }
        }
    }
}
结果:
0 0
0 1
0 2
0 3

底层实现
编译器自动生成相关指令
在这里插入图片描述
如果j!=3则跳转51,j+1
如果j==3则跳转63,退出循环

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值