Java基本数据类型默认值、取值范围及所占字节位数
基本情况汇总如下:
序号 | 数据类型 | 大小/位 | 封装类 | 默认值 | 可表示数据范围 |
1 | byte(位) | 8 | Byte | 0 | -128~127 |
2 | short(短整型) | 16 | Short | 0 | -32768~32767 |
3 | int(整数) | 32 | Integer | 0 | -2147483648~2147483647 |
4 | long(长整数) | 64 | Long | 0L | -9223372036854775808~9223372036854775807 |
5 | float(单精度) | 32 | Float | 0.0f | 1.4E-45~3.4028235E38 |
6 | double(双精度) | 64 | Double | 0.0 | 4.9E-324~1.7976931348623157E308 |
7 | char(字符) | 16 | Character | ‘/uoooo’(null) | 0~65535 |
8 | boolean | 8 | Boolean | flase | true或false |
当变量作为作为类成员使用时,java才确保给定其初始值,防止程序运行时错误。但是这些初始值对你的程序来说是不正确的。所以必须明确指定初始值。
然而以上所诉并不适用于“局部”变量(即:非某个类的字段)。因此在某个方法中定义int i,那么变量i可能得到的是任一值。不会被初始化为0。所以使用前先付一个适当的值。如果忘记了,java会在编译时返回一个错误。告诉你此变量没有初始化。在类中定义一个对象的引用时,如果没有给定初始化值,此引用会默认为null值。也就是说在java中基本类型的默认值是0,引用类型会默认为null。
大家注意! char类型数据作为成员变量时默认值是’ ‘(空字符)。另外’\u0000’表示的符号是空字符,’\ uxxxx’ x属于0到f可以表示很多字符,可以理解为字符编码。
测试代码:
package com.test.basedatatype;
public class Test {
int a;
double b;
boolean c;
char d;
float f;
byte e;
long h;
short j;
public static void main(String []args){
getDefault();
getSize();
}
public static void getDefault() {
Test a = new Test();
System.out.println("整型的默认值是:" + a.a);
System.out.println("双精度浮点型的默认值是:" + a.b);
System.out.println("布尔型的默认值是:" + a.c);
System.out.println("字符型的默认值是:" + a.d);
System.out.println("byte的默认值是:" + a.e);
System.out.println("单精度浮点型的默认值是:" + a.f);
System.out.println("短整型的默认值是:" + a.j);
System.out.println("长整型的默认值是:" + a.h);
}
public static void getSize() {
System.out.println("--------------------");
//byte类型所占的字节数求法
System.out.println("byte的二进制位数为:" + Byte.SIZE);
System.out.println("byte所占的字节数为:" + Byte.SIZE/8); //一个字节占8个二进制位
System.out.println("--------------------");
//short类型所占的字节数求法
System.out.println("short的二进制位数为:" + Short.SIZE);
System.out.println("short所占的字节数为:" + Short.SIZE/8);
System.out.println("--------------------");
//int类型所占的字节数求法
System.out.println("int的二进制位数为:" + Integer.SIZE);
System.out.println("int所占的字节数为:" + Integer.SIZE/8);
System.out.println("--------------------");
//long类型所占的字节数求法
System.out.println("long的二进制位数为:" + Long.SIZE);
System.out.println("long所占的字节数为:" + Long.SIZE/8);
System.out.println("--------------------");
//float类型所占的字节数求法
System.out.println("float的二进制位数为:" + Float.SIZE);
System.out.println("float所占的字节数为:" + Float.SIZE/8);
System.out.println("--------------------");
//double类型所占的字节数求法
System.out.println("double的二进制位数为:" + Double.SIZE);
System.out.println("double所占的字节数为:" + Double.SIZE/8);
System.out.println("--------------------");
//char类型所占的字节数求法
System.out.println("char的二进制位数为:" + Character.SIZE);
System.out.println("char所占的字节数为:" + Character.SIZE/8);
}
}
默认值输出结果:
所占字节数输出结果:
原贴,表示感谢
https://blog.csdn.net/strggle_bin/article/details/70194840
https://www.cnblogs.com/yjh123/p/5694341.html
https://www.cnblogs.com/aiwuzhi/p/7335111.html
还没有评论,来说两句吧...