Java 数据类型
java 中的数据类型,分引用类型和基本数据类型,基本数据类型有 8 种 ,引用类型将在面向对象时详细讲解,此处了解即可。1 . 8种基本数据类型 整形: byte, short, int, long 浮点形: float, double 字符型: char Boolean型: boolean2 .整数类型
整数类型有byte, short, int ,long都是有符号(补码)整数(即能表示负数).类型 | 占位 | 最大值 | 最小值 |
byte | 8位补码 | 0x7f(127) | 0x80(-128) |
short | 16位有符号数 | 0x7fff(32767) | 0x8000(-32768) |
int | 32位 | 0x7fffffff(2G-1)2^31-1 或21亿 | 0x80000000(-2G) |
long | 64位 | 2^63-1 | -2^63 |
//byte b = 128; 超范围赋值,会报编译错误byte b = 127;byte c = -128;short s = 32767;//short s2 = 0x8000; //错误,超范围short s2 = 0xffff8000; //可以,最小值
1 public class BinDemo{2 public static void main(String[] args){3 long l1 = 12123123123;//报错4 long l2 = 12123123123L;//正确5 }6 }
float类型共32位(与int 相同),其中1位为符号位,指数8位,尾数32位。需要强调的是float的精度是23位
(即能精确表达23位的数,超过就被截取了)。小数是以尾数长度来表示精确度的,比如pi=3.14,它的精度 是2位,pi = 3.1415,它的精度就是4位。 比较有趣的是int 的精度比float要大,因为int的精度是31位,大于float.因为int 类型的范围是(-2^31)~(2^31-1)而 float的范围是(-2^128)~(-2^128-1),所以: (此处加黑)int类型的数据能表示的范围比float类型小,int类型数据表示的精度比float大。例子1 /** 浮点数的特点 */ 2 public class FloatDemo{ 3 public static void main(String[] args){ 4 int a = 0x7fffffff; //int类型最大值 5 int b = 0x7ffffff0; //比a大15 6 7 float fa = a; 8 float fb = b; 9 System.out.println(fa); 10 System.out.println(fb);11 System.out.println(a==b); //false int类型的值相比较a>b12 System.out.println(fa==fb); // ture 相同的数,float类型竟然相同13 }14 }
double类型能够表示64位,其中1位是符号位,11位指数,52位尾数
注:浮点数运算时只是尽可能精确,所以不要对浮点数进行比较,比的不准。
例子/** 浮点数的特点 */public class FloatDemo{ public static void main(String[] args){ int a = 0x7fffffff; //int类型最大值 int b = 0x7ffffff0; //比a大15 float fa = a; float fb = b; System.out.println(fa); System.out.println(fb); System.out.println(a==b); //false int类型的值相比较a>b System.out.println(fa==fb); // ture 相同的数,float类型竟然相同 }}
字符类型是经常用到的,是16位无符号整数,是一个二进制数,这个数值是一个字符的unicode编码值
unicode编码,是全国范围内的编码方法,编制了英文,中,日,韩,阿拉伯等8万多个字符(unicode在设计时就旨能表示世界上所有的文字) java中的char 范围是0~65535不能表示全部unicode,但是表示unicode最常用部分够用了 在程序中为一个字符赋值,字符字面量使用单引号,可以为char赋值的有字符,数字,符号例子1 /** 浮点数的特点 */ 2 public class FloatDemo{ 3 public static void main(String[] args){ 4 int a = 0x7fffffff; //int类型最大值 5 int b = 0x7ffffff0; //比a大15 6 7 float fa = a; 8 float fb = b; 9 System.out.println(fa); 10 System.out.println(fb);11 System.out.println(a==b); //false int类型的值相比较a>b12 System.out.println(fa==fb); // ture 相同的数,float类型竟然相同13 }14 }
注意:特殊字符采用[转义字符]表示,如:
'\n' 表示回车 '\t' 表示table键 '\\' 表示\ '\'' 表示单引号 '\"'表示双引号 '\u4e2d'表示unicode 编码对应的字符当控制台显示为"?"时候,代表本操作系统中找不到该数字对应的字库并不是所有字符都可见,例如'\u0000'表示为小方块或者不可见
3.5boolean布尔类型
表达:真(true)/假(false).一般用于判断语句块中例子public class Demo { public static void main(String[] args) { boolean kaihui = false; if(kaihui == true){ System.out.println("下班回家"); }else{ System.out.println("加班开会"); } }}输出结果为:加班开会