JAVA的学习资料:
-
《Java语言程序设计》基础篇 进阶篇 当教材使用
-
《HeadFirstJava》辅助教材使用
-
《Effective Java》进阶教材 Java课程学习完毕后 学习这本书
-
专项练习-日常作业
-
编程题集-代码练习
第一部分 语法基础篇
第1章 概述
1.1 计算机组成部分
计算机主要分为两个部分:硬件,软件
硬件:能看的见的,带电的,摸得着的这电子元器件
-
键盘:输入设备
-
鼠标:输入设备
-
屏幕:输出设备/输入设备
-
硬盘:存储设备,存储的永久性数据 (硬盘:固态硬盘和机械硬盘)如果想要安全性高,选机械硬盘(磁盘刻录),如果想要读取效率高,选固态硬盘(电子 给塔加压)
-
内存:存储设备,存储的临时性数据,电脑一关机就没了
-
CPU:中央处理器
-
GPU:图形图形处理器(显示芯片)
软件:就是一些看不见的指令,通过控制电子信号,来管理和操作底层硬件
-
系统软件:主要用来控制和管理底层硬件的,为用户提供最基本的计算机功能。操作系统其实就是用户与硬件之间的桥梁。比如:Windows、Linux、MAC等)
-
应用软件:具有特殊领域功能的软件(QQ、微信等)
1.2 人机交互方式
常见的人机交互方式:
-
图形化界面:最常用的一种交互方式,主要是以图形界面的形式提供给用户进行操作。
-
优点:简单直观易上手操作
-
缺点:体积大,步骤繁杂,不易管理
-
-
命令行界面:主要是以字符为形式的一种交互方式,最早期的形式,在Linux中是最主要的一种操作方式。Windows中的终端 win+R 输入cmd 回车
-
优点:效率高
-
缺点:记命令
什么是命令?所谓的命令其实就是OS平台下的可执行程序->就是已经被编译好的代码->已经写好并编译程序
-
使用到DOS命令:
-
cd 切换目录
-
dir 展示目录内容
-
cd .. 返回上一级目录
-
cd / 返回到当前盘符的根目录
-
md 创建目录
-
rd删除目录 remove directory
-
del 删除文件
-
dos退出dos命令行
-
help帮助命令
-
D: 进入D盘
打开powershell 支持cmd 也支持linux的命令
ls查看所有目录
主要是因为前期在进行Java代码编译和运行的时候,我们主要是以命令行的形式操作,可以看到一些集成环境中看不到的知识。
1.3 计算机编程语言
机器语言:计算机只能识别二进制,对程序员不友好
汇编语言:出现了一些单词字符来表示一些计算机的操作指令,但是在编制代码的时候,程序员必须考虑计算机底层的实现细节(比如内存管理,CPU运算的逻辑),增加了程序员的入门的门槛。
高级编程语言:主要以人类的思维方式来进行编程的,人能看懂,但是计算机看不懂,需要编译的步骤,将源代码编译成计算机能够识别的机器语言(二进制)。C语言的源代码XXX.c 编译之后 XXX.exe exe是Windows平台上的可执行程序,二进制文件。其中最底层的高级编程语言是c语言。
对于高级编程语言又分为了两大类:
-
静态编译型(C、C++、Java)
-
静态:变量有严格的数据类型之分(数据直接存在变量空间中的)
-
编译型:先将源代码全部进行编译,生成一个二进制文件,最后运行该二进制文件即可。翻译一本中文书。
-
-
动态解释型(Python、JS、Go)
-
动态:变量没有严格的数据类型之分(数据存在堆内存中,然而变量空间中存储的是数据在堆内存中的地址!)
-
解释型:读取一行源代码,进行编译,生成一段二进制代码(可以存在于内存 存在于硬盘),在运行,以此类推。同声传译。
-
1.4 Java开发环境搭建
JDK:Java开发工具包 Oracle | Cloud Applications and Cloud Platform
验证JDK是否安装成功,进入控制台后 输入java -version
C:\Users\HENG>java -version
java version "1.8.0_77"
Java(TM) SE Runtime Environment (build 1.8.0_77-b03)
Java HotSpot(TM) 64-Bit Server VM (build 25.77-b03, mixed mode)
VSCode:写代码的文本编辑器 Visual Studio Code - Code Editing. Redefined
需要设置的内容:
-
文件编码 左下角管理-设置-文本编辑器-文件-Encoding-Simplified CHinese(GBK)
-
字体大小 左下角管理-设置-文本编辑器-字体-FontFamliy字体样式-Consolas-FontSize字体大小
-
主题颜色 左下角管理-颜色主题
-
中文设置 左下角管理-扩展-搜索Chinese(尽量不要装其他拓展配置了)
1.5 运行Java程序
JDK.exe:Java Development Kit Java开发工具包 如果计算机要进行Java程序的开发 装这个
JRE.exe:Java Runtime Environment Java运行环境 如果计算机只是运行Java程序的话 装这个就可以了
JRE = 核心类库 + JVM 核心类库相当于图书馆
JDK = 开发工具 + JRE
JVM.exe:Java Virtual Machine Java虚拟机
常见的操作系统 Windows Linux MAC -> Unix(最早的多任务的操作系统) + C(底层语言)
JVM充当翻译官的角色,将Java源代码经过编译生成的字节码文件加载进JVM中运行,JVM会根据字节码的具体内容,将其翻译成本地执行语句,交给本地OS执行。对于跨平台机制,是针对字节码文件的,不同的OS平台有其各自的JVM版本。
JDK的目录:
-
bin目录:binary 二进制-可执行程序 都是Java在Windows平台上的开发工具
-
javac:编译工具
-
java:运行工具
-
-
include目录:存放的都是C语言的头文件 JVM需要将字节码的内容转换为本地平台的具体执行指令,用于转换字节码指令的。
-
src.zip压缩文件包:Java的源代码-核心类库
通过WIndows的控制台进入jdk开发工具包的bin目录
C:\Users\HENG>cd /
C:\>cd "Program Files"
C:\Program Files>cd Java
C:\Program Files\Java>cd jdk1.8.0_77
C:\Program Files\Java\jdk1.8.0_77>cd bin
C:\Program Files\Java\jdk1.8.0_77\bin>
C:\Program Files\Java\jdk1.8.0_77\bin>javac
用法: javac <options> <source files> //javac 源代码文件xxx.java
C:\Program Files\Java\jdk1.8.0_77\bin>java
用法: java [-options] class [args...] //java 字节码文件xxx [参数列表]
(执行类)
或 java [-options] -jar jarfile [args...]
(执行 jar 文件)
开发工具和源代码并不在同一个文件夹下,除非给源文件前写全路径,要么给开发工具前写全路径,会比较麻烦,需求在任何目录下都能够执行javac和java这两个开发工具,配置环境变量。
1.6 常见编码错误
编码错误主要分为两种:
-
编译时错误:主要是编译不通过,主要原因在于语法格式问题
-
运行时错误:编译能通过,但是运行报错,主要原因在于代码逻辑问题
类名和文件名最好一致,不一致的话容易造成找不到文件类似的错误(如果这个类是public的,类名必须和文件名一致,并且一个java文件中,最多有一个public的类和文件名一致)。字节码的名称和代码中类名一致的,和文件名不一致,为了统一,文件名和类名要一致。
class Text {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Test.java 生成的是Text.class文件
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>java Test
错误: 找不到或无法加载主类 Test
public class Text {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Test.java 如果类public的 必须类名和文件名一致!
Test.java:1: 错误: 类Text是公共的, 应在名为 Text.java 的文件中声明
public class Text {
^
1 个错误
public class A {
}
public class B{
}
public class C{
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac A.java 每一个public的类 独自在一个文件
A.java:4: 错误: 类B是公共的, 应在名为 B.java 的文件中声明
public class B{
^
A.java:7: 错误: 类C是公共的, 应在名为 C.java 的文件中声明
public class C{
^
2 个错误
public class A {
}
class B{
}
class C{
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac A.java 一个文件中有多个类 那么在编译的时候同时生成这么多个字节码文件
2022/08/09 15:06 176 A.class
2022/08/09 15:06 176 B.class
2022/08/09 15:06 176 C.class
在java中,任何单词都是区分大小写的!
public class Hello {
//主函数 程序的开始-入口
public static void main(string[] args) {
System.out.println("HelloWorld!");
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:3: 错误: 找不到符号
public static void main(string[] args) {
^
符号: 类 string
位置: 类 Hello
1 个错误
代码中和Java核心类库中就压根没有string这个词语
JVM只认main为主函数!
public class Hello {
//主函数 程序的开始-入口
public static void mian(String[] args) {
System.out.println("HelloWorld!");
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>java Hello
错误: 在类 Hello 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application
错误的单词拼写,遗漏相关的语法符号
public class Hello {
//主函数 程序的开始-入口
public stitac void main(String[] args) {
System.out.println("HelloWorld!");
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:3: 错误: 需要<标识符>
public stitac void main(String[] args) {
^
Hello.java:3: 错误: 方法声明无效; 需要返回类型
public stitac void main(String[] args) {
^
2 个错误
public class Hello {
//主函数 程序的开始-入口
public static void main(String[] args) {
System.out.println("HelloWorld!")
}
}
Hello.java:4: 错误: 需要';'
System.out.println("HelloWorld!")
^
1 个错误
public class Hello {
//主函数 程序的开始-入口
public static void main(String[] args)
System.out.println("HelloWorld!");
}
}
Hello.java:3: 错误: 需要';'
public static void main(String[] args)
^
Hello.java:6: 错误: 需要class, interface或enum
}
^
2 个错误
public class Hello {
//主函数 程序的开始-入口
public static void main(String[] args) {
System.out.println("HelloWorld!");
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:5: 错误: 解析时已到达文件结尾
}
^
1 个错误
public class Hello {
//主函数 程序的开始-入口
public static void main(String[] args) {
System.out.println("HelloWorld!);
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:4: 错误: 未结束的字符串文字
System.out.println("HelloWorld!);
^
Hello.java:4: 错误: 需要';'
System.out.println("HelloWorld!);
^
Hello.java:6: 错误: 解析时已到达文件结尾
}
^
3 个错误
public class Hello {
//主函数 程序的开始-入口
public static void main(String[] args) {
System.out.println(HelloWorld);
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>javac Hello.java
Hello.java:4: 错误: 找不到符号
System.out.println(HelloWorld);
^
符号: 变量 HelloWorld
位置: 类 Hello
1 个错误
运行时异常,主要跟你的代码逻辑有关。
public class Hello {
//主函数 程序的开始-入口
public static void main(String[] args) {
System.out.println(10 / 0);
}
}
C:\Users\HENG\Desktop\22.8.6JavaSE\Day01>java Hello
Exception in thread "main" java.lang.ArithmeticException: / by zero
at Hello.main(Hello.java:4)
1.7 编程练习题
重点代码格式问题!(1.注意符号和数字直接要空格 2.大括号前面要空格)
public class Demo02 {
public static void main(String[] args) {
System.out.println(4 * (1 - 1 / 3 + 1 / 5 - 1 / 7 + 1 / 9 - 1 / 11));
System.out.println(4 * (1.0 - 1.0 / 3 + 1.0 / 5 - 1.0 / 7 + 1.0 / 9 - 1.0 / 11));
}
}
第2章 基本数据与运算
2.1 注释、标识符与关键字
注释
Java中分为三种注释:
-
单行注释:
//注释内容 直到换行为止
-
多行注释:
/*注释内容 中间可以跨行 但是多行注释中 不能出现多行注释 但可以出现单行注释*/
-
文档注释:
/** 注释内容 可以通过javadoc命令 将注释的内容进行提取 并生成一份该代码的说明书 生成的是一个HTML文档 静态网页*/
注释是用于注解说明程序的,给人看不给计算机看,所以注释进不进字节码?不进
将来再写代码的时候,重点的地方尽量把注释写上
标识符(程序中出现的一些事物所起的名称)
所谓的标识符就是我们自定义的一些名称而已,主要用于给变量名、函数名、类名、包名、常量名。
为了把上述这五个通过命名方式进行区分,订出来了一套规范。
标识符的规则:
-
必须是一个连续的词语,中间不能有空格
-
由字母、数字、下划线
_
、美元符$
组成 -
数字不能开头,从JDK8开始之后,也不建议单独的下划线和美元符组成标识符
-
严格区分大小写字母
-
起名一定要有意义,英文不好那就写拼音
标识符的规范:myname person maxvalue yourfriend
-
变量名/函数名:如果名称由多个词语组成的话,第一个单词首字母小写,其他单词首字母大写 myName yourFriend()
-
类名/接口名:如果名称由多个词语组成的话,所有单词首字母大写 Person YourFriend
-
常量名:所有单词大写,单词与单词之间用下划线分隔,MAX_VALUE
所谓的规范,其实就是通过单词长得样子,快速区分出标识符的作用。
关键字
所谓的关键字,其实就是Java自身定义的一些标识符,这些标识符都已经尤其自身的含义了,我们就不能在随意使用!所有的关键都小写。
public class Hello {
public static void main(String[] args) {
System.out.println(10 / 0);
}
}
关键字:public class static void
自定义标识符:Hello main args
类:Hello String System
变量:args out
函数:main() println()