常量:在Java代码运行的过程中, 其值不会发生变化的量(数据), 称为常量
1、用final修饰(也称最终变量)
2、常量在声明时必须赋初值,赋值后不能再修改值
3、常量名通常用全大写字母表示
4、符号常量 – 有名字的常量(定义到方法外且固定static final)
5、字面值常量 – 通俗点讲直接打印输出的各种类型数据(没有名字,且不可更改)。
//符号常量
public static final String IDCARD ="150233198804231123";
public class Test{
//符号常量 一般定义在类中并且在方法外,以static 和 final 关键词修饰
//final 最终的 static 静态的
public static final String ID_CARD = "12345678901230987654";
public static void main(String[] args) {
//变量
int i = 100; //这种算定义 不算直接使用
System.out.println(i);
System.out.println(300); //自面量常量
System.out.println(200); //常量
//总结:这个案例中,100是使用i定义出来的,之后可以改变 变量
//200 和 300 没名字并且只能使用这一次 这种我们叫常量
System.out.println(ID_CARD);
}
}
变量: 在程序运行过程中,其值可以发生改变的量,人为和程序都可以控制改变
1、变量类型不同,分配的内存类型也不同
2、无初始化成员变量的默认值
3、变量的自动算术运算转换
4、全局变量和成员变量区别:
使用范围:
全局变量的使用范围是整个类都可以使用
成员变量只能在定义的方法中使用
定义的区别:
定义的是全局变量,如果在静态方法中使用, 那么要求变量也必须是静态的,如果是非静态方法使用, 变量是静态或非静态都可以。
成员变量的定义在静态方法中不可以再使用静态的声明,因为静态方法在内存中存储的地址是不一样的。 只能定义成普通的。
局部变量是存在栈中,全局变量存在堆中,程序运行中有两个存储空间可用,一个是栈,是归属于进程本身的,另外一个是堆,所有进程共用的。
public class Test {
//全局静态变量:定义在方法外
static int i = 100;
//主函数,执行的入口,默认只会执行这一个方法
public static void main(String[] args) {
//局部变量定义方法内
int k = 50;
System.out.println(i); System.out.println(k);
}
public static void show(){ System.out.println(i); //System.out.println(k); k无法使用
}
}