数据类型与运算符 - 变量、常量、数据类型

返回目录

变量(Variables)

      • 变量的本质:变量代表一个“可操作的存储空间”,空间位置、类型、大小是确定的,但空间内的值是不确定的,可以通过变量名访问“对应的储存空间”,从而操作该空间的值。
        如果把“可操作的存储空间”比作“车位”,“储存空间里的数据”比作“不同品牌的车”,那“变量名”就是“车位号”,我们可以直接通过“车位号”找到这个“车位”,“车位”里停什么类型的车、车的大小、车位的位置是固定的,但车位里停什么品牌的车是随机的。
      • 变量的声明:Java是一种强类型语言,每个变量都必须声明其数据类型,变量的数据类型决定了变量占据存储空间的大小(详见下方数据类型)。
        变量作为程序中最基本的存储单元,其要素包括数据类型,变量名和作用域,变量在使用前必须对其“声明”,只有在变量声明以后,才能为其分配相应长度的存储空间。

        //声明变量格式,声明语句以分号结束
        type varName [=value][,varName[=value]...];
        //[]内容是可选项
        数据类型 变量名 [=初始值] [,变量名 [=初始值]…];
        
        //声明变量例子
        double test; //double类型变量 test
        long earthPopulation; //long类型变量 earthPopulation
        int age,age2; //同时声明2个int类型变量 age 和 age2
        int age=10, age2=12; //同时声明2个int类型变量 age 和 age2,并同时赋值
        int ageTest = 18; //声明int类型的变量 ageTest 的同时初始化值(赋值),不赋值则使用默认值
      • 变量的分类
        变量类型 声明位置 从属于 生命周期
        局部变量(Local variables) 方法内部语句块内部 方法语句块 从声明位置开始,直到方法或语句块执行完毕,局部变量消失
        成员变量(实例变量)(Member variables) 类内部方法外部 对象 对象的成员,伴随对象始终,创建对象时实例化,对象消失时跟着消失
        静态变量(类变量)(Static variable) 类内部static修饰 类被加载,静态变量就有效;类被卸载,静态变量消失
    • 局部变量(Local variables)
      //  类Variables
      public class Variables{
        // 方法体 main
        public static void main(String[] args){
          int age = 10; //局部变量 age,在main方法中都可以使用
          System.out.println(age); //输出局部变量 age,该变量属于该方法体,只能在方法内调用
          // 语句块
          {
             String name = "AaronHzy"; //局部变量 name,在该语句块中都可以使用
             System.out.println(name); //输出局部变量 name,该变量属于该语句块,只能在语句块内调用
          }
        }
      }
    • 成员变量(实例变量 Member variables
      // 类Variables
      public class Variables{
        int abc = 100; //成员变量,创建对象后都可以使用该变量
        // 方法体 main
        public static void main(String[] args){
          System.out.println(abc); //方法中输出成员变量 abc
          //语句块
          {
            System.out.println(abc); //语句块中输出成员变量 abc
          }
        }
      }
    • 静态变量(类变量 Static variable
      // 类Variables
      public class Variables{
        static int test = 123; //静态变量,使用static修饰,仅能在类的内部使用
        // 方法体 main
        public static void main(String[] args){
          System.out.println(test); //方法中输出静态变量 test
          //语句块
          {
            System.out.println(test); //语句块中输出静态变量 test
          }
        }
      }

常量(Constant)

    • 常量的本质:常量通常指的是一个固定的值,初始化(赋值)后不可被改变,通常利用关键字“final”来定义。
      // 声明常量格式,声明语句以分号结束
      final type varName = value;
      // []内容是可选项
      final 数据类型 变量名 = 初始值;

       

      // 声明常量例子
      final int age = 18; //double类型常量 age
      final String name = "AaronHzy"; //String类型常量 name

数据类型(Primitive Data Type)

    • 数据类型作用:Java是一种强类型语言,每个变量都必须声明其数据类型。
    • 局基本数据类型(Primitive Data Type):Java内置的数据类型,拥有六种数值类型(四个整数型,两个浮点型),一种字符类型,还有一种布尔类型。
      // 整数类型(精确的)
      byte a = 127;
      short b = 32767;
      int c = 2147483647;
      long d = 9223372036854775807L; //默认是int类型,要使用long类型需要在末尾加“<strong>L</strong>”转型
      
      int a = 15; //十进制
      int b = 015; //以0开头的是八进制
      int c = 0x15; //以0x开头的是16进制
      int d = 0b1101; //以0b或0B开头的是二进制

       

      // 浮点类型(不精确的,不可直接用于比较)
      double a1 = 3.14D; //十进制,可以在结尾添加“D”转型到double类型,也可以不加,默认double
      double a2 = 300e2; //科学计数法,e2表示10^2,这里就等于300*10^2=30000
      float a3 = 3.14F; //浮点常量默认是double类型,如要使用float类型必须在结尾加“F”
      long a4 = 9223372036854775807L; //默认是int类型,要使用long类型需要在末尾加“L”转型
      
      // 如果一定要将浮点数进行比较,可使用 java.math包下面的两个类:BigInteger和BigDecimal
      // 这两个类可以处理任意长度的数值。BigInteger实现了任意精度的整数运算。BigDecimal实现了任意精度的浮点运算
      BigDecimal bd = BigDecimal.valueOf(1.0); //设置bd值为0.1
      bd = bd.subtract(BigDecimal.valueOf(0.1)); //bd减去0.1
      bd = bd.subtract(BigDecimal.valueOf(0.1)); //bd减去0.1
      bd = bd.subtract(BigDecimal.valueOf(0.1)); //bd减去0.1
      bd = bd.subtract(BigDecimal.valueOf(0.1)); //bd减去0.1
      bd = bd.subtract(BigDecimal.valueOf(0.1)); //bd减去0.1
      System.out.println("BigInteger计算: " + bd); //输出BigInteger计算的数值
      System.out.println("直接计算: " + (1.0 - 0.1 - 0.1 - 0.1 - 0.1 - 0.1)); //输出直接计算得出的数值,查看差异

       

      // 字符型
      char b1 = 'T'; //可使用Unicode编码支持的字符
      char b2 = '中'; //可使用Unicode编码支持的字符
      char b3 = '\u0061'; //也可直接使用“Unicode编码”
      char b4 = '\\'; //也可直接使用“转义字符”

       

      // 布尔类型
      boolean man = true; //只能为true或false,表示“真”和“假”
      /* 例子,判断是否为man,如果变量man为true,则输出语句“是否为男性:true”
         否则,则输出语句“是否为男性:false” */
      if(man){
        System.out.println("是否为男性:true");
      }else{
        System.out.println("是否为男性:false");
      }

• 引用数据类型(Reference Data Type):引用类型指向一个对象,类型有类、接口、数组等,所有引用类型的默认值都是“null”。