数据类型
在java中一共有八种基本数据类型:其中整型四种、浮点型两种、1种字符类型、1种bool类型。
整型
对于整型类型,Java只定义了带符号的整型,因此,最高位的bit表示符号位(0表示正数,1表示负数)。各种整型能表示的最大范围如下:
- byte:-128 ~ 127
- short: -32768 ~ 32767
- int: -2147483648 ~ 2147483647 (21亿)
- long: -9223372036854775808 ~ 9223372036854775807
在java中,整型的范围与运行的机器无关,另外java没有任何无符号形式的int、long等,,java的最高位表示正负,若最高位是1则是负数,若最高位是0则是正数。对于byte及short很少使用,使用最多的是int类型,如果int不能够满足,则可以使用long类型。使用long类型,需要注意要在数的最后加上l或L。
public static void main (String [] args) {
byte n1 = 1;
short n2 = 100;
int n3 = 1000000;
long n4 = 9876543210L;
}
其他进制表示
- 二进制,使用0b开头
- 八进制,使用0开头
- 十六进制,使用0x开头
尽量不要使用八进制,以0开头容易让人混淆。
浮点类型
浮点类型只有两种,float(1字节)和double(2字节),工作中,很少使用到float类型,因为它的精度不准确,有效位数只有6~7位。而double类型择优15位。float类型的数值有一个后缀f或F,没有后缀的浮点数总被认为是double类型。
public static void main (String [] args) {
float PI = 3.14F;
double x = 3.141592635;
}
浮点型有三个特殊输出,用于表示溢出和出错的情况。
- 正无穷大
- 负无穷大
- NaN
常量Double.POSITIVE_INFINTY Double.NEGATIVE_INFINIT和Double.NaN分别表示这三个数值。
NaN不与任何值相对,包括NaN本身。
public class IntSty {
/**
* main方法
* @return void
*
*/
public static void main (String [] args) {
double n = Math.sqrt(-3);
double m = n;
if (m == n) {
System.out.print(1);
} else {
System.out.print(0);
}
}
}
所以,判断一个数值是否为NaN需要使用Double.isNaN()方法
if (Double.isNaN(Math.sqrt(-3))) {
System.out.print(1);
}
字符类型
char类型的字符要用单引号括起来。一个char类型在java中占16位,它可以表示十六进制值,范围为\u0000~\uFFFF。除了转意字符\u外,还有一些特殊字符,他们的unicode值如下:
转移序列 | 名称 | Unicode值 |
---|---|---|
\b | 退格 | \u0008 |
\t | 制表符 | \u0009 |
\n | 换行 | \u000a |
\r | 回车 | \u000d |
\" | 双引号 | \u0022 |
\’ | 单引号 | \u0027 |
\\ | 反斜杠 | \u005c |
注意:不要在程序中使用char类型。
布尔类型
布尔类型的值只有两个:false和true。都是小写字母,和php不一样,php的false和true不区分大小写。另外,整型和布尔型之间不能进行转换。下面是一个常见的错误:
if (x = 0) {//...} // 编译出错,因为x=0表达式不能转换为布尔值