Java中各类型所占字节及值的范围

public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		 	byte b=-128;  //-2 7  到 2 7-1  1个字节
	        short s=1024*32-1;  //-2 15 到 2 15 -1  2个字节
	        int  i=1024*1024*1024*2-1;    //-2 31 到 2 31-1  4个字节        
	        long l=1024*1024*1024*2;  
	          
	        float f=(float) 3.14;   //4个字节
	        double d=3.14159;  	//8个字节
	          
	        boolean bl=true;          
	          
	        System.out.println("byte b="+b);  
	        System.out.println("short s="+s);  
	        System.out.println("int i="+i);  
	        System.out.println("long l="+l);  
	        System.out.println("float f="+f);  
	        System.out.println("double d="+d);  
	        System.out.println("boolean bl="+bl);  
	        
	        System.out.println("---------------------------");
	        System.out.println(b+4+"");  
	}

}


byte:              1Byte
char,short:     2Byte
int,float:          4Byte
long,double:  8Byte

关于 boolean 网上看到如下解释,也有看到说是  1bit(不是byte,即8分之1个byte) 1位空间
今天面试问到了这个问题,java中boolean类型到底占多少字节呢,到网上搜了下,最后采用了这个答案:
答:我的结论是:
1)boolean a=true;//这个a在JVM中占4个字节即:32位。
2)boolean[] b = new boolean[10];//数组时,每一个boolean在JVM中占一个字节。
理由:
1)JAVA规范中没有定义boolean类型的大小。
2)但是:在JVM规范第2版中讲得十分清楚。我上边的结论就是从它当中取出来的。
根据:(JVM规范第2版 3.3.4节)
Instead, expressions in the Java programming language that operate on boolean values are compiled to use values of the Java virtual machine int data type.  
Where Java programming language boolean values are mapped by compilers to values of Java virtual machine type int, the compilers must use the same encoding. 而:Java virtual machine type int, whose values are 32-bit signed two's-complement integers。 
Arrays of type boolean are accessed and modified using the byte array instructions  
In Sun's JDK releases 1.0 and 1.1, and the Java 2 SDK, Standard Edition, v1.2, boolean arrays in the Java programming language are encoded as Java virtual machine byte arrays, using 8 bits per boolean element.

另外关于单位的换算:
1Byte = 8 bit
1K=1024Byte
1M=1024K
1G=1024M
1T=1000G

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值