基本类型(八种)

概述

Java是一门强类型的语言,会把你的数据,分成很多种类型。
Java语言提供了八种基本数据类型,其中六种数字类型(四种整数型,两种浮点型),一种字符类型,还有一种布尔类型。
image

基本类型字节空间和取值范围测试

public class DataTypeSize {
    public static void main(String[] args) {
        System.out.println("byte:"+Byte.SIZE/8+"字节("+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE+")"); 
        System.out.println("short:"+Short.SIZE/8+"字节("+Short.MIN_VALUE+"~"+Short.MAX_VALUE+")"); 
        System.out.println("int:"+Integer.SIZE/8+"字节("+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE+")"); 
        System.out.println("long:"+Long.SIZE/8+"字节("+Long.MIN_VALUE+"~"+Long.MAX_VALUE+")"); 
        System.out.println("float:"+Float.SIZE/8+"字节("+Float.MIN_VALUE+"~"+Float.MAX_VALUE+")"); 
        System.out.println("double:"+Double.SIZE/8+"字节("+Double.MIN_VALUE+"~"+Double.MAX_VALUE+")");
        System.out.println("char:"+Character.SIZE/8+"字节");
        
    }

}

bit就是位,也叫比特位,是计算机表示数据最小的单位,1个字节等于8个bit
输出结果为:

byte:1字节(-128~127)
short:2字节(-32768~32767)
int:4字节(-2147483648~2147483647)
long:8字节(-9223372036854775808~9223372036854775807)
float:4字节(1.4E-45~3.4028235E38)
double:8字节(4.9E-324~1.7976931348623157E308)
char:2字节

字面值前缀

二进制-0b

System.out.println(0b101110011011011);//23771

八进制-0

System.out.println(001);//1
System.out.println(010);//8
System.out.println(016);//14
System.out.println(055);//45

十六进制-0x

System.out.println(0xfa8c10f);//262717711

char类型十六进制-u

System.out.println('\u0061');//a
System.out.println('\u4e2d');//中

字面值后缀

long-L

long a= 123456789L;

float-F

float b =3.14F ;

double-D

double c = 3.0;
double d = 3D;

基本类型的类型转换

类型之间的大小关系

image

隐式转换(小类型转大类型)

小类型向大类型转换,直接转换即可

byte a = 10 ;
long b = a ;

显示转换(大类型转小类型)

大类型向小类型转换,需要进行强制转换:用圆括号括起来目标类型,置于变量前

double m = 9.9 ;
int n = (int) m ;
System.out.println(n);//小数转整数,小数位将被丢弃--n得到9

特例

数据范围小的能够自动向数据类型大的转换,但是有特例
int到float,long到float,long到double 是不会自动转换的,不然将会丢失精度

运算规则(5条)

计算结果的数据类型,与最大类型一致

System.out.println(3/2);//int/int->int --整数,只会保存整数位--1                
System.out.println(3/2f);//int/float->float--保留小数位--1.5

byte,short,char三种比int小的整数,运算时会先自动转换成int

byte a = 1;
byte b = 2;
byte c = a + b ;
byte c = (byte)( a + b ) ;//因为右侧的运算结果类型是int大类型,给左侧的小类型byte赋值需要强转

整数运算溢出

加后缀L,因为结果的类型会和最大类型一致,加了L就会把整数结果从原来的int变成long

System.out.println(300000000*60*60*24*365);//659193856
System.out.println(300000000L*60*60*24*365);//9460800000000000

浮点数运算不精确

System.out.println(0.9*0.8);//0.7200000000000001

浮点数的特殊值

System.out.println(3.14/0);//Infinity
System.out.println(0/0.0);//NaN

总结

基本数据类型是Java基础,需要完全掌握八大基本类型的大小与范围,根据数据的不同设置相应类型的变量接收参数,熟知基本类型的转换规则与运算规则,才能进行准确的数据分析与计算。


禾白少二
57 声望26 粉丝