Java学习笔记14

Java学习——Java常用类(上)


概述

Java提供了强大的类库,帮助开发者快速完成开发任务。
本篇主要介绍以下常用类:

  • 包装类:Integer等
  • 字符串相关:String、 StringBuffer、 StringBuilder
  • 日期相关: Date、 Calendar、 SimpleDateFormat
  • 其他:Math、Random、Runtime、System

包装类

在Java中8种基本数据类型不属于类,不具备“对象”的特征,没有成员变量和方法,不方便进行面向对象的操作。为此,Java提供包装类(Wrapper Class)来将基本数据类型包装成类,每个Java基本数据类型在java.lang包中都有一个相应的包装类, 每个包装类对象封装一个基本数据类型数值。

在这里插入图片描述
包装类都是final的,不能被继承。包装类都是不可 变类,类似于String类,一旦创建了对象,其内容 就不可以修改。包装类还可以分成三种不同类别: 数值包装类(Byte、Short、Integer、Long、Float和 Double)、Character和Boolean。

数值包装类

相同点:
构造方法类似
每一个数值包装类都有两个构造方法,以Integer 为例,
Integer构造方法如下:

  • Integer(int value):通过指定一个数值构造 Integer 对象。
  • Integer(String s):通过指定一个字符串 s 构造对象,s 是十进制字符串表示的数值。

共同的父类
这6个数值包装类有一个共同的父类—— Number,Number是一个抽象类。
除了这6个子类还有:AtomicInteger、AtomicLong、 BigDecimal和BigInteger。

Number是抽象类,要求它的子类必须实现如下6个方法:

  • byte byteValue():将当前包装的对象转换为 byte类型的数值。
  • double doubleValue():将当前包装的对象转 换为double类型的数值。
  • float floatValue():将当前包装的对象转换为float类型的数值。
  • int intValue():将当前包装的对象转换为int 类型的数值。
  • long longValue():将当前包装的对象转换为 long类型的数值。
  • short shortValue():将当前包装的对象转换为 short类型的数值。

通过这6个方法数值包装类可以互相转换这6种数值,但是需要注意的是大范围数值转换为小范围的数值,可能会导致精度的丢失。

compareTo()方法
每一个数值包装类都有 int compareTo(数值包装 类对象)方法,可以进行包装对象的比较。
方法返回值是 int ,如果返回值是0,则相等;如果返回值小于0,则此对象小于参数对象;如果返回值大于0,则此对象大于参数对象。

字符串转换为基本数据类型

每一个数值包装类都提供一些静态parseXXX()方法将字符串转换为对应的基本数据类型。
例如 int 类型的包装类 Integer

  • static int parseInt(String s):将字符串 s 转换有符号的十进制整数。
  • static int parseInt(String s, int radix):将字符串 s 转换有符号的整数,radix是指定基数,基数用来指定进制。注意这种指定基数的方法在浮点数包装类(Double和Float)中没有的。

基本数据类型转换为字符串

每一个数值包装类都提供一些静态toString()方法实现将基本数据类型数值转换为字符串,以 Integer为例,方法定义如下:

  • static String toString(int i):将该整数i转换为有符号的十进制表示的字符串。
  • static String toString(int i, int radix):将该整数 i
    转换为有符号的特定进制表示的字符串,radix是基数可以指定进制。注意这种指定基数的方法在浮点数包装类(Double和Float)中没有的。

举例:

// 1.构造方法 ,这样手动将数据封装到封装类里已经过时

//创建数值为80的Integer对象 
Integer objInt = new Integer(80); 

//创建数值为80.0的Double对象 
Double objDouble = new Double(80.0); 

//通过"80.0"字符串创建数值为80.0的Float对象 
Float objFloat = new Float("80.0"); 

//通过"80"字符串创建数值为80的Long对象 
Long objLong = new Long("80"); 
// 2.Number类方法 ,类型转换
		//Integer对象转换为long数值 
		long longVar = objInt.longValue(); 
		
		//Double对象转换为int数值 
		int intVar = objDouble.intValue(); 
		System.out.println("intVar = " + intVar); 
		System.out.println("longVar = " + longVar); 
// 3.compareTo()方法 
		Float objFloat2 = new Float(100); 
		int result = objFloat.compareTo(objFloat2); // 此时result = -1,表示objFloat小于objFloat2 
		System.out.println(result); 
// 4.字符串转换为基本数据类型 ,parseXXX()方法
		// 10进制"100"字符串转换为10进制数为100
		int intVar2 = Integer.parseInt("100"); 
// 16进制"ABC"字符串转换为10进制数为2748 
		int intVar3 = Integer.parseInt("ABC", 16); 
		System.out.println("intVar2 = " + intVar2); 
		System.out.println("intVar3 = " + intVar3); 
// 5.基本数据类型转换为字符串 
// 100转换为10进制字符串 
String str1 = Integer.toString(100); 
// 100转换为16进制字符串结果是64 
		String str2 = Integer.toString(100, 16); 
		System.out.println("str1 = " + str1); 
		System.out.println("str2 = " + str2);

日期相关

Java 8之前日期类是java.util.Date,Date类比较古老,其中的很多方法现在已经废弃了,但是目前仍然有很多程序还在使用Date类。
Java 8之前与日期时间相关类还有 DateFormat、Calendar和TimeZone,DateFormat用于日期格式化,Calendar日历类,TimeZone是时区类。

Date类

我们从API中可以看到Date类的愈多方法都显示已过时:
在这里插入图片描述
我们则在其中常用几个方法,
构造方法:

  • Date():用当前时间创建Date对象,精确到毫秒。
  • Date(long date):指定标准基准时间以来的毫秒数创建Date对象。标准基准时间是格林威治时间1970年1月1日00:00:00。

普通方法:

  • boolean after(Date when):测试此日期是否在 when日期之后。
  • boolean before(Date when):测试此日期是否在 when日期之前。
  • int compareTo(Date anotherDate):比较两个日期的顺序。如果参数日期等于此日期,则返回值0;如果此日期在参数日期之前,则返回小于0 的值;如果此日期在参数日期之后,则返回大于0的值。
  • long getTime():返回自1970年1月1日00:00:00以来此Date对象表示的毫秒数。
  • void setTime(long time):用毫秒数time设置日期对象,time是自1970年1月1日00:00:00以来此Date对象表示的毫秒数。

举例:

public class Demo1 {
	public static void main(String[] args) {
		Date now = new Date(); 	//获取系统当前时间
		System.out.println("now = " + now); 
		System.out.println("now.getTime() = " + now.getTime()); 	//调用方法转换为自1970年1月1日00:00:00的毫秒数
		System.out.println(); 
		Date date = new Date(1234567890123L); 	//设置long类型的

		System.out.println("date = " + date); 
		
		// 测试now和date日期 
		display(now, date); 
		
		// 重新设置日期time 
		date.setTime(9999999999999L); 
		System.out.println("修改之后的date = " + date); 
		
		// 重新测试now和date日期 
		display(now, date); 
	}


	// 测试after、before和compareTo方法 
	public static void display(Date now, Date date) { 
		System.out.println(); System.out.println("now.after(date) = " + now.after(date)); 
		System.out.println("now.before(date) = " + now.before(date));
		System.out.println("now.compareTo(date) = " + now.compareTo(date)); 
		System.out.println(); 
		}
}

运行结果:
在这里插入图片描述

日期格式化和解析

我们对系统的日期输出格式不习惯的话,可以对日期进行格式化输出。日期格式化类是 java.text.DateFormat,DateFormat是抽象类,它的常用具体类是java.text.SimpleDateFormat。

DateFormat中提供日期格式化和日期解析方法,具体方法说明如下:

  • String format(Date date):将一个Date格式化为日期/时间字符串。
  • Date parse(String source):从给定字符串的开始解析文本,以生成一个日期对象。如果解析失败则抛出ParseException。

SimpleDateFormat构造方法如下:

  • SimpleDateFormat():用默认的模式和默认语言环境的日期格式符号构造SimpleDateFormat。
  • SimpleDateFormat(String pattern):用给定的模式和默认语言环境的日期格式符号构造 SimpleDateFormat。pattern参数是日期和时间格式模式,表中所示是常用的日期和时间格式模式。

在这里插入图片描述
举例:

public class Demo2 {
	public static void main(String[] args) throws ParseException { 
		Date date = new Date(1234567890123L);
		System.out.println("格式化前date = " + date); 
		
		DateFormat df = new SimpleDateFormat(); 
		System.out.println("格式化后date = " + df.format(date)); 
		
		df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
		System.out.println("格式化后date = " + df.format(date)); 
		
		String dateString = "2018-08-18 08:18:58"; 
		Date date1 = df.parse(dateString); 
		System.out.println("从字符串获得日期对象 = " + date1); 
	}

}

运行结果:
在这里插入图片描述

Calendar类

从Date类的API中看到大多方法,已由Calendar类中的方法取代:
在这里插入图片描述
有时为了取得更多的日期时间信息,或对日期时间进行操作,可以使用java.util.Calendar类,Calendar 是一个抽象类,不能实例化,但是通过静态工厂方法getInstance()获得Calendar实例。

Calendar类的主要方法:

  • static Calendar getInstance():使用默认时区和语 言环境获得一个日历。
  • void set(int field, int value):将给定的日历字段 设置为给定值。
  • void set(int year,int month,int date):设置日历字
    段YEAR、MONTH和DAY_OF_MONTH的值。
  • Date getTime():返回一个表示此Calendar时间值 (从1970年1月1日00:00:00至现在的毫秒数)的
    Date对象。
  • boolean after(Object when):判断此Calendar表示 的时间是否在指定时间之后,返回判断结果。
  • boolean before(Object when):判断此Calendar表 示的时间是否在指定时间之前,返回判断结 果。
  • int compareTo(Calendar anotherCalendar):比较 两个Calendar对象表示的时间值。

举例:

public class Demo3 {
	public static void main(String[] args) throws ParseException { 
		// 获得默认的日历对象 
		Calendar calendar = Calendar.getInstance(); 
		
		// 设置日期2018年8月18日 
		calendar.set(2018, 7, 18);
		
		// 通过日历获得Date对象 
		Date date = calendar.getTime(); 

		System.out.println("格式化前date = " + date); 
		DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); 
		System.out.println("格式化后date = " + df.format(date)); 
		System.out.println(); 
		calendar.clear(); 
		
		// 设置日期2018年8月28日 
		calendar.set(Calendar.YEAR, 2018); 
		calendar.set(Calendar.MONTH, 7); 
		calendar.set(Calendar.DATE, 28);

		// 通过日历获得Date对象 
		date = calendar.getTime(); 
		System.out.println("格式化前date = " + date); 
		System.out.println("格式化后date = " + df.format(date)); }
}

运行结果:
在这里插入图片描述

总结

Java常用类(上),( ̄︶ ̄)↗ !!!
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值