Java是一种强类型语言(先定义类型后使用)。Java提供了八种(四型)基本数据类型。
一、整型:byte、short、int、long
int为整数的默认类型,如需为long类型赋值 , 如果取值范围超出了int 则需要在值的后面追加L或者l如果取值范围在int范围以内 则可加,可不加。
1、byte:1字节(8位)。取值范围是 -128 到 127。
2、short:2字节(16位)。取值范围是 -32,768 到 32,767。
3、int:4字节(32位)。取值范围是 -2^31 到 2^31-1。
4、long:8字节(64位)。取值范围是 -2^63 到 2^63-1。
二、浮点型:float、double
这两种类型都是近似值 ,不是精确值 ,如需精确值 ,使用BigDecimal类。
1、float 4字节,double 8 字节
三、布尔型
boolean:1字节。取值true或者false。
四、字符型
char:2字节(16位)。取值范围为0~65535。char有三种赋值方式。
// 赋值方式1 直接使用英文的单引号包括任意一个内容
char ch1 = 'a';
System.out.println("ch1 = " + ch1);
char ch2 = '1';
System.out.println("ch2 = " + ch2);
char ch3 = '啊';
System.out.println("ch3 = " + ch3);
char ch4 = '!';
System.out.println("ch4 = " + ch4);
// 赋值方式2 直接赋值在0~65535(2^16)以内的整数
// ASCII 美国标准信息交换码 0 ~ 127
char ch6 = 65;
System.out.println("ch6 = " + ch6); // A
char ch7 = 97;
System.out.println("ch7 = " + ch7); // a
// 赋值方式3 使用英文单引号包括十六进制的Unicode字符值 必须以杠u开头
char c1 = '\u4e2d';
System.out.println("c1 = " + c1);//中
五、八个基本数据类型的包装类
byte——Byte short——Short int ——Integer long——Long
float——Float double——Double char—— Character boolean——Boolean
装箱:将基本数据类型变为包装类,每个包装类的构造方法都可以接收各自数据类型的变量
拆箱:将包装类转换为基本数据类型,就是从包装类中取出被包装的数据
(拆箱和装箱操作都是自动执行的!!即可以理解为包装类和基本数据类型间可以相互赋值)
Integer a = 10;//在这行代码中,就进行了自动装箱
//这行代码在执行的时候在jvm中会编写为Integer a = Integer.valueOf(10);
int a = b;//将10这一基本数据类型转换为了包装类赋值给b,再将b值赋值给a
(但要注意,包装类是一个对象,默认值为空对象,但是基本数据类型的默认值不为null,比如byte、short、int、long、char的默认值为0,float、double的默认值为0.0,boolean的默认值为false)
六、谈一下为什么在定义实体类时,会提示建议使用包装类
首先我谈一下自己的理解,首先Java是一门面向对象的语言,可以说一切皆是对象。
1、比如在集合操作中,能够操作和存储的都是对象,无法使用基本数据类型(在jvm自动拆装箱的前提下,使用包装类的使用方式更灵活了)。
2、其次从业务理解上,比如定义一个Sutdent类,一个int型的score属性和一个Integer的score属性,Integer即可为null也可为0,但是int只能为空,要注意,成绩为空和成绩为0是截然不同的意思!因此在表达含义上使用包装类同样更加便捷。
(By the way!!框架注解@Data的提供无参构造函数,在将属性定义为boolean时,无法对属性使用getter和setter操作,要使用is+属性名的方式获取)
七、提一下BigDecimal
BigDecimal是Java在java.math包中提供的线程安全的API类。BigDecimal是Java中用于表示任意精度数字的类(可以表示无限长度的小数,双精度浮点型变量double只可以处理16位有效数),开发中,如果我们需要精确计算的结果,可以使用BigDecimal类来操作。
1、BigDecimal常用的构造方法
2、BigDecimal不可以直接使用加减乘除等运算符,以下是BigDecimal常用的API