
Day2
Java学习
Java程序的底层实现
第一步
通过javac命令将java源码编译成字节码(.class文件),字节码不是机器语言,需要JVM来解释
第二步
通过java命令运行字节码,此时有两种处理方式
- 字节码由JVM逐条解释执行(Java虚拟机的基本执行模式)
- 部分字节码由JIT(Just in Time)编译成机器指令直接执行(直接在硬件上运行)
注释
文档注释
- 在.Java文件中可以在三个地方进行文档注释(类,字段,方法).语法:“/**”加回车
- 在终端中通过
javadoc Main.java可以生成代码注释文档 - 在bash中使用
start index.html打开注释文档网页
数据类型
包装器类型(Wrapper Types)
- 概念:将基本数据类型转化为对应的对象类型
- 作用:允许我们使用基本数据类型提供的各种使用方法,比如
基本数据类型和引用数据类型
基本数据类型
- 变量名指向具体的数值
- 基本数据类型存储在栈上
引用数据类型
- 变量名指向的是存储对象的内存地址,在栈上
- 内存地址指向的对象在堆上
堆(heap)和栈(stack)
简单介绍
- 栈区是由编译器自动分配释放,存放函数的参数值,局部变量的值等。
- 堆区是由程序员分配释放,未释放区可能会被操作系统回收
区别与联系
- 申请方式不同
- 存储方式不同
- 栈是运行程序时自动拥有的一块内存,大小在编译其时由编译器参数决定
- 堆是内存中的不连续的空闲区间(在操作系统中由链表串联在一起)
- 申请速率不同
栈快于堆
基础类型转换
自动类型转换
- 场景:在表达式求值期间时,不同类型的数据之间需要相互兼容时。
- 数据类型排序
1 | byte -> short -> int -> long -> float ->double |
强制类型转换
- 场景
- 将较大的数据类型转换为较小的数据类型
- 将浮点数转换为整数
- 将字符类型转换为数值类型
- 考虑下面几个算式的结果
1 | int a = 1500000000, b = 1500000000; |
- 结果为
1 | -1294967296 |
- 除第三个外,其他都因为int大小的限制而溢出了
本文是原创文章,采用CC BY-NC-SA 4.0协议,完整转载请注明来自STK的Blog





