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(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
基本每一种语言都有对时间进行表示。例如Python中的datatime
模块,集合了大量处理时间的方法,函数等。JAVA中也具有对时间处理的方式。
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:30
与yyyy年MM月dd日 HH:mm:ss
要对应,除了日期对应,还有汉字对应,如果使用的是其它字符,例如使用-
,那么有如下对应示例2020-07月23日 15:31:30
与yyyy-MM月dd日 HH:mm:ss
。
2.调用 SimpleDateFormat 对象的 parse() 方法时可能会出现转换异常,即 ParseException ,因此需要进行异常处理,需要添加throws ParseException
3.使用Date
类时需要导入java.util
包,使用SimpleDateFormat
时需要导入java.text
包
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
对象,完成Calendar
和Date
的转换,还可通过getTimeInMillis()
方法,获取此Calendar
的时间值,以毫秒为单位。
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