我只会把自己觉得重要的,理解不深的知识点记录下来,一些已经掌握或者理解不难的知识点就不再赘述;
3.数据及变量
(1)数据类型:
①基本数据类型:数值型;字符型;布尔型;
数值型:整数类型:byte;short;int;long;
浮点型:float;double;
字符型:char;
布尔型:boolean;
②引用数据类型:
类:class;
接口:interface;
数组([]);
(2)基本数据类型详解:
①取值范围:
byte(-128-127);
short(-2^15-2^15-1);
int(-2^31-2^31-1);
long(-2^63-2^63-1);
占用内存空间(字节):
整数类型:
byte:1;
short:2;
int:4;
long:8
浮点数型:
double:4;
float:8;
字符型:
char:2;
布尔型:
一般情况下为1;
在java程序中,整数默认为int类型,小数默认为double类型;
注意事项:再给long(长整型)赋值时,数据的后缀要加上L(l);
单精度浮点数后缀用F或者f;
②基本数据类型转换:
默认转换:byte,short,char->int->long->float_>double;
byte,short,char相互之间不做转换,他们参与运算时首先转换为int类型;
boolean无法转换为其他类型;
强制转换:
格式:目标类型 变量名=(目标类型)(被转换的数据);
强制转换的原理(二进制,原码反码补码):
例: int a=3;
byte b=a;
为了将int类型的a转换给byte类型的b,我们需要用到强制转换;
byte b=(byte)a;
而其原理实际上是将4字节的int数据a截取为1字节的byte类型数据再赋值给a;
需要注意的是,我们进行数据操作时,操作的是数据的补码,取值是看原码
a的反码: 00000000 00000000 00000000 000000011(补码与原码相同);
截取字节后变为:00000011(1字节);
需要注意的是,当补码的符号位为1时,需要转换为原码获得数值;
强制转换的注意事项:
强制转换会丢失进度,尽量少使用这一方法;
需要注意的是float f=12.345f;long=12345L;并不是强制转换,所以不会丢失进度,这是因为它们底层的存储结构不同所导致;
(3)变量:
①变量的作用域:
变量定义在哪一级大括号内,那个大括号的范围就是这个变量的作用域,相同的定义域中不能定义两个同名变量;
②初始化值:
没有初始化值的变量不能直接使用,为了美观,一行建议只定义一个变量;
(4)运算符:
①注意事项:
常量不可以自增,自减;
单独使用++;--自增自减运算符时,++,--放在数据前后效果相同;参与运算时候就会有所区别;
例:
int a=3;
int b=4;
int c=a++;
int d=--b;
输出d和c的时候我们发现,c为3(数值不变).d为3(发生变化),这是因为参与运算后,自增自减运算符位于数据前时,先运算,再赋值,而位于数据后时正好相反;
②位运算符(对二进制数据进行运算):
位运算符的种类:
&(按位与);
|(按位或);
^(按位异或);
~(按位非);
位运算符运算规律:
&:有0则0;
例:3&7;
00000000 00000000 00000000 00000011(3);
00000000 00000000 00000000 00000111(7);
结果就为:
00000000 00000000 00000000 00000011(3);
|:有1则1;
^:相同则0,不同则1:
~:0变1,1变0,需要注意得到的补码符号位是1还是0;
小规律:
某一个数据对另一个数据位异或两次,该数据本身不变;
Java基础数据类型与变量详解
本文详细介绍了Java中的基本数据类型,包括数值型、字符型、布尔型和引用类型,探讨了各种类型的数据范围、内存占用以及类型转换规则。同时,文章还深入解析了变量的作用域和初始化值,以及位运算符的使用方法。

被折叠的 条评论
为什么被折叠?



