前言:时隔六年,再次来到了CSDN,从心回顾了这些年的技术旅程,时光蹉跎,丢了青丝,白了头发,当初的少年已经没了锋利的棱角。为了保持技术的严谨性,如有错误,烦请诸君指正。
1:什么是数据类型
在计算机科学和计算机编程中,数据类型或简单的类型是数据的一个属性,它告诉编译器或解释器程序员打算如何使用数据。大多数编程语言支持整数(大小不同)、浮点数(近似实数)、字符和布尔值的基本数据类型。数据类型约束表达式的值,例如变量或函数,可能需要。此数据类型定义了可以对数据执行的操作、数据的含义以及存储该类型值的方式。数据类型提供一组值,表达式(即变量、函数等)可以从中获取其值。
2: java基础数据类型
整数类型:byte、short、int、long。
小数类型:float、double。
字符类型:char。
布尔类型:boolean
在代码中利用封装类查看基础数据类型的最大与最小:
public static void main(String[] args) {
System.out.println("int最大:" + Integer.MAX_VALUE);
System.out.println("int最小:" + Integer.MIN_VALUE);
System.out.println("short最大:" + Short.MAX_VALUE);
System.out.println("short最小:" + Short.MIN_VALUE);
System.out.println("long最大:" + Long.MAX_VALUE);
System.out.println("long最小:" + Long.MIN_VALUE);
System.out.println("byte最大:" + Byte.MAX_VALUE);
System.out.println("byte最小:" + Byte.MIN_VALUE);
System.out.println("float最大:" + Float.MAX_VALUE);
System.out.println("float最小:" + Float.MIN_VALUE);
System.out.println("double最大:" + Double.MAX_VALUE);
System.out.println("double最小:" + Double.MIN_VALUE);
}
总觉得自己写代码去看才能发现最真实的东西,所以自己去看吧,关于最大值最小值以及占用字节的计算。
字节长度计算案例
Integer.toBinaryString(Integer.valueOf(Integer.MAX_VALUE)).length()+1)
Long.toBinaryString(Double.doubleToRawLongBits(Double.MAX_VALUE)).length()+1)
Integer.toBinaryString(Float.floatToIntBits(Float.MAX_VALUE)).length()+1)
3: 包装数据类型
在java中,基础数据类型不需要实例化就可以使用。而包装数据类型,实际是一个类,在java.lang 包下。需要实例化才可以使用。
这时候有人会问:"在程序中,我们可以使用Integer a = 1; 去定义一个变量",这期间并没有产生一个新的实例化对象。
其实啊,类的调用,除静态方法外,都是需要实例化的,为什么Integer 不需要呢?因为他特殊吗?不是的,在jvm中,存在一种机制,叫自动拆箱与自动装箱。
自动装箱就是java编译器在基本数据类型和对应的对象包装类型之间做一个转化,比如int转为Integer,double转为Double.反之为自动拆箱。有个这一层机制,我们就可以浅显的认定 在值域层,int 是等于 Integer的。
但是还是有区别的
在默认层中,integer默认为null,而int默认为0
在jvm中,integer实际是对象的引用,当new出一个integer时实际上是生成一个指针指向此对象,而int则是直接存储数据值。
当然 上面也说另外两种区别。int是基本类型,integer是包装类型,integer必须实例化后才能使用,而int变量不需要。
附表,包装类型表。
类型 | 包装类型 |
int | Integer |
byte | Byte |
short | Short |
long | Long |
float | Float |
double | Double |
char | Char |
boolean | Boolean |
4: 其他数据类型
BigInteger bigInteger = new BigInteger("1");
BigDecimal bigDecimal = new BigDecimal("1.0");