java学习笔记(一)——JVM执行过程,变量,常量

编译

JDK JVM JRE

      javac  . . . 
      java   . . . 

基本数据类型

   整型		byte short int long
   字节型   	char
   浮点型  	float double
   布尔型	boolean   

引用数据类型

   数组			[ ](抽象类)	class
   接口 		interface
   枚举	 		enum
   注解 		@interface

常量与变量

常量

        1 	32bit(int)
        1.0	64bit(double)
        float x = 1.0;
         - 会报错:不兼容的类
         - 型:从double转换到
         - float可能会有损失
        1.0f1.0F
         - float x = 1.0F;
         - 正确! ! !

思考:为什么 byte x = 1; 可以编译?

     答:‘=’ 有一个决策功
      - 能。当前面多出来的
      - 数据全是0时,可以
      - 忽略。所以可以编译
      - byte x = 1;
      - float由于存储方式前
      - 半部分不是0就报错
      - byte x = 200;
      - 由于前半部分不是0
      - 就会报错:不兼容的
      - 类型:从int转换到
      - byte可能会有损失

思考:为什么 long x = 1; 可以编译?

     答:'='可以决策补0
      - long x= 2147483649;
      - 就不能编译了,报错
      - 错误:过大的整数:
      - 2147483649- 因为超过int的范围。
      - long x = 2147483649L
      - 就不会报错了。

JVM开辟内存

  • 栈内存 (先进后出)
    • 所有的执行都在栈内存
    • 变量空间存储在栈内存
  • 堆内存
    • 堆内存只是一个仓库,不能用
  • 方法区
    • 常量缓冲区 (常量池)
    • 方法区(类模板)
      • 类模板 (映射)
    • 静态元素区 static

默认的执行过程 java . . .

将类的信息映射到方法区

  • 类加载器 (classLodar)
    • 将硬盘中的(javac生成的 )字节码文件中的信息搬运至内存中
    • 先把主方法压在栈中(第一个进去,最后 一个出来,最下面)
    • 主方法的变量再压在栈里
    • 将常量池里的常量复制到变量空间里(不一定是常量,不一定赋值)
编写不易,求转发点赞,谢谢!!!
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值