拉勾教育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;