### 黑马程序员Java基础视频辅导班Day01知识点总结
#### Java的跨平台特性与JVM
1. **Java的跨平台性**:Java语言能够实现跨平台运行的关键在于Java虚拟机(JVM),即Java代码可以在任何安装了对应JVM的操作系统上运行。这是因为JVM针对不同的操作系统都有特定的版本,这样Java程序就可以被编译成一种中间代码(字节码),再由JVM将这种中间代码解释成特定平台的机器码来执行。
2. **JDK与JRE的区别**:
- **JDK(Java Development Kit)**:包含了Java运行环境(JRE)、Java编译器(javac)、Java调试器(jdb)等开发工具。它是开发Java应用程序所必需的。
- **JRE(Java Runtime Environment)**:包含了JVM和运行Java程序所需要的核心类库。JRE主要用于运行已编译好的Java程序。
3. **JVM的角色**:JVM(Java Virtual Machine)是Java跨平台性的基础,它负责解释执行由Java编译器生成的字节码文件,并处理程序的内存管理、线程管理、异常处理等任务。不同的操作系统平台上会有相应的JVM版本。
#### 第一个Java程序——HelloWorld
1. **程序结构**:
- **定义类**:使用`class`关键字定义一个类,类名通常采用首字母大写的名词。
- **主方法**:`public static void main(String[] args)`是程序的入口点,JVM启动时会自动调用该方法。
2. **注意事项**:
- 类名和文件名需要保持一致。
- Java区分大小写,所有关键字都是小写的。
- 括号必须成对出现,且缩进要规范。
#### Java程序的开发流程
1. **编写源文件**:扩展名为`.java`,例如`HelloWorld.java`。
2. **编译**:使用`javac HelloWorld.java`命令编译源文件,生成`.class`字节码文件。
3. **运行**:使用`java HelloWorld`命令运行程序(不需要提供`.class`后缀)。
#### 常见编译运行错误
1. **文件名问题**:确保文件名与类名一致,且不要添加额外的扩展名如`.txt`。
2. **中英文符号**:Java源文件中的所有符号(如括号、引号等)都应该是英文符号。
3. **大小写敏感**:Java是严格区分大小写的编程语言。
4. **括号匹配问题**:确保所有的括号都能正确匹配。
5. **更新class文件**:如果修改了Java源文件,则需要重新编译以更新`.class`文件。
#### 环境变量Path与Classpath
1. **Path**:配置此环境变量可以使用户在任何目录下执行JDK\bin目录下的命令,如`javac`和`java`。
2. **Classpath**:配置此环境变量可以告诉JVM在哪些目录下查找`.class`文件。如果配置了`Classpath`,则JVM将不再默认搜索当前目录;若想让JVM继续搜索当前目录,可在`Classpath`中加入`.`表示当前目录,并用分号分隔开。
#### 关键字与保留字
1. **关键字**:Java中的关键字均为小写,如`public`、`private`、`class`等。
2. **保留字**:`goto`与`const`虽然不是当前使用的关键字,但在Java中已被保留。
#### 标识符
1. **命名规则**:
- 可以使用大小写字母、数字、下划线`_`和美元符号`$`组成。
- 不得以数字开头。
- 不能使用关键字作为标识符。
2. **命名习惯**:
- **包名**:全小写。
- **类名**:各单词首字母大写(PascalCase)。
- **方法和变量名**:首单词首字母小写,其余单词首字母大写(camelCase)。
- **常量名**:全大写,单词间用下划线`_`分隔。
#### 注释
1. **单行注释**:使用`//`,注释内容位于该符号之后。
2. **多行注释**:使用`/*`和`*/`包围注释内容。
3. **文档注释**:使用`/**`和`*/`包围注释内容,用于生成API文档。
#### 数据类型与运算符
1. **常量**:
- 字面值常量:直接给出的数值,如`123`、`3.14`。
- 自定义常量:使用`final`关键字定义的变量。
2. **数据类型**:
- **基本数据类型**:包括`byte`、`short`、`int`、`long`、`float`、`double`、`char`和`boolean`。
- **引用数据类型**:主要包括类(Class)、接口(Interface)、数组(Array)等。
3. **变量声明**:
- `数据类型 变量名 = 初始化值;`
- 如果不立即赋值,则可以先声明:`数据类型 变量名;`,随后再赋值。
4. **运算符**:
- **算术运算符**:如`+`、`-`、`*`、`/`、`%`(取模)。
- **比较运算符**:如`==`、`!=`、`>`、`<`、`>=`、`<=`。
- **逻辑运算符**:如`&&`(逻辑与)、`||`(逻辑或)、`!`(逻辑非)。
- **位运算符**:如`&`(按位与)、`|`(按位或)、`^`(按位异或)、`~`(按位取反)、`<<`(左移)、`>>`(右移)、`>>>`(无符号右移)。
#### 进制转换
1. **其他进制转十进制**:
- 将每一位的系数乘以基数的权次幂相加得到。
2. **十进制转其他进制**:
- 除以目标进制基数取余,直至商为0,然后将余数倒序排列。
3. **快速转换**:
- 二进制到八进制:每3位二进制数转换成一位八进制数。
- 二进制到十六进制:每4位二进制数转换成一位十六进制数。
通过以上总结,我们不仅了解了Java的基本概念和发展背景,还深入探讨了如何编写、编译及运行Java程序,以及在这一过程中可能遇到的问题和解决办法。这些知识对于初学者来说非常重要,也是后续学习Java进阶内容的基础。