基础数据类型(知识点)

# 第二节  基础数据类型

一、JAVA中一共有八种基本数据类型,他们分别是:

byte、short、int、long、float、double、char、boolean

类型 型别 字节 取值范围
byte 整型 1byte -27 ~ 27 -1
short 整型 2byte -215 ~ 215-1
int 整型 4byte -231 ~ 231-1
long 整型 8byte -263 ~ 263 -1
float 浮点型 4byte 3.402823e+38 ~ 1.401298e-45(232
double 浮点型 8byte 1.797693e+308~ 4.9000000e-324(264
char 文本型 2byte 0~216-1
boolean 布尔型 1byte true/false
byte a;
short b;
char c;
int d;
long e;
a = a+a;//错误,a + a的类型为int,因为在计算时,byte类型的a变量被自动提升为int类型
a = 'A';//正确,'A'是字符字面量,是一个常量,值为65,在byte范围内
a = 12;//正确,可能会问,12这个字面量在java中是int类型,但是 a 是byte类型,为什么不报错呢,因为,编译器知道12在byte范围内,所以自动转为(short)12,但如果赋值的是a = 200,那就错误了,因为编译器知道200是超出byte范围的(在编译的时候,编译器只知道常量的值,知道它是否超出范围,编译器不知道变量的值,所以无法判断一个变量是否超出范围,因为变量的值是在运行的时候确定的)

a = Byte.MAX_VALUE +1;//报错
b = Short.MAX_VALUE +1;//报错
c = Char.MAX_VALUE +1;//报错
//上述三行报错原因是因为,byte,short,char三个类型参与计算时首先会提升为int类型,但在C语言当中(char和short类型)参与计算时不会被提升,所以在C语言中值为 -1
d = Integer.MAX_VALUE +1;//值为-1
e = Long.MAX_VALUE +1;//值为-1L
//因为int和long类型不存在提升,所以会出现-1或-1L

。。。。

技术点
一、整数数据Java程序中有3种表现形式,分别为十进制、八进制、十六进制

  1. 十进制不能以0(零)开头,0自身除外
  2. 八进制必须以0(零)开头
  3. 十六进制必须以0X或0x开头

二、long和float

  • 变量申明为long时要在后面加L或l,变量为float型时要加F或f

三、移位运算(一些算法中会用到,提高效率:ArrayList扩容时就用到了位运算)

  • 移位运算适用的数据类型有byte、short、int和long
  • 一个数左移(<<)n位就是讲这个数乘以2的n次方;一个数右移n位就是讲这个数除以2的n次方

二 拆箱装箱(包装类型)

写的比较好的博客
不太常见但是很有用的知识点

我们知道,如果两个引用指向同一个对象,用==表示它们是相等的。如果两个引用指向不同的对象,用==表示它们是不相等的,即使它们的内容相同。
因此,后面一条语句也应该是false 。
这就是它有趣的地方了。如果你看去看 Integer.Java 类,你会发现有一个内部私有类,IntegerCache.java,它缓存了从-128127之间的所有的整数对象。
所以事情就成了,所有的小整数在内部缓存,然后当我们声明类似——
Integer c = 100;
的时候,它实际上在内部做的是:
Integer i = Integer.valueOf(100);
现在,如果我们去看valueOf()方法,我们可以看到:
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
如果值的范围在-128127之间,它就从高速缓存返回实例。


。。。。
发布了4 篇原创文章 · 获赞 1 · 访问量 163

猜你喜欢

转载自blog.csdn.net/lizhenyu666/article/details/103888802