一、Java简介
- JDK(JRE(JVM & API)、Java language(tools & APIs));
- java源文件 → javac的编译 → class类(会生成一个或多个class文件);
* 使用 javac 指令生成 class 文件;
* 使用 java 指令直接执行源文件。 - 同一个源文件下,只能有一个类使用public作修饰,且这个类的类名需要与文件名一致;
- 注释
- //
- /* ... */
- /** @xxx ... @xxx ... @xxx ... */ 文档注释:这些内容可以被javadoc工具解析,生成网页形式说明文档(必须要用public公共类)
指令举例:javadoc -d 文件夹名 -author -version xxxx.java
- 半编译半解释
- 编译 → 解释(翻译)成字节码
- Java(两种编译方式):1、源代码编译成字节码,然后JVM将字节码解释为机器码并执行;2、JIT编译器将热点代码即时编译为本地机器码执行,以提高性能。
- Java一般是先将源文件编译成字节码文件,然后解释执行。(使用JIT,就可以实现源码即时编译为本地机器码了,因此叫半编译半解释型语言。
二、符号
- 标识符
- 只能由字母、数字、下划线_、美元符$ 四种符号组成;
- 数字不可以开头,不可以使用关键字;
- 命名规范
- 包名:多单词→全小写
- 类名、接口名:驼峰式(首字母大写)
- 变量名、方法名:驼峰式(首字母小写)
- 常量名:全字母大写,多字母用下划线连接
- “见名知意”
- 变量
- 声明 & 初始化( or 赋值)
- 变量类型
- 基本数据类型:1字符、1布尔
- 4种整型
- byte:-128~127(1个字节)
- short:-2^15 ~ 2^15-1(2个字节)
- int:-2^31 ~ 2^31-1(4个字节)
- long:-2^63 ~ 2^63-1(8个字节,需要一个大写或小写的字母L作为结尾)
- ps:byte、short、int之间的运算,结果都会用int做接收(默认就是int,原因是因为减少溢出,int一般够用)
- 2种浮点
- float:单精度(4字节,7位有效数字,结尾需要一个字母F or f);
- double:双精度(8字节);
- 对精度要求很高时,需要使用BigDecimal类
- 字符类型
- char
- 单引号:内部有且仅有一个字符;
- 直接使用Unicode值
- 转义字符
- 数字(对应的ascii码值)
- char
- 布尔类型
- 只有true和false;
- 实际分配4个字节
- 4种整型
- 引用数据类型:类(String(双引号))、数组、集合、接口、枚举、注解、记录等
- String与其他基本类型只能做连接运算+,但是连接的类型顺序会影响到最终输出(因为+号可以是加号,也可以是字符串拼接符号)。
- 作用域
- 基本数据类型:1字符、1布尔
- 变量与运算符(算术、逻辑、比较、位、条件 运算符)
- 自动类型提升(两种不同的类型做运算,结果的类型会自动转换成表示范围更大的类型,注意,4字节的float比8字节的long所能表示的范围更大 float为什么要比Long的取值范围大_float为什么比long大_IABQL的博客-CSDN博客);
- 强制转换类型
- ():大类型转换为小类型,需要用()这个强制转换符(前提是数值本身不超过小类型的范围,否则会损失精度)。
- ++或--不改变数据本身的类型
- +=这种操作也不改变数据本身的类型(+=跟=x+1是有区别的)
- 比较运算符 instanceof:检查变量是否是类的对象。如:“Hello” instanceof String
- 逻辑运算符
- ^ 异或,追求的是异。
- | 和 || ,& 和 && :都是一样的,只不过 || 与 && 多了一个短路的逻辑,开发中一般用 || 和 && 。
- 位运算符
- >>:右移(每移一位,相当于/2)
- <<:左移(每移以为,相当于*2)
- >>>
- ~:取反
- 自动类型提升(两种不同的类型做运算,结果的类型会自动转换成表示范围更大的类型,注意,4字节的float比8字节的long所能表示的范围更大 float为什么要比Long的取值范围大_float为什么比long大_IABQL的博客-CSDN博客);
三、进制
- 十进制
- 2进制:以0b/0B开头
- 8进制:以0开头
- 16进制:以0x/0X开头
- System.out.print() 输出都会是十进制显示。
- 进制换算
四、流程控制
- switch
switch(byte/short/char/int){ case x0: System.out.println(0); break; case x1: System.out.println(1); break; case x3: System.out.println(3); break; default: System.out.println("error"); }
只能是这几种特定的类型
- switch比if else效率更高,且具有穿透性,但if else的使用场景更广。
- 循环
for( a ; b ; c ){ d; if(xx){ break; } // break可用于结束循环 } //执行顺序:a → b → b通过 → d → c,c是最后执行的. //第一次循环之后,a就不会再被执行了。
- 打分