拉勾教育Java训练营笔记(1.1)
模块一
(一)概念
1.Jdk的目录结构
- bin目录 - 该目录下主要存放JDK的各种工具命令。
- conf目录 - 该目录下主要存放jdk的相关配置文件。
- include目录 - 该目录下主要存放了一些平台的头文件。
- jmods目录 - 该目录下主要存放了JDK的各种模块。
- legal目录 - 该目录下主要存放了JDK各模块的授权文档。
- lib目录 - 该目录下主要存放了JDK工具的一些补充jar包和源代码。
2.javac与java
• javac.exe - 编译器,主要用于将高级Java源代码翻译成字节码文件。
• java.exe - 解释器,主要用于启动JVM对字节码文件进行解释并执行。
3.Jdk、jre、jvm之间的关系
4.编译常见错误
• 错误: 需要class, interface或enum => 通常都是class关键字拼写错误
• 错误: 找不到符号 => 通常因为单词拼写错误或Java中不支持这样的单词
• 错误: 需要';' => 通常都是因为少写分号,加上英文版分号即可
• 错误: 非法字符: '\uff1b' => 通常是因为出现了中文标点符号,修改为英
文版即可
• 错误: 在类 PrintTest 中找不到 main 方法, 请将 main 方法定义为: =>
main写成了mian
5.注释( 特别注意:多行注释不允许嵌套使用! )
• 注释用于进行代码说明,是给程序员看的文字描述,编译器会忽略注释。
• 基本分类
// 单行注释 ,从 // 开始,到本行结束,都是注释。
/* */ 多行注释,从/* 开始,到*/结束,中间所有都是注释。
/** */ 多行/文档注释,从/**开始,到*/结束,是一种支持提取的注释。
6.Java跨平台原理(多理解)
• Java字节码可以通过JVM翻译为具体平台能够执行的机器指令。由于Sun
定义了JVM规范,而且不同的操作系统大多提供了JVM实现,才使得相同
的一个字节码文件可以在不同的系统上运行,从而使Java赢得了“一次编
译,到处使用”的美名。
(二)变量及数据类型
1.变量的声明方式
• 数据类型 变量名 = 初始值;
• 其中“=初始值”可以省略,但“;”不可以省略
2.标识符的命名法则(重点、笔试)
• 由数字、字母、下划线以及$等组成,其中数字不能开头。
• 不能使用Java语言的关键字,所谓关键字就是Java语言用于表示特殊含义
的单词。
• 区分大小写,长度没有限制但不宜过长。
• 尽量做到见名知意,支持中文但不推荐使用。
• 标识符可以给类/变量/属性/方法/包 起名字
3.数据类型分类
• (1)基本数据类型(必须牢记)
byte、short、int、long、float、double、boolean、char
• (2)引用数据类型(重点)
数组、类、接口、枚举、标注
4.进制转换(重点)
• 正十进制转换为二进制的方式
a.除2取余法,使用十进制整数不断地除以2取出余数,直到商为0时将
余数逆序排序。
b.拆分法,将十进制整数拆分为若干个二进制权重的和,有该权重下面
写1,否则写0。
• 正二进制转换为十进制的方式
a.加权法,使用二进制中的每个数字乘以当前位的权重再累加起来。
• 负十进制转换为二进制的方式
a.先将十进制的绝对值转换为二进制,然后进行按位取反再加1。
注意:负数的需要补码:按位取反,再加1 !
• 负二进制转换为十进制的方式
a.先减1再按位取反,合并为十进制整数后添加负号。
5.单个字节表示的整数范围(重中之重)(-128 ~127)
• 在计算机中单个字节表示八位二进制位,其中最高位(最左边)代表符号位,
使用0代表非负数,使用1代表负数,具体表示的整数范围如下:
• 非负数表示范围:0000 0000 ~ 0111 1111 => 0 ~ 127 => 0 ~ 2^7-1
• 负数表示范围:1000 0000 ~ 1111 1111 => -128 ~ -1 => -2^7 ~ -2^0
• 单个字节表示的整数范围是:
-2^7 ~ 2^7-1,也就是-128 ~ 127
6.基础数据类型
1)整数类型
- byte类型在内存空间中占1个字节,表示范围是:-2^7 ~ 2^7-1
- short类型在内存空间中占2个字节,表示范围是:-2^15 ~ 2^15-1.
- int类型在内存空间中占4个字节,表示范围是:-2^31 ~ 2^31-1.
- long类型在内存空间中占8个字节,表示范围是:-2^63 ~ 2^63-1.
注意:在Java程序中直接写出的整数数据叫做直接量/字面值/常量,默认为int类型。若希望表达更大的直接量,则在直接量的后面加上l或者L 。
2)浮点类型
- float类型在内存空间占4个字节,叫做单精度浮点数,可以表示7位有效数字,范围:-3.403E38~3.403E38。
- double类型在内存空间占8个字节,叫做双精度浮点数,可以表示15位有效数字,范围:-1.798E308~1.798E308
注意:Java程序中直接写出的小数数据叫做直接量,默认为double类型,若希望表达float类型的直接量,则需要在直接量的后面加上f或者F.
3)布尔类型
• Java语言中用于描述真假信息类型有:boolean,数值只有:true 和 false。
• 布尔类型在内存空间中所占大小没有明确的规定,可以认为是1个字节。
4)字符类型
- char类型在内存空间中占2个字节并且没有符号位,表示的范围是: 0 ~ 65535
7.ASCII表
- 必须牢记:'0' - 48 'A' - 65 'a' - 97 空格 - 32 换行符 - 10
8.自动转换与强制转换(小转大、大转小)
特别注意:强转有风险,慎用!!!
9.常用转义字符(牢记)
• 要求掌握的转义字符有:\" - " \' - ' \\ - \ \t - 制表符 \n - 换行符
(三)运算符
- 方框内重点掌握
- 注意:移位运算符与为运算符都是对二进制位进行运算
- 运算符优先级巧记:“()”级别最高、“=”级别最低、遇到不确定优先级使用“()”。
(四)流程控制语句
1)分支结构(if/if-else/if else if else/switch-case)
特别注意:1.Switch-case中,各自对应的case语句后要加上break语句!
2.switch()中支持的数据类型有:byte、short、char以及int类型,从jdk1.5
开始支持枚举类型,从jdk1.7开始支持String类型。
例题:
编程使用switch case分支结构实现考试成绩的等级判断
import java.util.Scanner;
public class SwitchScoreTest {
public static void main(String[] args) {
// 1.提示用户输入考试成绩并使用变量记录 0 ~ 100
System.out.println("请输入您的考试成绩:");
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
// 2.使用switch case分支结构实现考试成绩的等级判断
switch(score / 10) {
case 10: //System.out.println("等级A"); //break;
case 9: System.out.println("等级A"); break; // case穿透
case 8: System.out.println("等级B"); break;
case 7: System.out.println("等级C"); break;
case 6: System.out.println("等级D"); break;
default: System.out.println("等级E"); //break;
注意细节: 1.case穿透。case10情况下无对应的break语句强行中止,则会继续执行下一步case9中的语句,至break语句。 2. default语句未加break? 因为default语句位于Switch最后一行,无论执行与否,都会跳出循环。但是,该语句若放在第一行,则必须加上break语句!
2)循环相关语句感悟(for/whlie/do-while/双重for循环 ,break/continue关键字)
- 区别while与do-while
while: 先判断后执行 do-while:先执行后判断
- 区别break与continue
continue:结束本次循环,开启下一次循环。
break:退出当前语句块,用于退出循环。
- 无限循环的合理使用 (不确定情况下查找)
1.for(;;)+ break语句 2.while(true)+ break语句
(五)数组及其应用(优点:查找效率高 缺点:增删效率低)
A.一维数组
1)声明方式(两种)
int[] arr = new int[5];
int[] arr = {1,2,3,4,5};
2)相关概念
3)内存结构(重点理解)
4)增删改查(多加练习)
5)数组间拷贝(重点及笔试考点)(易忘!)
1.原理分析
2.笔试考点(易产生误区!!!)
public class test {
public static void main(String[] args) {
int[] arr = new int[3];
int[] brr;
brr=arr;