Java数据类型
强类型语言
-
要求变量的使用要求严格符合规定,所有变量都必须县定义后才能使用
-
优点:安全性高
-
缺点:速度比较慢
弱类型语言
-
要求变量的使用可以不符合规定,所有变量都可以不定义都能使用
Java的数据类型分为两大类
-
基本类型(primitive type)
-
引用类型(reference type)
基本类型
-
数值类型
-
整数类型
-
byte占1个字节范围:-128-127
-
short占2个字节范围:-32768-32767
-
int占4个字节范围:-2147483648-2147483647
-
long占8个字节范围:-9223372036854775808-9223372036854775807
-
-
浮点类型
-
float占4个字节
-
double占8个字节
-
-
字符类型char占2个字节
-
-
boolean类型:占1位字节只有true和false
引用类型
-
类
-
接口
-
数组
//八大数据基本类型 //整数 int num1 = 1000000000; //最常用 byte num2 = 20; short num3 = 30; long num4 = 30L; //long类型要在数字后面加个L //小数:浮点书 float num5 = 1.1F; //float类型要在数字后面加个F double num6 = 3.141592653; //字符 char name1 = 'A'; //字符串,String不是关键字,是一个类 //String name2 = "aaa"; //布尔值 boolean flag = true; boolean flag1 = false;
字节
-
位(bit):是计算机内部数据存储的最小单位,11001100是一个八位二进制数。
-
字节(byte):是计算机数据处理的基本单位,习惯上用大写B来表示
-
1B(byte,字节)=8bit(位)
-
字符:是指计算机中使用的字母,数字,子和符号
-
1bit表示1位
-
1Byte表示一个字节1B=8b
-
1024B =1KB
-
1024KB = 1M
-
1024M = 1G
-
进制转换
-
二进制
-
八进制
-
十进制
-
十六进制
//整数拓展 进制 二进制0b 八进制0 十进制 十六进制0x int i = 10; int i2 = 0b111; //二进制0b //2进制转10进制 2进制: 0b111 十进制:1*2*2+1*2+1=7 = 1*2^2+1*2^1+1 int i3 = 0121; //八进制0 //8进制转10进制 8进制: 0x121 十进制:1*8*8+2*8+1=81 = 1*8^2+2*8^1+1 int i4 = 0x101; //十六进制0x 0~9 A-F 16 //16进制转10进制 16进制: 0x101 十进制:1*16*16+0*16+1=257 = 1*16^2+0*16^1+1 /** * 十进制转2进制 * 十进制15 15/2=7余1 * 尾数部1 :1 * 7/2=3余1 * 尾数补1 :11 * 3/2=1余1 :111 * 1直接补 :1111 *十进制50 50/2=25 * 尾数补0 :0 * 25/2=12余1 :10 * 12/2=6 :010 * 6/2=3 :0010 * 3/2=1y1 :10010 * 1 :110010 * */ /**十进制转8进制 * 十进制50 50/8=6y2 :2 * 6 :62 */ /**十进制转16进制 * 十进制50 50/16=3y2 :2 * 3 :32 */ /**十进制小数转2进制 * * 十进制0.4 * 乘二,取整数 * 0.4*2=0.8 :0.0 * 0.8*2=1.6 :0.01 * 0.6*2=1.2 :0.011 * 0.2*2=0.4 :0.0110 小数后面不够八位继续 * 0.4*2=0.8 :0.01100 * 0.8*2=1.6 :0.011001 * 0.6*2=1.2 :0.0110011 * 0.2*2=0.4 :0.01100110 小数后面够八位结束 */ /**十进制小数转2进制 * * 十进制111.4 * 整数部分直接转换 111转2进制:1101111 *小数部分乘二,取整数 * 0.4*2=0.8 :1101111.0 * 0.8*2=1.6 :1101111.01 * 0.6*2=1.2 :1101111.011 * 0.2*2=0.4 :1101111.0110 小数后面不够八位继续 * 0.4*2=0.8 :1101111.01100 * 0.8*2=1.6 :1101111.011001 * 0.6*2=1.2 :1101111.0110011 * 0.2*2=0.4 :1101111.01100110 小数后面够八位结束 */ System.out.println(i); System.out.println(i2); System.out.println(i3); System.out.println(i4);
浮点数注意事项-最好避免使用浮点数进行比较
-
float
-
表示的长度有限的,离散的
-
有舍入误差
-
大约接近不等于
-
-
double
需要比较可以使用BigDecimal-数学工具类
float f = 0.1f; //0.1 double d = 1.0/10; //0.1 System.out.println(f==d); //结果为:false float f1 = 12341241241241241f; float f2 = f1+1; System.out.println(f1==f2);//结果为:true
字符拓展
-
char
-
字符的本质还是数字
-
-
转义字符
-
对象
/** * 字符拓展 */ char c1 = 'a'; char c2 = '中'; System.out.println((int)c1);//强制转换成int格式 //输出结果:97 System.out.println(c1); //输出结果:a System.out.println((int)c2);//强制转换成int格式 //输出结果:20013 System.out.println(c2); //输出结果:中 /** * 所有字符本质还是数字 * 编码表Unicode (97 = a 65 =A) 2字节 0-65536 Excel 2 16 = 65536 */ char c3 = '\u0061';//输出结果a System.out.println(c3); //转义字符 // \t 制表符,相当于空格 // \n 换行 //... System.out.println("Hello\tWorld"); //输出结果:Hello World System.out.println("Hello\nWorld");//输出结果:Hello // World String sa = new String("hello"); String sb = new String("hello"); System.out.println(sa==sb);//输出结果:false String sc = "hello"; String sd = "hello"; System.out.println(sc==sd);//输出结果:true //对象 从内存分析 //布尔值扩展 boolean flag = true; if (flag) {} //上下是一个意思 if (flag == true) {}