本文主要介绍Java中的数据类型,包括原始数据类型、非原始数据类型、数字类型、整数类型、浮点类型、布尔值、字符、字符串、非原始类型(引用类型),以及相关的示例代码

1、Java 数据类型

使用变量存储数据时,为了更充分利用内存空间,我们可以为变量指定不同的数据类型。并且不同类型可以执行不同的操作。如Java 变量文档中所说,Java中的变量必须是指定的数据类型:

例如:

int myNum = 5;               // 整数
float myFloatNum = 5.97f;    // 浮点数
char myLetter = 'C';         // 字符
boolean myBool = true;       // 布尔值
String myText = "cjavapy";     // 字符串

数据类型分为两类:

  • 基本数据类型:包括byteshortintlongfloatdoublebooleanchar
  • 非原始数据类型:例如,字符串,数组和类

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),不带小数。有效类型为byteshortintlong。应该使用哪种类型,取决于数值。

浮点类型表示带有小数部分的数字,包含一个或多个小数。有两种类型:floatdouble

尽管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关键字声明,并且只能采用值truefalse

例如:

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 各个类型的默认值:

数据类型默认值
byte0
short0
int0
long0L
float0.0f
double0.0d
char'u0000'
String (or any object)null
booleanfalse

例如,

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);  
    }  
}


推荐文档