多线并行,学机器学习和安全的同时也来看看语言吧。本专题主要为观看韩顺平老师《零基础30天学会Java》课程笔记,同时也会阅读其他书籍、学习其他视频课程进行学习笔记总结。如有雷同,不是巧合!
目录
一、Java重要特点
-
面向对象(OOP)
-
具有健壮性。强类型机制、异常处理、垃圾的自动收集等是Java程序健壮性的重要保证。
-
跨平台性:java文件编译成的class文件可以在多个平台上运行——Java虚拟机机制 JVM(包含在JDK中)
编译指令:
javac
,运行指令:java
-
解释型语言
解释型语言:js、php、java、matlab,编译后的代码不能直接被机器执行,需要解释器一边解释一边执行,如果有一句代码发生错误的话,程序就执行到那一句才会停下来报错。
编译型语言:c/c++、golang,编译后的代码可以被机器执行
一些开发工具:editplus、notepad++、sublime text【文本编辑器】、IDEA、eclipse…
💡 JDK与JRE:
- JDK 基本介绍
JDK 的全称(Java Development Kit Java开发工具包)JDK = JRE + java的开发工具 【java, javac, javadocjavap等】
JDK是提供给Java开发人员使用的,其中包含了java的开发工具,也包括了JRE。所以安装了JDK,就不用单独安装JRE了。
- JRE 基本介绍
- JRE(Java Runtime Environment Java运行环境)JRE = JVM + Java的核心类库[类]
- 包括Java虚拟机(JVM Java Virtual Machine)和Java程序所需的核心类库等,如果想要运行一个开发好的Java程序(.class文件),计算机中只需要安装JRE即可。
需要配置path的原因:当前执行的程序在当前目录下如果不存在,win10会在系统中已有的path的环境变量指定的目录中查找。如果仍没有找到,则会报错“不是可运行的程序或批处理文件”。为了在任何目录下都可以执行指令,需要配置path。
💣同时下载了java jdk8和11时:
Win10同时安装使用Java JDK8和11两个版本如何设置环境变量_jdk8和jdk11同时设置环境遍历-CSDN博客
表现性能
速度:刚发行时很慢,但是由于JVM等的推出,JVM可以在代码运行时对其进行优化,所以当代码性能没有那么高时也可以产生快速的应用,甚至与C和Rust语言一样快。
内存:相对于C和Rust,Java需要更多的内存。
二、快速入门
简单案例
🍉一个非常简单的程序:开发Hello.java程序,可以输出”Hello, world!”
// 表明Hello是一个公有的类
public class Hello{
// main方法,是程序的入口
public static void main(String[] args) {
System.out.println("Hello, world!");
}
}
❌使用javac命令编译时报错:
因为控制台使用GBK编码,如果使用其他编码则无法识别:
🍑解决方法:
在sublime更新安装包:
然后下载ConvertToUTF8,并选择设置文件编码格式为GBK保存:
成功编译:
运行时需要使用命令java Hello
而非java Hello.class
。因为java命令是为了找到Hello
主类执行。
(1)运行机制
运行的本质是把.class
文件装载到对应的JVM中执行。其中.java
文件称为源文件,.class
文件称为字节码文件。
编译 javac
- 通过编译器/javac编译工具将.java源文件编译成JVM可以识别的字节码文件
- 如果程序没有错误则没有任何提示,但是当前目录下出现一个.class文件,则该文件是可以执行的java程序
运行 java
有了可执行的java程序后,可以使用运行工具java.exe对字节码文件进行执行
(2)注意事项
-
Java源文件以java为扩展名。源文件的基本组成部分是类 (class)。
-
Java应用程序的执行入口是main()方法。它有固定的书写格式:
public static void main(String[] args) {...}
。 -
Java语言严格区分大小写。
-
Java方法由一条条语句构成,每个语句以“
;
”结束。 -
大括号都是成对出现的,缺一不可。
-
一个源文件中最多只能有一个public类。其它类的个数不限。
class Tiger {...}
并且编译后每一个类都对应一个class文件。 -
如果源文件包含一个public类,则文件名必须按该类名命名!
-
一个源文件中最多只能有一个public类。其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法。