1.数据类型;
整数默认类型为:int,只要写出整数,默认都是int,只是定义数据类型时将其存放在不同大小的“容器 ”中,但在定义long型时,需要在数字末尾加“L”来存储。
浮点型默认类型是double,因此在存储数据时,若想存储为float,则必须在数据末尾处加“F”。
在运算时。默认数据类型是int,因此在运算时,切记不能超过默认数据类型的取值范围,否则编译失败。
注意:计算机存储设备的最小信息单元是“位bit”,计算机最小存储单元是“字节byte”。1B = 8b;
byte:一个字节,-128—127
short:两个字节
char:两个字节,因为在java中 采用Unicode编码,中文 存储单位是两个字节,因此,中文可以用char类型存储。char 类型数据中不包括负数。
int:四个字节
long:八个字节
float:四个字节
double:八个字节
boolean:一个字节(理论的上是占八分之一个字节,因为一个开关即可以决定是true和false,但在Java中没有明确的给定具体的大小 ),两个值:true、false
2.数据类型转换:
自动类型转换:取值范围小的自动转成取值范围大的。
强制类型转换:与自动类型转换相反。 利用二进制的字节长度,将超出的位数去掉,剩下的就是强制转换后得到的数值。注意运算是以补码的形式计算,所以需要转换
类型1 变量1 = (类型1)变量2 ==>变量1,2不是一个数据类型
* 面试题:看下面的程序是否有问题,如果有问题,请指出并说明理由。
* byte b1 = 3;
* byte b2 = 4;
* byte b3 = b1 + b2;
* 从两方面去回答这个题
* b1和b2是两个变量,变量里面存储的值都是变化的,所以在程序运行中JVM是无法判断里面具体的值
* byte类型的变量在进行运算的时候,会自动类型提升为int类型
计算时类型提升:
byte与byte(或short、char)进行运算时会提升为int型。
* byte b4 = 3 + 4;
* 3和4都是常量,java有常量优化机制,就是在编译的的时候直接把3和4的结果赋值给b4了
3.运算符:
+:加号在遇到字符串时,就会变成“连接符”,
/:相同类型的两个数相除,得到的结果与这两个数据类型相同。
%运算符
* 当左边的绝对值小于右边绝对值时,结果是左边
* 当左边的绝对值等于右边或是右边的倍数时,结果是0
* 当左边的绝对值大于右边绝对值时,结果是余数
* %运算符结果的符号只和左边有关系,与右边无关
* 任何一个正整数%2结果不是0就是1可以用来当作切换条件
4.二进制运算:
计算机存储均是以二进制进行存储及计算,且计算时是以补码的方式进行计算。
原码:
二进制
反码:
正数:即原码
负数:对原码除符号位以外逐位 取反
补码:
正数:与原码相同
负数:反码+1
|
|