Java的数据类型分为两大块,一个是基本数据类型,一个是引用类型,如下:
实际编程中,应当要注意下变量的范围,如byte的范围是-128~127,如果初始赋值超过范围,那么就会报错,如下aa=128赋值,超过127,就出现报错
改成在范围之内,就可以了,如下:
一、整数类型
int 的范围大概在 -21亿~21亿, java目前支持二进制、八进制、十进制、十六进制的表示
二进制的表示,在数字前加0b
八进制的表示,在数字前加0
十六进制的表示,在数字前0x
例如:
public classDemo05 {public static voidmain(String[] args) {//基本类型
byte num1 = 10;short num2 = 20;int num3 = 23;long num4 = 988L;//整型扩展表示
int num5 = 0b0011;//二进制表示,0~1
int num6 = 010;//八进制表示,0~7
int num7 = 0x9A;//十六进制表示,0~9,A~F
System.out.println(num5);
System.out.println(num6);
System.out.println(num7);
}
}
运行结果:
二进制计算规则:逢二进一,如num5=0011,计算1*2^0+1*2^1=3
八进制计算规则:逢八进一,如num6=10,计算0*8^0+1*8^1=8
十六进制计算规则:逢16进一,如num7=9A,A表示10,计算 10*16^0+9*16^1=154
二、浮点数
浮点数为float和double表示,用float表示的时候,需要在数字最后增加一个f,如下:
float num1 = 0.1f;//浮点型的数字复制后面要加f
double num2 = 0.1;
浮点数在计算里的表示是个接近值,而不是一个精确值,比如我看一个神奇的例子:
public classDemo05 {public static voidmain(String[] args) {float num1 = 0.1f;//浮点型的数字复制后面要加f
double num2 = 0.1;
System.out.println(num1==num2);
}
}
按照正常理解,num1 和 num2都是0.1,应该是相等,但是我们看下程序运行结果,是否为true呢?
是个false,说明num1 和num2不相等,原因就是 我们刚才提到的浮点数不是一个精确数,而是一个接近数,因此
不用要浮点数去做比较判断!!
思考:
public classDemo05 {public static voidmain(String[] args) {float num3 =66782382738273283728f;float num4 = num3 + 1;
System.out.println(num3==num4);
}
}
运行结果:
三、字符型
字符型用char表示
字符串用String表示,String不是数据类型,是一个类,可以引用这个类来操作字符串。
public classDemo05 {public static voidmain(String[] args) {char s1 = 'a';char s2 = '中';
String s3= "我爱学Java!";
System.out.println(s1);
System.out.println(s2);
System.out.println(s3);
}
}
运行结果:
每个字符占用2个字节,背后对应一个uicode编码数字,我们可以对字符进行数值转换,如
public classDemo05 {public static voidmain(String[] args) {char s1 = 'a';char s2 = '中';
String s3= "我爱学Java!";
System.out.println((int)s1);
System.out.println(s2);
System.out.println(s3);
}
}
运行结果:
我们看到在输出的s1前 增加int类型转换,那么就把字符a对应的uicode编码值97打印出来。
在字符输出的时候,也会碰到需要对字符进行格式输出,如空格,回车等,这个时候需要用到转义字符,
在字母前面加上捺斜线"\"来表示常见的那些不能显示的ASCII字符.常见的转义字符有\t,\n等
四、布尔类型
布尔类型用boolean来定义,赋值是true或false,一般用于比较判断,if语句、while语句中
public classDemo05 {public static voidmain(String[] args) {boolean flag = true;if(flag){
System.out.println("真");
}
}
}
Java语言讲究代码精简,即less is more,像以上的if语句,初学者一般这样写
if(flag == true){} 这个一般是新手这样写的
if(flag){} ,这个是Java推荐,也是一般老手的程序员推荐的。
当然,以上两种都可以编译通过。