Object
-
Object类,所有类的父类(根类/基类),自定义一个类时,若没有明确继承类,默认继承Object类。
-
Object中定义的方法,是所有对象都具备的方法
-
Object类型可以存储任何对象
1).作为参数,可以接受任何对象
2).作为返回值,可以返回任何对象
在平常的工作学习中可能用到的方法如下:
1.getClass():返回此对象的运行时类。 1). public final native Class<?> getClass(); 2).返回引用中存储的实际对象类型 3).应用:通常用于判断两个引用中实际存储对象类型是否一致 2.hashCode() 1). public native int hashCode(); 2).返回该对象的十六进制的哈希码值 3).哈希算法是根据对象的地址、字符串、数字计算出来的int类型的数值 4).哈希码值并不唯一,尽量保证相同对象返回相同哈希码值,保证不同对象返回不同的哈希码值 如果两个对象的哈希码值不同,那这两个对象一定不等; 如果两个对象的哈希码值相同,不能确保这两个对象一定相等。 3.toString() 1). public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()); } 2).返回该对象的字符串表现形式 3).可以根据程序需求覆盖该方法,例:打印对象的各个属性值 4.equals() 1). public boolean equals(Object obj) { return (this == obj); } 2).比较两个对象的地址是否相同 3).可以覆盖,比较两个对象的值(内容)是否相同
5.finalize()
1). protected void finalize() throws Throwable { }
}
2).当对象被判定为垃圾对象时,由JVM自动调用此方法,用以标记垃圾对象进入回收队列
3).垃圾对象:没有有效引用指向该对象时,为垃圾对象
4).垃圾回收:由GC(垃圾回收器)自动回收、销毁垃圾对象,释放数据存储空间
a.自动回收:当JVM内存耗尽,一次性回收所有垃圾对象
b.手动回收:调用 System.gc() 方法,通知JVM执行垃圾回收
6.clone()
1). protected native Object clone() throws CloneNotSupportedException;
2).克隆对象对应的类需要实现Cloneable接口,否则会报错:java.lang.CloneNotSupportedException
7.延展
1).常覆写Object类的3个方法:toString(),equals(Object obj),hashCode()
2).为什么notify(), wait()等方法定义在Object中,而不是Thread中?
Object中的wait(), notify()等方法,和synchronized(同步机制)一样,会对“对象的同步锁”进行操作。
wait()会使“当前线程”挂起等待,因为线程进入挂起状态,所以线程应该释放它锁持有的“同步锁”,否则其它线程获取不到该“同步锁”而无法运行!
等待线程可以被notify()或notifyAll()唤醒。那么notify()是依据什么唤醒等待线程的?或者说,wait()等待线程和notify()之间是通过什么关联起来的?答案是:依据“对象的同步锁”。
负责唤醒等待线程的那个线程(我们称为“唤醒线程”),它只有在获取“该对象的同步锁”(这里的同步锁必须和等待线程的同步锁是同一个),并且调用notify()或notifyAll()方法之后,才能唤醒等待线程。虽然,等待线程被唤醒;但是,它不能立刻执行,因为唤醒线程还持有“该对象的同步锁”。必须等到唤醒线程释放了“对象的同步锁”之后,等待线程才能获取到“对象的同步锁”进而继续运行。
总之,notify(), wait()依赖于“同步锁”,而“同步锁”是对象锁持有,并且每个对象有且仅有一个!这就是为什么notify(), wait()等函数定义在Object类,而不是Thread类中的原因。
String
1.public final class String implements java.io.Serializable, Comparable<String>, CharSequence {} (String---》被final修饰---》不能被继承)
2.常用方法
1).charAt()
2).indexOf / lastIndexOf
3).contains
4).toCharArray
5).split
6).endsWith / startsWith
7).toUpperCase / toLowerCase
8).trim 、 replace
9).subString
10).
11).
StringBuilder
线程不安全的可变字符序列
1)构造方法
StringBuilder():以默认容量创建空的StringBuilder对象
StringBuilder(int capacity):以指定容量创建空的StringBuilder对象
StringBuilder(String str):以指定的字符串创建StringBuilder对象
2)成员方法
获取功能
int capacity():获取容量
int length():获取长度
添加功能
append(int value):追加。可以追加多种类型
insert(int offset,String s):在指定的位置插入指定数据
删除功能
deleteCharAt(int index):删除指定索引处的元素
delete(int start,int end):删除[start,start-1]范围内的元素
替换功能
replace(int start,int end,String s):将[start,end-1]范围内的元素替换成指定字符串
反转功能
reverse():元素反转
截取功能
String subString(int start):截取指定位置一直到末尾
String subString(int start,int end):截取[start,end-1]范围
StringBuffer
Scanner
1)构造方法
Scanner(InputStream is)
构造一个文本扫描器,它生成的值是从指定的值输入流扫描的
System.in 是一个标准的输入流,属于InputStream
2)成员方法
boolean hasNext():是否有下一个数,有true,没有false
String next():获取下个数
int nextInt():获取下个int数据
String nextLine():获取一行数据
Math
成员方法
abs(int a):绝对值
ceil(double d):向上取整
floor(double d):向下取整
max(int a,int b):最大值
pow(double a,double b):a的b次幂
random():随机数[0.0,1.0]
round(float f):四舍五入
sqrt(double d):算术平方根
Random
1)构造方法
Random():以当前时间毫秒值作为种子,创建Random对象
Random(long seed):以指定种子创建Random对象
2)成员方法
nextInt():生成1个int类型范围的随机数
nextInt(int n):产生1个[0,n-1]范围内的随机数
生成0~n之间的数
①(int)Math.random()*(n+1)
②Random r = new Random();
r.nextInt(m)表示生成[0,m-1]之间的随机数,也就是说random.nextInt(m+1),将生成[0,m]之间的随机整数。
r.nextInt(n+1)
生成n~m之间的随机数
①n+(int)(Math.random()*(m+1-n));
②Random r = new Random();
r.nextInt(m+1-n)+n;
Date
表示特定的瞬间,精确到毫秒值
1)构造方法
Date():以当前时间毫秒值创建Date对象
Date(long time):以指定的毫秒值创建Date对象
2)成员方法
long getTime():获取Date对象的毫秒值
setTime(long time):设置Data对象的毫秒值
DateFormat
它是一个抽象类,用来格式化或者解析日期
格式化:Date————》String
解析:String————》Date
getDateInstance(int style,Locale loc):获取日期格式器,该格式器具有给定的语言环境和给定的格式化风格
String format(Date date):格式化
Date parse(String time):解析
SimpleDateFormat
它是DateFormat的子类
1)构造方法
SimpleDateFormat():以默认模式创建对象
SimpleDateFormat(String pattern):以指定模式创建对象
常用模式
yyyy:年 MM:月 dd:日
HH:时 mm:分 ss:秒
2)常成员方法
String format(Date date):格式化
Date parse(String time):解析
Calendar
日历类,用于获取或者操作日历字段(年月日)
该类是一个抽象类,不可以实例化
成员方法
static Calender getInstance():以默认时区和语言创建日历
int get(int field):获取指定字段的日历值
set(int field,int value):给指定的日历字段设置指定的值
set(int year,int month,int date):设置年月日
Date getTime():获取日历对象的日期
setTime(Date d):设置日历对象的日期
add(int field,int amount):对指定的日历字段添加指定的值
System
没有构造方法
成员方法
gc():运行垃圾回收处理机制(系统会在某个不确定的时间调用该方法)
会调用finalize(),进行垃圾回收
exit(int status):退出JVM,0表示非异常退出
currentTimeMills():获取当前时间毫秒值
arrayCopy(Object[] srcArr,int srcPos,Object[] desArr,int destPos,int len):数组复制
BigInteger
1)构造方法
BigInteger(String s):通过字符串创建BigInteger对象
2)成员方法
add(BigInteger bi):+
subtract(BigInteger bi):-
multiply(BigInteger bi):*
divide(BigInteger bi):/
BigDecimal
用于解决浮点型运算精度损失的问题
1)构造方法
BigDecimal(String s):通过字符创建BigDecimal对象
2)成员方法
add(BigDecimal bi):+
subtract(BigDecimal bi):-
multiply(BigDecimal bi):*
divide(BigDecimal bi):/