JavaSE——常用类

常用类

Object类

所有类的之间父类或间接父类,在类的定义的时候,若没有显示extends继承某个类,则默认继承自Object类

//Object类中的方法
getClass();		//返回当前对象所在类的Class对象,每个类只有一个Class对象

hashCode();		//返回当前对象的哈希编码

equals(Object obj);		//判断两个对象是否相等,比较的是两个对象引用是否相等

clone();		//返回该对象的一个拷贝,是浅拷贝

toString();		//返回该对象的一个字符串形式的简要描述,可以自己重写定义,默认为:“类名 + 哈希编码”

notify();		//唤醒该对象的等待对象中的一个线程
notifyAll();	//唤醒该对象的等待对象中的所有线程

wait();			//将当前正在运行的线程加入到该对象的等待队列中,等待指定的毫秒数,或者一直等待直到将它唤醒
wait(long timeout);

finalize();		//垃圾回收器GC将回收该对象前执行的一系列操作,可以用户重新定义。

BigDecimal

常用方法
BigDecimal(String str);				//BigDecimal的创建

BigDecimal add(BigDecimal augend);				//加法

BigDecimal subtract(BigDecimal subtrahend);		//减法

BigDecimal multiply(BigDecimal multiplicand);	//乘法

BigDecimal add(BigDecimal divisor);				//除法

BigDecimal add(BigDecimal divisor,int scale,RoundingMode roundingMode);			
/*
	scale:保留几位小数	
	roundingMode:舍入模式
		ROUND_CEILING    	向正无穷方向舍入
		ROUND_DOWN    	  	向零方向舍入
		ROUND_FLOOR    	  	向负无穷方向舍入
		ROUND_HALF_DOWN    	向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向下舍入, 例如1.55 保留一位小数	结果为1.5
		ROUND_HALF_EVEN    	向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,如果保留位数是奇数,使用ROUND_HALF_UP,如果是偶数,使用ROUND_HALF_DOWN
		ROUND_HALF_UP       向(距离)最近的一边舍入,除非两边(的距离)是相等,如果是这样,向上舍入, 1.55保留一位小数结果为1.6,也就是我们常说的“四舍五入”
		ROUND_UNNECESSARY   计算结果是精确的,不需要舍入模式
		ROUND_UP    		向远离0的方向舍入
*/
*/

包装类

byte short int long float double都继承自抽象类Number

基本数据类型包装类型
byteByte
shortShort
intInteger
longLong
charCharacter
booleanBoolean
floatFloat
doubleDouble
装箱和拆箱
//装箱,valueOf()
int num1 = 3;
Integer i1 = new Integer(num1);
Integer i2 = Integer.valueOf(i1);

//拆箱,intValue()
Integer i3 = new Integer("234");
int num2 = i3.intValue();

其他包装类的装箱和拆箱类似,jdk1.5之后支持自动装箱(自动调用valueOf()方法)和自动拆箱(自动调用intValue()方法)

Integer缓冲池

我们在使用装箱valueOf的时候会出现一些这样的情况:

Integer i1 = 100;
Integer i2 = 100;
System.out.println(i1 == i2);	//true

结果是true,但是i1和i2是引用数据类型,指向的是在堆中的不同对象,比较的结果应该是false,接着看:

Integer i1 = 250;
Integer i2 = 250;
System.out.println(i1 == i1);	//false

可以看到,比较的结果又是false了,很奇怪吧?为什么呢?原因就出在了在自动装箱默认调用valueOf()方法,让我们看看valueOf中的部分源码:

static final int low = -128;
static final int high;
static final Integer cache[];

...
    
h = 127;

...
    
high = h;

cache = new Integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
   cache[k] = new Integer(j++);

...
    
public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

分析上面源码,我们可以看到在Integer类中有一块缓冲池,缓冲池已经存储了-128~127对应的包装类对象,当需要包装的整数在这个范围内时,直接返回缓冲池里面的对象,不在这个范围内时,返回一个新的对象,因此会出现前面那种现象。

基本数据类型和字符串的相互转换
//基本数据类型转换为字符串,包装类toString()方法
int num1 = 15;
System.out.println(Integer.toString(num));
System.out.println(Integer.toString(num,16));	//转换为16进制的格式的字符串
System.out.println(Integer.toHexString(num,16));	//等价于上面的方法

//字符串转换成基本数据类型,parseXXX()方法,注意数据类型要兼容
String s1 = "true";
boolean b1 = Boolean.ParseBoolean(s1);

Date类

Date类中的很多方法都已经过时,在Calendar类中都有实现。

常用方法
Date();	//日期对象的创建

Date(long time);			//创建一个日期对象,该日期为自标准基准时间(1970.1.1 00:00:00 GMT)以来的毫秒数time

boolean after(Date date);	//判断日期是否在date的后面

boolean before(Date date);	//判断日期是否在date的前面

boolean equals(Date date);	//判断日期是否与date相等

int compareTo(Date date);	//与date相比较,若小于则返回-1,若等于则返回0,若大于则返回1

void setTime(long time);	//设置时间,时间具体为自标准基准时间(1970.1.1 00:00:00 GMT)以来的毫秒数time

String toString();			//将时间转换为字符串表示形式

String toLocaleString()l;	//将时间转换为本地时间的字符串表示形式,已过时

Calendar类

常用方法
protected Calendar();	//日历类的构造方法,由于是保护类型的,所以在包外除了子类外,无法创建其对象。

static Calendar getInstance();	//返回一个日历对象,日历类提供的获取日历对象的一个静态方法

void get(int field);	
//返回指定字段的值,获取时间信息,field可取:Calendar.YEAR,Calendar.MONTH,Calendar.DAY_OF_MONTH或者
//Calendar.DATE,Calendar.HOUR(12小时)或者Calendar.HOREOFDAY(24小时),Calendar.MINUTE,Calendar.SECOND

long getTimeInMillies();	//返回当前时间的毫秒数

Date getTime();				//返回当前时间的日期对象

void setTime(Date date);	//设置当前时间的日期对象

void set(int year,int month,int date,int hourofday,int minute,int second);	//设置日历的年,月,日,时,分,秒

void set(int field,int value);	//将指定字段(field)的值设为(value)

void add(int field,int value);	//将指定字段的值加上value

int getActualMaximum(int field);	//返回指定字段的最大值

int getActualMinimum(int field);	//返回指定字段的最小值

SimpleDateFormat类

SimpleDateFormat是一个根据指定的时间或日期的字符串模式,进行格式化和解析的类。

public class Test01 {
    public static void main(String[] args) throws ParseException {
        /**
         *  y   年
         *  M   月
         *  d   日
         *  H   时
         *  m   分
         *  s   秒
         *  S   毫秒
         */
        SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");

        Date date1 = new Date();

        //格式化日期,返回格式化后的日期字符串
        String str1 = simpleDateFormat.format(date1);
        System.out.println(str1);

        String str2 = "2021年11月11日 11时11分11秒";
        Date date2 = simpleDateFormat.parse(str2);
        System.out.println(date2);
    }
}

System类

/*
	src:原数组
	srcPos:复制起始的原数组的下标
	dest:目的数组
	destPos:复制起始的目的数组的下标
	length:复制的长度
*/
static void arraycopy(Object src,int srcPos, Object dest, int destPos,int length);

static long currentTimeMillis();	//获得当前系统时间的毫秒数

static void gc();	//手动调用垃圾回收器

static void exit(int status);	//退出虚拟机,status为0表示正常退出

未完待续…
持续更新中…

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值