你所没有听说过的常量、变量、字面量在这里!

-常量、变量、字面量,量量精通!

-大家好!我是本次码哥----四原色先生!今天晚上,手把手教你理解常量、变量与字面量!

1. 常量

常量通常是放在“常量池”中,在赋值之后就不可改变,具有名字,可以是基本类型也可以是类型,使用final关键字修饰,初始化必须赋值,且类型和值不能再改变。

注:对应全局常量,若初始化未赋值,可且仅可在构造方法里赋值,但必须在此类中全部构造方法内赋值。

public class FinalViable{
    
    final int FINAL_INT;//未初始化的常量
    FinalViable(){
        //需要在无参构造器中对未初始化的常量进行初始化
        this.FINAL_INT = 10;
    }
    FinalViable(int num){
        //不仅如此,还需要在有参构造方法中对未初始化的常量进行初始化,如果存在其他构造器,同样需要对未初始化的常量进行初始化
        this.FINAL_INT = num;
    }
    
    //对于初始化的常量,则不能在其他任何地方对其进行赋值操作,此时这个常量不可变
    final int HAS_VARIABLE_INT = 10;
    public void fun(){
        //HAS_VARIABLE_INT = 100;//错误的
        
        //对于局部常量,只有能进行一种操作:创建时赋值。
        final int VARIABLE_int = 10;
    }
}

几种常量:

//下面定义了八个基本数据类型常量和一个String类型常量
final byte FINAL_BYTE = 1;
final short FINAL_SHORT = 1;
final int FINAL_INT = 10;
final long FINAL_LONG = 100l;
final char FINAL_CHAR = 'a';
final double FINAL_DOUBLE = 12.00;
final float FINAL_FLOAT = 12.00f;
final boolean FINAL_BOOLEAN = true;
final String FINAL_STRING = "四原色";

2. 变量

定义出一个符号,这个符号在某个范围内,就代表一个变化的量。要注意两点:

  1. 变量必须先定义才可以使用。

  2. 变量如果先被赋值或者初始化才可以使用。

//下面定义了八个基本数据类型变量和一个String类型变量
byte variable_byte = 1;
short variable_short = 1;
int variable_int = 10;
long variable_long = 100l;
char variable_char = 'a';
double variable_double = 12.00;
float variable_float = 12.00f;
boolean variable_boolean = true;
String variable_String = "四原色";

(1)局部变量:

public class Variable{
    public static void main(String []args){
        int variable_int = 10;//定义了一个局部变量,其作用范围只能是main方法内
    }
}

(2)全局变量

public class Variable{
    public static int staticVariableInt = 10;//定义了一个全局变量,其作用范围与Variable的生命周期一致
    public static void main(String []args){
        int variable_int = 10;//定义了一个局部变量,其作用范围只能是main方法内
        variable_int = staticVariableInt;//将全局变量的值赋给了局部变量,两者值都为10
        fun();//调用fun()函数,全局变量自增,此时全部变量值为11
    }
    public static void fun(){
        staticVariableInt++;
    }
}

3.变量的命名规则:

(1)变量名只能包括数字、字母、下划线

(2)不能以数字开头

(3) 变量名区分大小写

(4)允许使用中文(¥)和美元符号($)命名

3. 字面量

类型为整型、浮点型/布尔型和字符串。它在使用时,就一直用其本身,没有名字(标识符)可以代指它。它在源代码中值用本身表示,而变量和常量,其值并非就是直接见到的标识符。字面量就是数据,是由字母、数字等构成的字符串或者数值。阅读文章开始的代码的注释应该秒懂。举例子前说一下左值和右值(int a = 0;这里a是左值,0是右值),其中字面量只能以右值进行出现。

//简而言之:字面量就是一个变量的值
int variableInt = 1;//这里的1就是一个整型字面量
String variableString = "四原色";//这里的 "四原色" 就是一个字符串字面量

4. 内存管理

常量:方法区

常量+字面量:常量池

常量+引用对象:堆


静态变量:方法区

静态变量+基本类型字面量:常量池

静态变量+引用对象:方法区


成员变量:堆

成员变量+引用对象:堆

成员变量+基本类型字面量:堆

成员变量+“”:常量池


局部变量:栈

局部变量+引用对象:堆

局部变量+基本类型字面量:栈

局部变量+“”:常量池


1.new出的对象存储堆中

2.””存储常量池中,

3.基本类型字面量为常量或静态变量时,存储在常量池;为成员变量存储在堆中;为局部变量存储在栈中;

5. 参考文献

《JVM存储位置分配》.csdn用户: HD243608836 链接:https://blog.csdn.net/HD243608836/article/details/87940295

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值