Java是一种强类型语言。这就意味着必须为每一个变量声明一种类型。在Java中,一共有8种基本类型(primitive type),其中有4种整型、2种浮点类型、1种用于表示Unicode编码的字符单元的字符类型char和1种用于表示真值的boolean类型。

整型

整型用于表示没有小数部分的数值,它允许是负数。Java提供了4种整型,具体内容如下表所示。

类型

存储需求

取值范围

int

4字节

-2 147 483 648 ~ 2 147 483 648(正好超过20亿)

short

2字节

-32 768 ~ 32 768

long

8字节

-9 223 372 036 854 775 808 ~ 9 223 372 036 854 775 807

byte

1字节

-128 ~ 127

由于Java程序必须保证在所有机器上都能够得到相同的运行结果,所以各种数据类型的取值范围必须固定。

长整型数值有一个后缀L或l(如4000000000L)。十六进制数值有一个前缀0x或0X(如0xCAFE)。八进制有i一个前缀0,例如010对应八进制中的8。

从Java7开始,加上前缀0b或0B就可以直接写二进制数。例如0b1001就是9。另外,同样是从Java7开始,还可以为数字字面量加下划线,如用1_000_000(或0b1111_0100_0010_0100_0000)表示一百万。这些下划线只是为了让人更易读,Java编译器会去除这些下划线。

package PrimitiveType;

public class PrimitiveType {
	
	public static void main(String[] args) {
		int num1 = 0b1001;
		int num2 = 1_000_000;
		int num3 = 0b1111_0100_0010_0100_0000;
		
		System.out.println(num1);
		System.out.println(num2);
		System.out.println(num3);
	}
}

运行程序输出:

9
1000000
1000000

java创建整型变量 java定义一个整型属性_基本数据类型

浮点类型

浮点类型用于表示有小数部分的数值。在Java中有两种浮点类型,具体内容如下表所示。

类型

存储需求

取值范围

float

4字节

大约 ± 3.402 823 47E + 38F(有效位数为6~7位)

double

8字节

大约 ± 1.797 693 134 862 315 70E + 308(有效位数为15位)

float类型的数值有一个后缀F或f(例如,3.14F)。没有后缀F的浮点数值(如3.14)默认为double类型。当然,也可以在浮点数值后面添加后缀D或d(例如3.14D)。

java创建整型变量 java定义一个整型属性_Java_02

具体来说,下面是用于表示溢出和出错情况的三个特殊的浮点数值:

  • 正无穷大 Double.POSITIVE_INFINITY
  • 负无穷大 Double.NEGATIVE_INFINITY
  • 不是一个数字 Double.NaN
    特别需要说明的是,不能使用 == 来检测一个特定值是否等于Double.NaN,应使用Double.isNAN方法。
package PrimitiveType;

public class PrimitiveType {
	
	public static void main(String[] args) {
		boolean bool1 = 1.0 / 0 == Double.POSITIVE_INFINITY;
		boolean bool2 = -1.0 / 0 == Double.NEGATIVE_INFINITY;
		boolean bool3 = Double.isNaN(0.0 / 0);
		
		System.out.println(bool1);
		System.out.println(bool2);
		System.out.println(bool3);
	}
}

运行程序输出:

true
true
true
char类型

char类型原本用于表示单个字符。不过,现在的情况已经有所变化。如今,有些Unicode字符可以用一个char值描述,另外一些Unicode字符则需要两个char值。

char类型的字面量值要用单引号括起来。例如:‘A’ 是编码值为65所对应的字符常量。它与 “A” 不同,“A” 是包含一个字符A的字符串。char类型的值可以表示为十六进制值,范围从 \u0000 到 \Uffff 。例如:\u2122 表示注册符号(™)。常用特殊字符的转义序列如下表。

转义序列

名称

Unicode值

\b

退格

\u0008

\t

制表

\u0009

\n

换行

\u000a

\r

回车

\u000d

\"

双引号

\u0022

\’

单引号

\u0027

\\

反斜杠

\u005c

java创建整型变量 java定义一个整型属性_基本数据类型_03

例如,"\u0022 + \u0022" 并不是一个由引号包围加号构成的字符串("+")。实际上,\u0022 会在代码解析之前转换为 " ,这会得到( “” + “” ),也就是一个空串。

package PrimitiveType;

public class PrimitiveType {
	
	public static void main(String[] args) {
		String str = "\u0022 + \u0022";
		
		System.out.println(str);
		System.out.println("************************");
		System.out.println(str.equals(""));
	}
}

程序运行输出:

************************
true
boolean类型

boolean(布尔)类型有两个值:falsetrue ,用来判定逻辑条件。

java创建整型变量 java定义一个整型属性_基本数据类型_04

在C++中,数值甚至指针可以替代boolean值。值 0 相当于布尔值 false,非 0 值相当于布尔值 true。在Java中不是这样!