1、Java 程序的运行机制
思考?一个Java 程序是怎么跑起来的
- 首先通过 Java 编译器编译为 .class 文件
- 通过类装载器装入 .class 并且进行字节码校验器
- 通过解释器解释一步,执行一步
这只是一个简单模型,后期深入探讨研究
编译型语言与解释型语言的必需知识点
概念:由于计算机不能直接的理解高级语言,只能直接理解二进制的机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时机不同
-
编译型语言:使用一个“编译器”来编译成机器语言,然后就可以直接运行可执行文件,比如C,C++
-
解释型语言:使用一个“解释器”来执行,解释器对于程序是一句一句“翻译”成机器语言来一句一句执行,例如 shell ,python
编译型语言和解释型语言的区别
如图
- 编译器型语言执行速度快
- 编译型语言所需要内存更少
- 编译型语言不安全,可以访问内存任意位置
- 解释型语言平台独立性,可移植性
- 解释型语言占用资源多,执行速度慢
2、数据类型
Java 是强类型语言,要求所有变量必须先定义后使用
Java 数据类型分为两类
-
基本类型
- 数值类型:整数(byte,short,int,long),浮点数(float,double),字符类型(char)
- boolean 类型:(boolean)占1位字节数
-
引用类型:
- 类
- 接口
- 数组
注意:在 Java 中的 char 类型一般占2个字节,因为其采用的字符集为 unicode,而C/C++采用的是ASCII编码集,只占1个字节
面试题:银行业务怎么表示?
切记不可以使用 float 和 double,因为他们是有限的,有舍入误差
比如 float d1 = 34189242142478515f
float d2 = d1 +1 ,这个时候,d2 和 d1 是相等的,不符合逻辑
后期会更新一个类,叫 BigDecimal 大数类,可以解决这个问题
3、类型转换
- 强制类型转换:由高到低
- 隐式类型转换:由低到高
注意点
- 不能对 boolean 类型转换
- 不能把类型转换为不相关的类型
- 转换的时候可能存在内存溢出或精度损失问题
4、变量
- 局部变量:和 C++一样,在函数内部,使用之前必须初始化
- 实例变量:从属于对象,通过对象访问,默认值为 0/null/false
- 类变量:一个变量前面加 static ,从属于类,可以直接输出
5、常量
使用到一个关键字 final
static final double PI = 3.14
final static double PI = 3.14
两种写法都行,修饰符不区分顺序,而C++使用的是 const 关键字定义一个常量
命名规范
1.常量:一般使用大写字母来定义,中间用下划线连接
2.变量:使用驼峰规则,除 了第一个单词,其余单词首字母都为大写
3.类名:首字母需要大写,其它单词首字母也大写
4.方法名:首字母小写,其他单词驼峰命名
5.局部变量:首字母小写,其他单词驼峰命名
6、包机制
包的本质就是一个文件夹,用于区别类名的命名空间,C++ 使用的 namespace 避免命名污染
一般使用公司域名导致来规范包的命名
7、JavaDoc
用来将注释生成自己的 API 文档