不管任何东西在计算机存储都是数字,数据都是数字的形式存储的,而数字转成二进制由内存中和处理器交互。
而内存是有大小的,选择合适的类型可以避免不必要的内存浪费。
整数型(规定必须转成10进制使用)
int(32位,四个字节 )
long(64位,八个字节)
byte 万能型数据类型 一个字节 8位 网络传输的最小单位也是一个字节,计算机的所有文件都能进行存储,是计算机中最小的单位。
short 两个字节16位,因为有正负级计算,在二进制的最高位,0表示正数,1表示负数
字符型:英文用的是 ASCII - 0~127 128个符号 用的是一个字节,而中文要用的是2个字节
char(16位,两个字节) 没有负数寄存,java中文字处理是 unicode 编码
布尔型:boolean(8位,一个字节) 0 false,1 true,实际上存储 只耗去了一位 存储的是逻辑值,true false 真与假。
浮点型(小数):小数类型今后计算的时候不精确,放大成整数再计算,float(32位,4个字节) 后保留 6位小数,double(64位,8个字节) 后保留 15位小数
public class T5{
public static void main(String args[]){
System.out.println(0.05+0.01);
System.out.println(1.0-0.42);
System.out.println(123.3/100);
}
};
结果:
0.060000000000000005
0.5800000000000001
1.2329999999999999
解决办法:
public class T5{
public static void main(String args[]){
System.out.println(((0.05*100)+(0.01*100))/100);
System.out.println(((1.0*100)-(0.42*100))/100);
System.out.println(((123.3*10)/(100*10))/10);
}
};
0.06
0.58
0.1233
常用的数据类型:整数 int ,小数 double ,字符 char , 字符串 String ,逻辑值( 布尔值) boolean, 文件(照片,程序,压缩包....) byte
变量,是一个常量值
在程序运行过程中,其值可以改变的量称之为变量,就是声明一个标识指向内存地址,进行操作,变? 我们可以改变内存数据,就有如改变标识中的数据。
变量赋值为什么数值后要加F或者L?
public class T6 {
public static void main(String[] args) {
long a=1000000L;告诉java他是long类型的 java默认是类型的
float b=15.1f;告诉系统他是float类型的 java默认是double
}
}
常量
常量值:整数 int,小数 double,字符 char,字符串 String,字符串 String,整数后加L 表示为 long类型
声明常量:final 最终,名称最好是全大写,final 数据类型 常量标识名称=值,数据存储在常量区域
类型转换
小的数据类型可以直接转换成大的,因为就是冰箱,你小的可以,但你放个大象肯定是放不进去的啊,
强制类型转换:尽量不要用,会有风险的,从大到小就想是截肢,直接截取一半,正数强制转换成负数
举例
100000000000000001这是负数因为高位为1(16位)
00000001(转换成了正数高位为0)