ThinkSSL🔒 一键申购 5分钟快速签发 30天无理由退款 购买更放心 广告
[TOC] # 变量 在程序中存在大量的数据来代表程序的状态,其中有些数据在程序的运行过程中值会发生改变,有些数据在程序运行过程中值不能发生改变,这些数据在程序中分别被叫做变量和常量。 在实际的程序中,可以根据数据在程序运行中是否发生改变,来选择应该是使用变量代表还是常量代表。 ## 变量定义 数据类型 变量名称 ~~~ int=4; ~~~ ## 变量作用域 类变量:独立于方法之外的变量,用 static 修饰。 实例变量:独立于方法之外的变量,不过没有 static 修饰。 局部变量:类的方法中的变量。 ~~~ public class Variable{ static int allClicks=0; // 类变量 String str="hello world"; // 实例变量 public void method(){ int i =0; // 局部变量 } } ~~~ #### 局部变量 * 局部变量是在栈上分配 * 局部变量只在声明它的方法、语句块中可见; * 局部变量没有默认值,所以局部变量被声明后,必须经过初始化,才可以使用。 * 局部变量在方法或者语句块被执行的时候创建,当它们执行完成后,变量将会被销毁 #### 实例变量 * 在堆上分配 * public 能够被任何其他类访问 private 只能被所属类访问* * 当一个对象被实例化之后创建,在对象被销毁的时候销毁,或者垃圾回收. * 实例变量具有默认值。数值型变量的默认值是0,布尔型变量的默认值是false,引用类型变量的默认值是null.变量的值可以在声明时指定,也可以在构造方法中指定; * *实例变量可以直接通过变量名访问。但在静态方法以及其他类中,就应该使用完全限定名ObejectReference.VariableName。 #### 类变量 * 在方法区(静态区)分配 * 与实例变量具有相似的可见性。 * 静态变量在程序开始时创建,在程序结束时销毁。 * 默认值和实例变量相似。数值型变量默认值是0,布尔型默认值是false,引用类型默认值是null。变量的值可以在声明的时候指定,也可以在构造方法中指定。此外,静态变量还可以在静态语句块中初始化。 # 常量 ### 常量定义 不变的变量 final 数据类型 常量名称 = 值; > Java编码规范中,要求常量名必须大写。 # 直接量 直接量是指在程序中直接通过源代码的方式指定的值,有时也成为字面量。 ~~~ int b = 10; //b为常量,10为字面量 ~~~ > 在编译的时候,JVM 就定义到常量池中。 * int 默认 12 * long 加L * float 加F * double 12.8默认 * boolean 布尔直接量true、false * char 单引号内的单个字符 * String 双引号内的字符序列 > 错误的字面量 比int的最大值还要大1的直接量2147483648是错误的,因为超过int表示的范围,应该使用2147483648L表示