JavaSE-变量常量


变量

变量就是用来存储一个数据的内存区域,且里面存储的数据可以变化

Java 是一种强类型语言,强类型语言可以在编译时进行更严格的语法检查,从而减少编程错误。强类型包含两方面含义:

  1. 所有的变量必须先声明后使用
  2. 指定类型的变量只能接受类型与之匹配的值。这意味着每个变量和每个表达式都有一个在编译时就确定的类型。类型限制了一个变量能被赋予的值,限制了一个表达式可以产生的值,限制了在这些值上可以进行的操作,并确定了这些操作的含义

定义变量的注意事项

  • 变量要先声明后使用
  • 变量定义的时候可以没有初始值,但是使用的时候必须给初始值
  • 变量声明后,不能存储其他类型的数据
  • 变量存在访问范围,且同一范围内变量名不能重复

变量定义的格式:数据类型 变量名称 = 初始值;

int x = 0, y = 0, z = 1;

变量的分类

\[{\Large 变量分类 \begin{cases} 成员变量 \begin{cases} \text{实例变量(不以static修饰)}\\ \text{类变量/静态变量(以static修饰)} \end{cases} \\ 局部变量 \begin{cases} \text{形参(在方法签名内定义的变量)} \\ \text{方法局部变量(在方法内定义的变量)} \\ \text{代码块局部变量(在代码块内定义的变量)} \end{cases} \end{cases}} \]

局部变量(local variable)

  • 局部变量定义后,必须经过显式初始化后才能使用,系统不会为局部变量执行初始化【形参除外】
  • 同一个类中,不能定义两个同名的局部变量;方法局部变量和形参也不能同名
  • 局部变量存储在方法的栈内存中,无需系统垃圾回收,随方法或代码块的运行结束而结束

成员变量(member variable)

  • 如果不自行初始化,它会自动初始化该类型的默认初始值
  • 成员变量随类实例的存在而存在;对象创建,成员变量也跟着创建;对象消失,成员变量也跟着消失
  • 类变量则随类的存在而存在;类被加载,类变量就有效;类被卸载,类变量就消失
  • 对象实例可以访问类变量;同一个类中的所有实例访问类变量时,实际上访问的还是该类的同一个变量
  • 同一个类中,不能定义两个同名的成员变量;即使一个是类变量、一个是实例变量也不行

变量原理

计算机底层都是一些数字电路,用开表示0、关表示1,这些01的形式就是二进制(数据在计算机底层都是采用二进制存储的)

计算机的数据单位:在计算机中认为一个开关表示的0|1称为1位(bit),且每8位称为一个字节(Byte),所以1B=8b

计算机中各种进制

  • 为了便于观察和表示二进制,设计出了八进制和十六进制
  • 八进制:每三位二进制作为一个单元;最小数是0,最大数是7,共八个数字
  • 十六进制:每四位二进制作为一个单元;最小数是0,最大数是15,依次用:0~9 A B C D E F 表示,共16个数字

进制转换

  • 十进制整数转换为二进制整数采用“除2取余,逆序排列”法
  • 二进制转十进制采用“权相加法”

常量

常量是使用了 public static final 修饰的成员变量,必须显式声明初始化值,而且执行的过程中其值不能被改变

常量声明格式:public static final 数据类型 变量名 = 变量值;

常量命名规范:英文单词全部大写,多个单词之间使用下划线连接起来

常量的执行原理:在编译阶段会进行“宏替换”,把使用常量的地方全部替换成真实的字面量。这样做的好处是让使用常量的程序的执行性能与直接使用字面量是一样的,不用再在程序运行时查找变量值了