(一)基本数据类型1.整数型 首位为符号位,后面是数字位,符号位为0表示正数,后面数字位直接二进制转化为10进制;符号位1为负,把后面所有的位数取反(即0,1互换),再转化为10进制后加1,就得到该负数的绝对值。
| 整型 | 字节 | 最大存储数据 | 存放的数据范围 |
| Byte | 1(8bit) | 28-1 | -27~27-1 |
| Short | 2(16bit) | 216-1 | -215~215-1 |
| Int | 4(32bit) | 232-1 | -231~231-1 |
| long | 8(64bit) | 264-1 | -263~263-1 |
整型中默认类型是int型,有以下表达方式:十进制: 语法→0~9之间的数字,如int x=123;8进制 : 语法→加前缀0,如int x=0123;16进制:语法→加前缀0x或0X;如int x=0x123;注:长整型数字需加后缀L或者l,如long x=9876543210L; 2.浮点型首位为符号位,中间是指数位e,表示2的阶乘,后面是尾数位m(0<=m<1),指数位的首位是指数符号位,数字表示:(1+m)*2
e| 浮点型 | 字节 | 数据范围 | 备注 |
| Float-单精度 | 4(32bit) | 3.4e-45 ~ 1.4e38(-2128~2128) | 直接赋值需在最后加f或者F |
| Double-双精度 | 8(64bit) | 4.9e-324 ~ 1.8e308(-21024 ~21024 ) | 直接赋值可以在最后加d或者D,也可不加 |
| 符号位 | 指数位e | 尾数位m (0<m<=1) |
| 0/1 | 符号位(首位) | 剩余位 | 2-1 | 2-2 | 2-3 | …… |
| Float | 1位 | 7位 | 23 |
| double | 1位 | 10位 | 52 |
浮点型默认类型是double型。浮点型有2种写法:小数型:如1.2指数型:语法→数字A e(或E) 数字B,表示数字A乘以10的数字B次方,如2e3→2*10
3=2000; -3e-2→-3*10
-2=-0.03注:强制表示单精度浮点型,在数字后面加后缀f或者F,强制表示双精度浮点型,在数字后加后缀d或者D。 3.字符型char →单引号引用的单个Unicode码字符或者16bit非负整数;占两个字节,表示一个字符,写法有两种:数字式:0~2
16-1之间的整数字母式:单引号引用的1个字符,可以是任何字符,包括标点符号、数字、大小写英文字母、日文、汉字等,是Unicode编号字母式写法中单引号引用的内容中,还有以下写法:字符:如"a"8进制: 语法→"ddd",如"123"16进制:语法:‘uhhhh", 如"u9646"部分特殊字符,"字母",如" "表示缩进符,"
" 表示换行符, "
"表示回车符 4.布尔型(逻辑型)boolean,只有两个值,true/false,或者逻辑表达式,不能用0,1表示,也不是“true”字符串 数据值域补充说明:1.一个bit是计算机存储的最小数据单位,即1位,只可能是0或者1;2.一个byte由8个bit组成,即8位,可以表示256个整数值,又由于byte在java中有符号之分(正负数),所以范围是-128~127;3.一个char在java中有两个byte组成,用来表示一个字符,即unicode编码,是无符号类型;4.int和float在java中由4个byte组成;5.每个long或者double型变量占用8个byte的存储空间;6.1T=1024G, 1G=1024M, 1M=1024K, 1K=1024B;
(二)引用数据类型所有用class,interface,abstract 定义的类; String也是java定义的一个类,其数据存储方式与基本数据类型一样,但是String不是基本数据类型;基本数据类型也不是类;
(三)数据类型的转换源类型与目标类型要兼容,比如数字和字符串类型之间就不能转换。数据转换分为自动转换和强制转换:自动转换:从小范围类型的字面量转为大范围类型,如byte,short→int→long,float→double;强制转换:语法→(类型) 表达式,可以进行大范围类型的字面量,转为小范围类型。整数的强制转换时通过截取保留最后长度的方式进行,所以容易出现正数强制转换后变成负数的可能。(浮点型强制转整型,实际是先转为int型)表达式类型提升规则:byte→short→int→long→float→double例:int x=10;
short y=(short)x; // 强制转换
System.out.println(y)short a=10;
int b=a; //自动转换
System.out.println(b);int c=400;
byte d=(byte)c; //强制转换后正数转换为了负数,此处输出结果d=-112
System.out.println(d);
本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-03/129407.htm