Java 的两大数据类型:

  • 内置数据类型
  • 引用数据类型

内置数据类型

Java语言提供了八种基本类型。六种数字类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔型。

byte:

  • byte 数据类型是8位、有符号的,以二进制补码表示的整数;
  • 最小值是 -128(-2^7)
  • 最大值是 127(2^7-1)
  • 默认值是 0
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 例子:byte a = 100,byte b = -50。

    short:

  • short 数据类型是 16 位、有符号的以二进制补码表示的整数

  • 最小值是 -32768(-2^15)
  • 最大值是 32767(2^15 - 1)
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是 0
  • 例子:short s = 1000,short r = -20000。

    int:

  • int 数据类型是32位、有符号的以二进制补码表示的整数;

  • 最小值是 -2,147,483,648(-2^31)
  • 最大值是 2,147,483,647(2^31 - 1)
  • 一般地整型变量默认为 int 类型;
  • 默认值是 0
  • 例子:int a = 100000, int b = -200000。

    long:

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;

  • 最小值是 -9,223,372,036,854,775,808(-2^63)
  • 最大值是 9,223,372,036,854,775,807(2^63 -1)
  • 这种类型主要使用在需要比较大整数的系统上;
  • 默认值是 0L
  • 例子: long a = 100000L,Long b = -200000L。
    “L”理论上不分大小写,但是若写成”l”容易与数字”1”混淆,不容易分辩。所以最好大写。

    float:

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;

  • float 在储存大型浮点数组的时候可节省内存空间;
  • 默认值是 0.0f
  • 浮点数不能用来表示精确的值,如货币;
  • 例子:float f1 = 234.5f。

    double:

  • double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;

  • 浮点数的默认类型为double类型;
  • double类型同样不能表示精确的值,如货币;
  • 默认值是 0.0d
  • 例子:double d1 = 123.4。

    boolean:

  • boolean数据类型表示一位的信息;

  • 只有两个取值:true 和 false;
  • 这种类型只作为一种标志来记录 true/false 情况;
  • 默认值是 false
  • 例子:boolean one = true。

    char:

  • char类型是一个单一的 16 位 Unicode 字符;

  • 最小值是 \u0000(即为0);
  • 最大值是 \uffff(即为65,535);
  • char 数据类型可以储存任何字符;
  • 例子:char letter = ‘A’;。
  1. public class PrimitiveTypeTest {
  2. public static void main(String[] args) {
  3. // byte
  4. System.out.println("基本类型:byte 二进制位数:" + Byte.SIZE);
  5. System.out.println("包装类:java.lang.Byte");
  6. System.out.println("最小值:Byte.MIN_VALUE=" + Byte.MIN_VALUE);
  7. System.out.println("最大值:Byte.MAX_VALUE=" + Byte.MAX_VALUE);
  8. System.out.println();
  9. // short
  10. System.out.println("基本类型:short 二进制位数:" + Short.SIZE);
  11. System.out.println("包装类:java.lang.Short");
  12. System.out.println("最小值:Short.MIN_VALUE=" + Short.MIN_VALUE);
  13. System.out.println("最大值:Short.MAX_VALUE=" + Short.MAX_VALUE);
  14. System.out.println();
  15. // int
  16. System.out.println("基本类型:int 二进制位数:" + Integer.SIZE);
  17. System.out.println("包装类:java.lang.Integer");
  18. System.out.println("最小值:Integer.MIN_VALUE=" + Integer.MIN_VALUE);
  19. System.out.println("最大值:Integer.MAX_VALUE=" + Integer.MAX_VALUE);
  20. System.out.println();
  21. // long
  22. System.out.println("基本类型:long 二进制位数:" + Long.SIZE);
  23. System.out.println("包装类:java.lang.Long");
  24. System.out.println("最小值:Long.MIN_VALUE=" + Long.MIN_VALUE);
  25. System.out.println("最大值:Long.MAX_VALUE=" + Long.MAX_VALUE);
  26. System.out.println();
  27. // float
  28. System.out.println("基本类型:float 二进制位数:" + Float.SIZE);
  29. System.out.println("包装类:java.lang.Float");
  30. System.out.println("最小值:Float.MIN_VALUE=" + Float.MIN_VALUE);
  31. System.out.println("最大值:Float.MAX_VALUE=" + Float.MAX_VALUE);
  32. System.out.println();
  33. // double
  34. System.out.println("基本类型:double 二进制位数:" + Double.SIZE);
  35. System.out.println("包装类:java.lang.Double");
  36. System.out.println("最小值:Double.MIN_VALUE=" + Double.MIN_VALUE);
  37. System.out.println("最大值:Double.MAX_VALUE=" + Double.MAX_VALUE);
  38. System.out.println();
  39. // char
  40. System.out.println("基本类型:char 二进制位数:" + Character.SIZE);
  41. System.out.println("包装类:java.lang.Character");
  42. // 以数值形式而不是字符形式将Character.MIN_VALUE输出到控制台
  43. System.out.println("最小值:Character.MIN_VALUE="
  44. + (int) Character.MIN_VALUE);
  45. // 以数值形式而不是字符形式将Character.MAX_VALUE输出到控制台
  46. System.out.println("最大值:Character.MAX_VALUE="
  47. + (int) Character.MAX_VALUE);
  48. }
  49. }

Java 变量类型

在Java语言中,所有的变量在使用前必须声明。

声明变量的基本格式如下:

  1. type identifier [ = value][, identifier [= value] ...] ;

格式说明:type为Java数据类型。identifier是变量名。可以使用逗号隔开来声明多个同类型变量。

🌰:

  1. int a, b, c; // 声明三个int型整数:a、 b、c
  2. int d = 3, e = 4, f = 5; // 声明三个整数并赋予初值
  3. byte z = 22; // 声明并初始化 z
  4. String s = "runoob"; // 声明并初始化字符串 s
  5. double pi = 3.14159; // 声明了双精度浮点型变量 pi
  6. char x = 'x'; // 声明变量 x 的值是字符 'x'。

Java语言支持的变量类型有:

  • 类变量:独立于方法之外的变量,用 static 修饰。
  • 实例(成员)变量:独立于方法之外的变量,不过没有 static 修饰。
  • 局部变量:类的方法中的变量。

局部变量

  • 局部变量声明在方法、构造方法或者语句块中;
  • 局部变量在方法、构造方法、或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁;
  • 访问修饰符不能用于局部变量
  • 局部变量只在声明它的方法、构造方法或者语句块中可见;
  • 局部变量是在栈上分配的。
  • 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。

🌰1:

  1. package com.runoob.test;
  2. public class Test{
  3. public void pupAge(){
  4. int age = 0;
  5. age = age + 7;
  6. System.out.println("小狗的年龄是: " + age);
  7. }
  8. public static void main(String[] args){
  9. Test test = new Test();
  10. test.pupAge();
  11. }
  12. }

以上实例编译运行结果如下:

小狗的年龄是: 7

🌰2 :在下面的例子中 age 变量没有初始化,所以在编译时会出错

  1. package com.runoob.test;
  2. public class Test{
  3. public void pupAge(){
  4. int age;
  5. age = age + 7;
  6. System.out.println("小狗的年龄是 : " + age);
  7. }
  8. public static void main(String[] args){
  9. Test test = new Test();
  10. test.pupAge();
  11. }
  12. }

实例变量 (成员变量)

  • 实例变量声明在一个类中,但在方法、构造方法和语句块之外;
  • 当一个对象被实例化之后,每个实例变量的值就跟着确定;
  • 实例变量在对象创建的时候创建,在对象被销毁的时候销毁;
  • 实例变量的值应该至少被一个方法、构造方法或者语句块引用,使得外部能够通过这些方式获取实例变量信息;
  • 实例变量可以声明在使用前或者使用后;
  • 访问修饰符可以修饰实例变量;
  • 实例变量对于类中的方法、构造方法或者语句块是可见的。一般情况下应该把实例变量设为私有。通过使用访问修饰符可以使实例变量对子类可见;
  • 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null。变量的值可以在声明时指定,也可以在构造方法中指定;
  • 实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名:ObejectReference.VariableName。

🌰:

  1. import java.io.*;
  2. public class Employee{
  3. // 这个实例变量对子类可见
  4. public String name;
  5. // 私有变量,仅在该类可见
  6. private double salary;
  7. //在构造器中对name赋值
  8. public Employee (String empName){
  9. name = empName;
  10. }
  11. //设定salary的值
  12. public void setSalary(double empSal){
  13. salary = empSal;
  14. }
  15. // 打印信息
  16. public void printEmp(){
  17. System.out.println("名字 : " + name );
  18. System.out.println("薪水 : " + salary);
  19. }
  20. public static void main(String[] args){
  21. Employee empOne = new Employee("RUNOOB");
  22. empOne.setSalary(1000.0);
  23. empOne.printEmp();
  24. }
  25. }

以上实例编译运行结果如下:

$ javac Employee.java
$ java Employee
名字 : RUNOOB
薪水 : 1000.0

类变量(静态变量)

  • 类变量也称为静态变量,在类中以 static 关键字声明,但必须在方法之外。
  • 无论一个类创建了多少个对象,类只拥有类变量的一份拷贝
  • 静态变量除了被声明为常量外很少使用,静态变量是指声明为 public/private,final 和 static 类型的变量。静态变量初始化后不可改变。
  • 静态变量储存在静态存储区。经常被声明为常量,很少单独使用 static 声明变量。
  • 静态变量在第一次被访问时创建,在程序结束时销毁。
  • 与实例变量具有相似的可见性。但为了对类的使用者可见,大多数静态变量声明为 public 类型
  • 默认值和实例变量相似。数值型变量默认值是 0,布尔型默认值是 false,引用类型默认值是 null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。
  • 静态变量可以通过:ClassName.VariableName的方式访问
  • 类变量被声明为 public static final 类型(常量)时类变量名称一般建议使用大写字母。如果静态变量不是 public 和 final 类型,其命名方式与实例变量以及局部变量的命名方式一致
  1. import java.io.*;
  2. public class Employee {
  3. //salary是静态的私有变量
  4. private static double salary;
  5. // DEPARTMENT是一个常量
  6. public static final String DEPARTMENT = "开发人员";
  7. public static void main(String[] args){
  8. salary = 10000;
  9. System.out.println(DEPARTMENT+"平均工资:"+salary);
  10. }
  11. }