Java的数据类型分为基本数据类型和引用数据类型两种。
基本数据类型分为:byte、short、int、float、double、long、char、boolean。
引用数据类型又分为数组、类和接口。
今天我主要讲基本数据类型,那么有的小伙伴就问了为什么没有String,我们声明变量的时候会用到这个关键字啊,我需要说明一下String属于类,今天不做过多介绍。
byte:一个字节,占八位,由于数据在计算机中存储都是二进制,而且存储是第一位表示符号 位,因为byte数据类型可以表示-128-127,在这范围内的数字都可以使用byte来声明变量。
short;两个字节,占十六位,可以表示范围很大。
注意:byte类型变量和short类型变量进行运算时会自动转化成int数据类型
char:字符型,一个字节,通常用来表示字符和数字,ascll码转换等等,但是char数据类型和byte和short不能进行转换。
int:整形数据,占四个字节,表示的范围更广,足够我们平时的使用。
float:单精度浮点型数据,占四个字节,声明变量是,在赋值的同时在最后加上f,否则就会报错。
doule:双精度浮点型数据,占八个字节,直接声明变量就可以。
long:占八个字节,同样,在对变量进行赋值时需要在末尾加上L
Java数据类型转换:
注意:最最最重要的一点,在低精度向高精度进行转换时可以自动进行转换,而高精度向低精度进行转换的时候需要进行强制类型转换,接受精度的损失。
1、在进行int类型强制转换byte时要注意溢出的情况,因为byte表示的范围远远没有int表的范围大
2、char类型不能转换成byte和short类型
3、这个不算是类型转换需要注意内容了,但是我还是想提一下就是浮点数使用陷阱:不能够拿运算之后的浮点数进行比较,因为运算之后的值是一个近似值,而应该是使用运算之后两个数的差值的绝对值在某个可接受的范围内。具体为什么会产生这样的内容是因为浮点数在进行存储时本身就是一一个近似值进行存储的。有兴趣的小伙伴可以运行一下下边的这一段代码;
public class test01{
public static void main(String[] args){
//浮点数使用陷阱,不能够拿运算之后的小数进行比较,而是应该以两个数的差值的绝对值在讴歌精度范围内判断
double num1 = 2.7;
double num2 = 8.1/3;
System.out.println(num1+"\n"+num2);
//解决方法
System.out.println(Math.abs(num1-num2));
if (Math.abs(num1-num2)<0.001){
System.out.println("两个值相等 ");
}
}