Java.lang包中的常用类概括
一、java lang 包概览
二、Object类及方法
Object类
Java中所有类都继承Object类,不需要显示声明extends,这个继承在编译阶段就已经确定
所分享的Object类的方法
(1) clone():快速创建对象的副本,两个对象指向不同的内存地址
(2) equals():默认实现是比较对象的引用(对象的内存地址)
(3) hashCode():返回调用该方法的对象的哈希码值(正整数形式)
(4) toString():返回该对象的字符串表示,Object.toString()方法默认返回
对象类名@对象哈希码的无符号十六进制对象表示
(5) getClass():获取一个类的定义信息,运行时期访问对象类型信息(包括函数和字段),返回该对象 的运行时类的一个java.lang.Class对象
三、Math类以及方法
floor() 取整,返回小于目标数的最大整数 (向下取整)
ceil() 取整,返回大于目标数的最小整数(向上取整)
round() 四舍五入取整
角度、弧度互相转换
三角运算(正弦、余弦、正切等)
四、Class类以及方法
1、Class类是什么
当Java虚拟机载入一个类的时候,它就会自动创建一个Class类的实例来表示这个类,并且是在生成.class文件时创建
2、获得实例的3种途径
(1)对象.getClass()获取该对象的Class实例
Class classObj = ClassName.getClass()
(2)Class.forName()
(3)类.class
3、作用
把Java类中的各种成分映射成相应的java类
4、方法
getSuperclass()
这是一个本地方法,获取父类对应的class对象
forName()
返回与带有给定字符串名的类或接口相关联的 Class 对象
getMethods()
返回 Method 对象的一个数组,这些对象反映此 Class 对象表示的类或接口声明的所有方法,包括公共、保护、默认(包)访问和私有方法,但不包括继承的方法
五、System类以及方法
1、作用
系统级的很多属性和控制方法都放置在该类的内部
2、常用方法
• currentTimeMillis() 返回当前计算机时间
• Arraycopy() 复制数组
• getProperties() 获取当前系统的属性
• getenv() 获取系统环境变量
• exit() 终止当前正在运行的 Java 虚拟机
• gc() 请求系统进行垃圾回收
六、String、StringBuffer、 StringBuilder类及方法
在java中,采用了一个final char数组实现String,这就意味着一旦String被创建,那么它就是不可变的。除此之外还定义一个int类型的hash,用来保存该String的hash值。
/String常量池/
String s1 = “ab”;
String s2 = “ab”;
s1= =s2?
String s3 = new String(“ab”)
String s4 = new String(“ab”)
s3= =s4?
String s5 = “abab”
s5==“ab”+”ab”?
s5== s2+s1?
/*String不可变性/
String s = “abc”;
s = s +1;
System.out.println(s);
StringBuffer与StringBuilder
1、比较
StringBuffer是可改变的,以提高字符串的连接效
率并且是线程安全的
StringBuilder 速度较快,但线程不安全,适用于单线程操作字符串缓冲区的大量数据,StringBuffer则适用于多线程操作字符串缓冲区的的大量数据
String:适用于少量的字符串操作的情况
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况
StringBuffer类的方法
构造方法:
StringBuffer()、StringBuffer(int)、StringBuffer(String)
注:系统为 String 类对象分配内存是,按照对象中所含字符的实际个数等量分配。而 StringBuffer 类对象分配内存时,出去字符所占空间外,再另加 16个字符大小的缓冲区
获得长度、容量和设置长度
int capacity()、 void setLength(int ) 、int length()
添加、替换、反转
append()、 replace(int,int,String) 、 reverse()
插入、删除
Insert(int,String)、setCharAt(int,char) 、delete(int,int)、deleteCharAt(int)
七、Throwable 异常类
Error类
代表了编译和系统的错误,不允许捕获,程序无法处理的错误,表示运行应用程序中较严重问题,一般指的是jvm出现的问题,如内存溢出、栈溢出,虚拟机内部错误等
Exception类
程序本身可以处理的异常
运行时异常类
对应于编译错误,它是指Java程序在运行时产生的由解释器引发的各种异常,编译器不对异常进行检查
非运行时异常类
可检查异常
异常处理机制
• 抛出异常
• 捕获异常
• try-catch-finally机制
– 如果try、catch中有return语句呢?
– 除不可抗力因素外,finally语句是最后执行
• 常用方法
– getCause():返回抛出异常的原因
– getMessage():返回异常的消息信息
– printStackTrace():对象的堆栈跟踪输出至错误输出流,作为字段 System.err 的值
public class test {
public int add(int a,int b) {
try {
return a+b;
}catch(Exception e){
System.out.println(“catch语句块”);
}finally {
System.out.println(“finally语句块”);
}
return 0;
}
public static void main(String[] args) {
test t=new test();
System.out.println(“和是”+t.add(9, 34));
}
}
A、catch语句块 和是43
B、编译异常
C、finally语句块 和是43
D、和是43 finally语句块
八、线程Thread
线程
2种方式实现
• Ruunable接口
• Thread类
何时启动及运行状态
在线程的Thread对象上调用start()方法;
执行:启动新的执行线程(具有新的调用栈);
该线程从新状态转移到可运行状态;
当该线程获得机会执行时,其目标run()方法将运行
线程的5种状态
新建状态、就绪状态、运行状态、阻塞状态、死亡状态
• 阻塞3种类型的状态
等待阻塞:运行状态中的线程执行wait()方法
同步阻塞:获取synchronized同步锁失败(因为锁被其它线程所占用)
其他阻塞:调用线程的sleep()或join()或发出了I/O请求时,线程会进入到阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入就绪状态
线程
并行和并发的概念
并行指多个cpu实例或者多台机器同时执行一段处理逻辑,是真正的同时;
并发指通过cpu调度算法,让用户看上去同时执行,实际上从cpu操作层面不是真正的同时
在java中,每次程序运行至少启动2个线程,一个main、一个垃圾收集线程
常用方法
• sleep(N):强迫一个线程睡眠N毫秒
• isAlive():判断一个线程是否存活
• activeCount():程序中活跃的线程数
• currentThread():得到当前线程
• setName():为线程设置一个名字
• wait():强迫一个线程等待
• notify():通知一个线程继续运行
• setPriority():设置一个线程的优先级
sleep()和 wait()的区别
前者睡眠时保持对象锁,仍然占有;后者则释放
线程同步(synchronized )