参考资料:https://blog.csdn.net/tsgjcnyn/article/details/77999676
一、Java的基本数据类型
Java的基本数据类型有八种,分为三类。分别是:字符型类型(char)、布尔类型(boolean)和数值类型。
数值类型又分为整数类型:byte、short、int、long 和 浮点数类型:float、double
二、Java基本数据类型之间的转换
Java语言中的数据类型转换有两种:自动类型转换和强制类型转换。
顾名思义,自动类型转换,是指不需要书写代码,由系统自动完成的类型转换,又称隐式类型转换。
转换规则:从存储范围小的类型到存储范围大的类型。
具体规则:byte→short(char)→int→long→float→double
//示例代码
byte a = 1;
short b = a;
int c = a;
在给b赋值的时候,JVM会首先把a的值转换成short类型再赋值给b,当然也可以跳跃,如c的赋值。
值得注意的是:当整数类型特别是数值较大的整数类型转换为浮点数类型的时候,由于存储精度的不同,可能会存在数据精度的损失。
强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。
转换规则:从存储范围大的类型到存储范围小的类型。
//转换语法
double d = 3.1415;
int i = (int) d;//3
强制类型转换通常都会造成存储精度的损失,因此使用的时候需要十分谨慎。
//示例1
short s = 1;
s = s + 1;//报错
s += 1;//报错
上例在运算是会自动提升表达式的类型为int,把int类型赋予short则会出现转换类型报错。
同理,作用在int上的switch语句同样可以作用在byte上(向int类型隐式转换),而不可以作用在long上,switch在1.7版本后可以作用在string上。
By the way,char类型变量用来储存的是Unicode编码的字符,Unicode字符集包含了汉字,但一些生僻字除外。
三、基本数据类型与String对象之间的转换
在Java中字符串属于对象,Java提供String类来创建和操作字符串。String类具有不变性,一旦对象生成,它的值便无法改变。(详情可以了解博客中关于Java堆栈与常量池的文章)
1、基本数据类型转String可以采用其包装类的toString()方法
//int => String
int num = 123456789;
String str = Integer.toString(num);
2、String转基本数据类型可以采用包装类的parse**()方法
//String => int
String s = "123456789";
int n = Integer.parseInt(s);
3、两者相互之间的转换均可以使用对应的.valueOf()方法
//int => String
int num = 123456789;
String str = String.valueOf(num);
String s = "123456789";
long n = Long.valueOf(s).longValue();
Long n = Long.valueOf(s);
转换过程需要注意捕捉异常。
四、String类型与java.util.Date之间的转换
String和Date之间的转换借助SimpleDateFormat类。
String转Date:
private static void testStringToDate() {
String s = "2018-04-04";
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
Date date = null;
try {
date = format.parse(s);
} catch (ParseException e) {
System.out.println(e.getMessage());
}
System.out.println(date);
}
Date转String:
private static void testDateToString() {
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
String dateString = format.format(new Date());
} catch (ParseException e) {
System.out.println(e.getMessage());
}
System.out.println(dateString);
}
附:日期和时间模式(注意大小写)
yyyy:年
MM:月
dd:日
hh:1~12小时制(1-12)
HH:24小时制(0-23)
mm:分
ss:秒
S:毫秒
E:星期几
D:一年中的第几天
F:一月中的第几个星期(会把这个月总共过的天数除以7)
w:一年中的第几个星期
W:一月中的第几星期(会根据实际情况来算)
a:上下午标识
k:和HH差不多,表示一天24小时制(1-24)。
K:和hh差不多,表示一天12小时制(0-11)。
z:表示时区