1、Java 数据类型
使用变量存储数据时,为了更充分利用内存空间,我们可以为变量指定不同的数据类型。并且不同类型可以执行不同的操作。如Java 变量文档中所说,Java中的变量必须是指定的数据类型:
例如:
int myNum = 5; // 整数 float myFloatNum = 5.97f; // 浮点数 char myLetter = 'C'; // 字符 boolean myBool = true; // 布尔值 String myText = "cjavapy"; // 字符串
数据类型分为两类:
- 基本数据类型:包括
byte
,short
,int
,long
,float
,double
,boolean
和char
- 非原始数据类型:例如,字符串,数组和类
2、原始数据类型
基本数据类型指定变量值的大小和类型,并且没有其他方法。
Java中有八种原始数据类型:
数据类型 | 占用空间 | 说明 |
byte | 1个字节 | 数据范围从-128到127的整数 |
short | 2字节 | 数据范围从-32,768到32,767的整数 |
int | 4字节 | 数据范围从-2,147,483,648到2,147,483,647的整数 |
long | 8字节 | 数据范围从-9,223,372,036,854,775,808 到9,223,372,036,854,775,807的整数 |
float | 4字节 | 值是小数。数据范围在3.4e-45~1.4e38, 直接赋值时必须在数字后加上f或F。 |
double | 8字节 | 值是小数。 数据范围在4.9e-324~1.8e308, 赋值时可以加d或D也可以不加。 |
boolean | 1位 | 只有true和false两个取值。 |
char | 2字节 | 存储Unicode码,用单引号赋值。 |
3、数字类型
基本数字类型分为两组:
整数类型存储整数,可以是正数或负数(例如123或-456),不带小数。有效类型为byte
,short
,int
和long
。应该使用哪种类型,取决于数值。
浮点类型表示带有小数部分的数字,包含一个或多个小数。有两种类型:float
和double
。
尽管Java中有很多数字类型,但最常用于数字的是int
(用于整数)和double
(用于浮点数)。
4、整数类型
1)字节类型(byte)
byte
数据类型可以存储-128到127之间的整数。当您确定该值将用于存储内存时,可以使用它代替int
或其他整数类型来节省内存。在-128和127之间:
例如:
byte myNum = 100; System.out.println(myNum);
2)短整型(short)
short
数据类型可以存储-32768到32767之间的整数:
例如:
short myNum = 5000; System.out.println(myNum);
3)整型(int)
int
数据类型可以存储从-2147483648到2147483647的整数。当short和byte不够大时使用。通常,在我们的教程中,当我们创建带有数字值的变量时,int
数据类型是首选数据类型。
例如:
int myNum = 100000; System.out.println(myNum);
4)长整型(long)
long
数据类型可以存储从-9223372036854775808到922337203685477575807的整数。当int不足以存储该值时,将使用long。 请注意,长整型值应使用 “L” 结尾:
例如:
long myNum = 15000000000L; System.out.println(myNum);
5、浮点类型
每当需要带小数的数字(例如9.99或3.14515)时,都应使用浮点类型。
1)float
float
数据类型可以存储从3.4e-038到3.4e+038的小数。 请注意,该值应该以 “f” 结尾:
例如:
float myNum = 5.75f; System.out.println(myNum);
2)double
double
数据类型可以存储从1.7e−308到1.7e + 308的小数。 请注意,该值应该以 “d” 结尾:
例如:
double myNum = 19.99d; System.out.println(myNum);
float
仅是六到七个十进制数字,而double
变量的精度约为15个数字。因此,对于大多数计算,使用double
更安全。
3)科学计数
浮点数也可以是带有 “e” 的科学数字,以表示10的幂:
例如:
float f1 = 35e3f; double d1 = 12E4d; System.out.println(f1); System.out.println(d1);
6、布尔值
布尔数据类型使用boolean
关键字声明,并且只能采用值true
或false
:
例如:
boolean iscjavapy = true; boolean isJava = false; System.out.println(iscjavapy); // 输出 true System.out.println(isJava); // 输出 false
布尔值主要用于条件判断的情况使用。
7、字符
char
数据类型用于存单个字符。 字符必须用单引号引起来,例如,‘A’ 或 ‘c’:
例如:
char myGrade = 'B'; System.out.println(myGrade);
或者,可以使用ASCII值来显示某些字符:
例如:
char a = 65, b = 66, c = 67; System.out.println(a); System.out.println(b); System.out.println(c);
提示:所有ASCII值的列表都可以在ASCII码对照表中找到。
8、字符串
String
数据类型用于存字符序列(文本)。字符串值必须用双引号引起来:
例如:
String word = "Hello World"; System.out.println(word);
String类型在Java中被广泛使用和集成,有人将其称为“第九种特殊类型”。Java中的String实际上是一种非原始数据类型,因为它引用了一个对象。 String对象具有用于对字符串执行某些操作的方法。
9、非原始数据类型
非原始数据类型称为引用类型,因为它们引用对象。
基本数据类型和非基本数据类型之间的主要区别是:
- 基本类型在Java中是预定义的。 非基本类型是由程序员创建的,而不是由Java定义的(
String
除外)。 - 非原始类型可用于调用方法以执行某些操作,而原始类型则不能。
- 基本类型始终具有一个值,而非基本类型可以为
null
。 - 基本类型以小写字母开头,而非基本类型以大写字母开头。
- 基本类型的大小取决于数据类型,而非基本类型具有相同的大小。
非基本类型的示例包括字符串,数组,类,接口等。
10、类型默认值
下表列出了 Java 各个类型的默认值:
数据类型 | 默认值 |
---|---|
byte | 0 |
short | 0 |
int | 0 |
long | 0L |
float | 0.0f |
double | 0.0d |
char | 'u0000' |
String (or any object) | null |
boolean | false |
例如,
public class Test { static boolean bool; static byte by; static char ch; static double d; static float f; static int i; static long l; static short sh; static String str; public static void main(String[] args) { System.out.println("Bool :" + bool); System.out.println("Byte :" + by); System.out.println("Character:" + ch); System.out.println("Double :" + d); System.out.println("Float :" + f); System.out.println("Integer :" + i); System.out.println("Long :" + l); System.out.println("Short :" + sh); System.out.println("String :" + str); } }
public class PrimitiveTypeTest { public static void main(String[] args) { // byte System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE); System.out.println("包装类:java.lang.Byte"); System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE); System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE); System.out.println(); // short System.out.println("基本类型:short 二进制位数:" + Short.SIZE); System.out.println("包装类:java.lang.Short"); System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE); System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE); System.out.println(); // int System.out.println("基本类型:int 二进制位数:" + Integer.SIZE); System.out.println("包装类:java.lang.Integer"); System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE); System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE); System.out.println(); // long System.out.println("基本类型:long 二进制位数:" + Long.SIZE); System.out.println("包装类:java.lang.Long"); System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE); System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE); System.out.println(); // float System.out.println("基本类型:float 二进制位数:" + Float.SIZE); System.out.println("包装类:java.lang.Float"); System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE); System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE); System.out.println(); // double System.out.println("基本类型:double 二进制位数:" + Double.SIZE); System.out.println("包装类:java.lang.Double"); System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE); System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE); System.out.println(); // char System.out.println("基本类型:char 二进制位数:" + Character.SIZE); System.out.println("包装类:java.lang.Character"); // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台 System.out.println("最小值:Character.MIN_VALUE=" + (int) Character.MIN_VALUE); // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台 System.out.println("最大值:Character.MAX_VALUE=" + (int) Character.MAX_VALUE); } }