Java8大基本数据类型(详解与代码)

Java定义了8大基本数据类型

数值型:byte、short、int、long、float、double

字符型:char

布尔型:boolean

目录

 

1、 图示

2、整型

3、浮点型

4、字符型

5、布尔型


1、 图示

数据类型
序号数据类型名称封装类占用存储空间(字节)取值范围默认值备注
1byteByte18-2^7^~2^7^-1(-128~127)(byte)0一个字节8位,用一位来表示符号,中间还有一个0
2short短整数Short216-2^15^~2^15^-1(-32768~32767)  (short)0
3int整数Integer432-2^31^~2^31^-1(-2147483648~2147483647)约21亿0
4long长整数Long864-2^63^~2^63^-10L
5float单精度Float432-3.403E38~3.403E380FE38表示10的38次方
6double双精度Double864-1.798E308~1.798E3080D
7char字符Character2160~65535'/uoooo'(null)2的16次方为65536
8boolean布尔Boolean   false 
public class TestDataTypeRange {

    static byte a;  
    static short b;  
    static int c;  
    static long d;  
    static float e;  
    static double f;  
    static char g;  
    static boolean h;  
    //String不是基本类型    
    static String str1 = "";//生成一个String类型的引用,而且分配内存空间来存放"";  
    static String str2; //只生成一个string类型的引用;不分配内存空间,默认为null  
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		System.out.println("byte的大小【"+Byte.SIZE+"】byte的默认值【"+a+" 】byte的数据范围【"+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE+"】");     
		System.out.println("short的大小【"+Short.SIZE+"】 short的默认值【"+b+"】short的数据范围【"+Short.MIN_VALUE+"~"+Short.MAX_VALUE+"】");     
		System.out.println("int的大小【"+Integer.SIZE+"】int的默认值【"+c+"】int的数据范围【"+Integer.MIN_VALUE+"~"+Integer.MAX_VALUE+"】");     
		System.out.println("long的大小【"+Long.SIZE+"】long的默认值【"+d+"】long的数据范围【"+Long.MIN_VALUE+"~"+Long.MAX_VALUE+"】");     
		System.out.println("float的大小【"+Float.SIZE+"】float的默认值【"+e+"】float的数据范围【"+Float.MIN_VALUE+"~"+Float.MAX_VALUE+"】");     
		System.out.println("double的大小【"+Double.SIZE+"】double的默认值【"+f+"】double的数据范围【"+Double.MIN_VALUE+"~"+Double.MAX_VALUE+"】");     
		System.out.println("char的大小【"+Character.SIZE+"】char的默认值【"+g+"】char的数据范围【"+Character.MIN_VALUE+"~"+Character.MAX_VALUE+"】");     
		System.out.println("前"+'\u0000'+"后");
		System.out.println(g=='\u0000');
		System.out.println("char的大小【"+Character.SIZE+"】char的默认值【"+(int)g+"】char的数据范围【"+(int)Character.MIN_VALUE+"~"+(int)Character.MAX_VALUE+"】");     
		System.out.println("boolean的大小【"+Byte.SIZE+"】boolean的默认值【"+h+"】boolean的数据范围【"+Byte.MIN_VALUE+"~"+Byte.MAX_VALUE+"】");     
	    
		System.out.println("String字符串的默认值【"+str1+"】的默认长度【"+str1.length()+"】");     
		System.out.println("String字符串的默认值【"+str2+"】");     
	}

}

结果

byte的大小【8】byte的默认值【0 】byte的数据范围【-128~127】
short的大小【16】 short的默认值【0】short的数据范围【-32768~32767】
int的大小【32】int的默认值【0】int的数据范围【-2147483648~2147483647】
long的大小【64】long的默认值【0】long的数据范围【-9223372036854775808~9223372036854775807】
float的大小【32】float的默认值【0.0】float的数据范围【1.4E-45~3.4028235E38】
double的大小【64】double的默认值【0.0】double的数据范围【4.9E-324~1.7976931348623157E308】
char的大小【16】char的默认值【 】char的数据范围【 ~】
前 后
true
char的大小【16】char的默认值【0】char的数据范围【0~65535】
boolean的大小【8】boolean的默认值【false】boolean的数据范围【-128~127】
String字符串的默认值【】的默认长度【0】
String字符串的默认值【null】

 看到控制台的输出的true,就会发现,其实char类型的默认值就是'/uoooo'(null),这是unicode编码,只是控制太输出不出来,把他转为int类型后,发现其实就是0;

2、整型

整型用于表示没有小数部分数值,它允许是负数。整型的范围与运行Java代码的机器无关,这正是Java程序具有很强一直能力的原因之一。与此相反,C和C++程序需要针对不同的处理器选择最有效的整型。

Java语言整型常量的四种表示形式

二进制整数(以0b或者0B开头),如:0b00001011

八进制整数(以0开头),如:016

十进制整数(默认),如:100,-350,0

十六进制整数(以0x或0X开头),如:0x16

public class TestInteger {
	public static void main(String[] s){
	    int a = 0b00001011;        //二进制
	    short b = 016;             //八进制
	    int c = 16;                //十进制,默认
	    long d = 0x16;             //十六进制
	    System.out.println("a="+a);
		System.out.println("b="+b);
		System.out.println("c="+c);
		System.out.println("d="+d);
	}
}

结果

a=11
b=14
c=16
d=22

3、浮点型

带小数的数据在Java中称为浮点型。浮点型可分为float类型和double类型。

float类型又被称作单精度类型,尾数可以精确到7位有效数字,在很多情况下,float类型的精度很难满足要求。而double表述这种类型的数值精度约是float类型的两倍,又被称作双精度类型,绝大部分应用程序都采用double类型。浮点类型常用默认类型也是double.

Java浮点类型常量有两种表示形式

十进制数形式,如:3.33、333.0、0.333

科学计数法形式,如:314e2、314E2、314E-2

public class TestFloat {
	public static void main(String[] s){
		float a = 3.33f;	
		float b = 016;			//八进制
		float c = 333e-2F;			
		double d = 333E2;		
		System.out.println("a="+a);
		System.out.println("b="+b);
		System.out.println("c="+c);
		System.out.println("d="+d);
	}
}

结果

a=3.33
b=14.0
c=3.33
d=33300.0

浮点型不精确,一定不要用于比较

public class TestFloat2 {
	public static void main(String[] s){
		float a = 123123123f;	
		float b = a+1;			
		float c = 0.03f;			
		float d = 0.3f/10;
		double e = 0.03;
		System.out.println("a="+a);
		System.out.println("b="+b);
		System.out.println(a==b);
		System.out.println("c="+c);
		System.out.println("d="+d);
		System.out.println("e="+e);
		System.out.println(c==e);
	}
}

结果

a=1.2312312E8
b=1.2312312E8
true
c=0.03
d=0.030000001
e=0.03
false

发现,b在a的基础上+1;结果还是和a一样。c和d的输出结果不一致。c和e的输出结果一致,但是比较的时候,却为flase.

Java.math包下面的两个有用的类:BigInteger和BigDecimal,这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点数运算。

 

4、字符型

字符型在内存中占2个字节,在Java中使用单引号来表示字符常量。例如‘禄’是一个字符,而“A表示一个字符串。

char类型用来表示在Unicode编码表中的字符。Unicode编码被设计用来处理各种语言的文字,它占用2个字节,可允许有65536个字符,所以char类型的取值范围是0~65535,通常是从'\u0000'到'\uFFFF'之间的十六进制的值来表示(u为前缀表示Unicode)

转义字符
转移符含义Unicode值
\b退格(backspace)\u0008
\n换行\u000a
\r回车\u000d
\t制表符\u0009
\"双引号\u0022
\'单引号\u0027
\\反斜杠\u005c
public class TestChar {

	/**
	 * @param args
	 */
    public static void main(String[] args) {
        char a = '\u7984';              //字符'禄'的Unicode编码
        char b = '禄';
        System.out.println(a);
        System.out.println(a==b);
        System.out.println(a+b);		//当做数学运算
        System.out.println(a+b+"");		//先运算,在当做字符串相加
    }

}

结果

禄
true
62216
禄禄
62216

5、布尔型

boolean类型有2个常量值,true和false,在内存中占一位(不是一个字节),不可以使用0或者非0的整数代替true和false,因为前者占几个字节,二后者值占一位,这点和C语言不同。boolean类型用来判断逻辑条件,一般用于程序流程控制。

public abstract class TestBoolean {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		boolean a = false;
		if(a){
			System.out.println("第一个"+a);
		}
		if(a == false){
			System.out.println("第二个"+a);
		}
		if(a = true){
			System.out.println("第三个"+a);
		}
	}

}

结果

第二个false
第三个true

第一个条件不满足;第二个条件==false,满足;第三个条件先赋值true,然后再判断,满足。所以不建议第二和第三种写法,因为有可能把“==”写成“=”,导致程序出错。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深知她是一场梦

你打不打赏,我都会一直写博客

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值