JAVA学习笔记Ⅸ——JAVA中的包装类

包装类

int、float、double、boolean、char 等。基本数据类型不具备对象的特性的,比如基本类型不能调用方法、功能简单。为了让基本数据类型也具备对象的特性, Java 为每个基本数据类型都提供了一个包装类,这样我们就可以像操作对象那样来操作基本数据类型

基本数据类型 对应包装类型
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

包装类主要提供了两大类方法:
1.将本类型和其他基本类型进行转换的方法
2.将字符串和本类型及包装类互相转换的方法

包装类示例 Integer

Integer 包装类的构造方法:

方法 说明
Integer(int value) 创建一个Integer对象,表示指定的int
Integer(String s) 创建一个Integer对象,将String指定的参数转换为int

如下代码示例

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        
		int i = 2;//定义int类型变量,值为2
		Integer m = new Integer(5);
		Integer n = new Integer("8");
        
        System.out.println("i的值:" + i);
		System.out.println("m的值:" + m);
		System.out.println("n的值:" + n);
	}
}
i的值:2
m的值:5
n的值:8

Integer包装类的常用方法:

返回值 方法名 解释
byte byteValue() 将该Integer转为byte类型
double doubleValue() 将该Integer转为double类型
float floatValue() 将该Integer转为float类型
int intValue() 将该Integer转为int类型
long longValue() 将该Integer转为long类型
static int parseInt(String s) 将该字符串转为int类型
String toString() 将该Integer转为字符串类型
static Integer valueOf(String s) 将字符串转为Integer类型

部分方法使用如下例所示

HelloWorld.java

public class HelloWorld {
    public static void main(String[] args) {
        
		// 定义int类型变量,值为86
		int score1 = 86; 
        
		// 创建Integer包装类对象,表示变量score1的值,这种方法叫手动装箱
		Integer score2=new Integer(score1);
        
		// 将Integer包装类转换为double类型
		double score3=score2.doubleValue();
        
		// 将Integer包装类转换为float类型
		float score4=score2.floatValue();
        
		// 将Integer包装类转换为int类型
		int score5 =score2.intValue();
		
		//将Integer包装类转换成字符串类型
		String score6 = score2.toString();

		System.out.println("Integer包装类:" + score2);
		System.out.println("double类型:" + score3);
		System.out.println("float类型:" + score4);
		System.out.println("int类型:" + score5);
		System.out.println("String类型:" + score6);
		System.out.println("*********String类型将字符分开**********");
		System.out.println(score6.charAt(0) + "  " + score6.charAt(1));
	}
}
Integer包装类:86
double类型:86.0
float类型:86.0
int类型:86
String类型:86
*********String类型将字符分开**********
8  6

拆箱与装箱

基本类型和包装类之间经常需要互相转换,以 Integer 为例(其它几种基本类型与包装类之间转换与Integer雷同),包装类与基本类型之间的转换分为装箱拆箱,通俗来说装箱是指将一个基本类型包装成一个包装类,拆箱是指将一个包装类型转换成一个基本类型。

装箱:把基本类型转换成包装类,使其具有对象的性质,又可分为手动装箱和自动装箱

int i = 520;//定义一个int基本类型
Integer x = new Integer(i);//new一个Integer对象,其值与i相同,手动装箱
Integer y = i;//直接赋值,自动装箱

拆箱:和装箱相反,把包装类对象转换成基本类型的值,又可分为手动拆箱和自动拆箱

Integer i = new Integer(520);//new一个Integer对象,其值为520
int x = i.intValue();//通过包装类的方法将其转换成int基本类型
int y = i;//直接赋值,自动拆箱

基本类型与字符串之间的转换

基本类型转换为字符串有三种方法:

1.使用包装类的toString()方法可以将基本类型转换为字符串
2.使用String类的valueOf()方法可以将基本类型转换为字符串
3.用一个空字符串加上基本类型,得到的就是基本类型数据对应的字符串

int c = 10;
String str1 = Integer.toString(c);//方法一
String str2 = String.valueOf(c);//方法二
String str3 = c + "";//方法三

将字符串转换成基本类型有两种方法:

1.调用包装类的parseXxx静态方法
2.调用包装类的valueOf()方法转换为基本类型的包装类,会自动拆箱

String str = "0";
int d = Integer.parseInt(str)//方法一
int e = Integer.valueOf(str)//方法二

综合示例如下

public class HelloWorld {
    public static void main(String[] args) {
		double m = 78.5;
		//将基本类型转换为字符串
		String str1 =  Double.toString(m)                            ;
		System.out.println("m 转换为String型后与整数20的求和结果为:"+(str1+20));
		
		String str = "180.20";
	    // 将字符串转换为基本类型
		Double a =  Double.parseDouble(str);
		System.out.println("str 转换为double型后与整数20的求和结果为:"+(a+20));
	}
}
m 转换为String型后与整数20的求和结果为:78.520
str 转换为double型后与整数20的求和结果为:200.2

JAVA中时间表示

基本每一种语言都有对时间进行表示。例如Python中的datatime模块,集合了大量处理时间的方法,函数等。JAVA中也具有对时间处理的方式。

Date与SimpleDateFormat

Date类位于java.util包中,示例如下,其时间输出为星期→月→日→时:分:秒→China Standard Time (中国标准时间,北京时间,东八区)→年

HelloWorld.java

import java.util.Date;

public class HelloWorld {
    
    public static void main(String[] args){
        Date d = new Date();//使用默认的构造方法创建Date对象
        
        System.out.println(d);
	}
}
Thu Jul 23 15:13:53 CST 2020

使用SimpleDateFormat对时间格式进行格式化,SimpleDateFormat类位于java.text包中可以将日期转换为指定格式的文本,也可将文本转换为日期。

1.使用 format() 方法将日期转换为指定格式的文本,示例如下

HelloWorld.java

import java.util.Date;
import java.text.SimpleDateFormat;

public class HelloWorld {
    
    public static void main(String[] args){
        Date d = new Date();//使用默认的构造方法创建Date对象
        
        System.out.println(d);
        
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        String today = sdf.format(d);
        
        System.out.println(today);
	}
}

代码中的 yyyy-MM-dd HH:mm:ss为预定义字符串, yyyy表示四位年,MM表示两位月份,dd表示两位日期,HH表示小时(使用24小时制),mm表示分钟,ss表示秒,这样就指定了转换的目标格式,最后调用format()方法将时间转换为指定的格式的字符串。

2.使用 parse() 方法将文本转换为日期,示例如下

HelloWorld.java

import java.util.Date;
import java.text.SimpleDateFormat;
import java.text.ParseException;

public class HelloWorld {

    public static void main(String[] args) throws ParseException {
        String day = "2020年07月23日 15:31:30";

        System.out.println(day);

        SimpleDateFormat df = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
        Date today = df.parse(day);

        System.out.println(today);
    }
}
2020年07月23日 15:31:30
Thu Jul 23 15:31:30 CST 2020

代码中的yyyy年MM月dd日 HH:mm:ss指定了字符串的日期格式,调用parse()方法将文本转换为日期。需要注意以下三点
1.2020年07月23日 15:31:30yyyy年MM月dd日 HH:mm:ss要对应,除了日期对应,还有汉字对应,如果使用的是其它字符,例如使用-,那么有如下对应示例2020-07月23日 15:31:30yyyy-MM月dd日 HH:mm:ss
2.调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理,需要添加throws ParseException
3.使用Date类时需要导入java.util包,使用SimpleDateFormat时需要导入java.text

Calendar 类

Date类最主要的作用就是获得当前时间,但是在JAVA中提供了更好的选择——Calendar 类,使用Calendar 类处理时间效果会更好。java.util.Calendar类是一个抽象类,可以通过调用getInstance()静态方法获取一个Calendar对象,此对象已由当前日期时间初始化,即默认代表当前时间,如Calendar c = Calendar.getInstance();,示例如下

HelloWorld.java

import java.util.Date;
import java.util.Calendar;

public class HelloWorld {
    
    public static void main(String[] args) {
		// 创建Calendar对象
		Calendar c =  Calendar.getInstance();
		//将Calendar类转换成Date类
		Date date = c.getTime();
		System.out.println("当前时间:" + date);
		
		int year = c.get(Calendar.YEAR);//获取年份
		int month = c.get(Calendar.MONTH) + 1;//获取月份,0代表一月
		int day = c.get(Calendar.DAY_OF_MONTH);//获取日期
		int hour = c.get(Calendar.HOUR_OF_DAY);//获取时
		int minute = c.get(Calendar.MINUTE);//获取分
		int second = c.get(Calendar.SECOND);//获取秒
		
		long time = c.getTimeInMillis();//获取当前毫秒
        
		System.out.println("当前时间:" + year + "-" + month + "-" + day + " " + hour + ":" + minute + ":" + second);
		System.out.println("当前毫秒:" + time);
	}
}
当前时间:Thu Jul 23 15:50:52 CST 2020
当前时间:2020-7-23 15:50:52
当前毫秒:1595490652860

示例中,调用Calendar类的getInstance()方法获取一个实例,然后通过调用get()方法获取日期时间信息,参数为需要获得的字段的值,Calendar.Year等为Calendar类中定义的静态常量Calendar类提供了getTime()方法,用来获取Date对象,完成CalendarDate的转换,还可通过getTimeInMillis()方法,获取此Calendar的时间值,以毫秒为单位。

JAVA中Math类

Math类位于java.lang包中,包含用于执行基本数学运算的方法,Math类的所有方法都是静态方法,所以使用该类中的方法时可以直接使用类名.方法名,如:Math.round();

返回值 方法名 解释
long round() 返回四舍五入后的整数
double floor() 返回小于参数的最大整数
double ceil() 返回大于参数的最小整数
double random() 返回[0, 1)之间的随机浮点数

示例代码如下所示

HelloWorld.java

public class HelloWorld {
    
    public static void main(String[] args) {
        
        double a = 13.14;
        int b = (int) a;
        System.out.println("强制类型转换:" + b);
        long c = Math.round(a);
        System.out.println("四舍五入:" + c);
        double d = Math.floor(a);
        System.out.println("返回小于a的最大整数:" + d);
        double e = Math.ceil(a);
        System.out.println("返回大于a的最小整数:" + e);
        double f = Math.random();
        System.out.println("返回[0, 1)之间的随机浮点数:" + f);
        
	}
}
强制类型转换:13
四舍五入:13
返回小于a的最大整数:13.0
返回大于a的最小整数:14.0
返回[0, 1)之间的随机浮点数:0.6009824191553053

猜你喜欢

转载自blog.csdn.net/qq_39567427/article/details/107530160