Java学习第一天:
研0备战java第一天,听到组内还是开发多,直接java启动~
应用领域:
- 企业级应用:
- 企业的软件系统、各类型的网站。
- Android平台应用:
- Android开发水平的高低很大程度上取决于Java。
- 移动领域:
- 消费和嵌入式领域。
Java技术平台:
- Java SE------标准版(面向桌面级应用),提供完整的Java核心API;
- Java EE------企业版,是标准版的扩充;
- Java ME------小型版,对API有所精简,现在用的不多,因为有Android了。
Java重要特性:
- 该语言是面向对象的(oop);
- 该语言是健壮的。Java的强类型机制、异常处理、垃圾自动收集等是Java程序健壮性的保证;
- Java语言是跨平台的,即一个编译好的class文件可以在多个平台上运行;
- .java编译后会得到一个.class文件;
- .class文件可以在不同的平台上运行,这就叫做跨平台性。
- Java是解释性语言。(编译后的代码不能够直接被机器执行,需要解释器来执行)。
这些特性只是对于初学者来说最为重要的,而不是说重要的特性只有那么多,要注意。
Java开发工具:
- epitplus、notepad++;
- Sublime Text
- 初学者先用这种不太智能化的文本编辑器脚本,来熟悉Java
- 汉化版链接:
- 通过百度网盘分享的文件:Sublime Text3_64.zip
链接:https://pan.baidu.com/s/1ETNjdYX0_BFXOot-fg-6rA?pwd=jxfg
提取码:jxfg
- IDEA
- 后续可以换用IDEA
- IntelliJ IDEA -- 领先的 Java 和 Kotlin IDE老样子,学生是可以免费用的~
- eclipse
Java运行机制及运行过程:
运行流程:
- 编写.java文件;
- 编译为.class文件;(命令为javac)
- 通过不同平台上的JVM(Java 虚拟机)实现了跨平台特性------这是跨平台能够实现的本质。(运行命令为java)
Java核心机制------JVM:
- JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器等,包含在JDK中;
- 对于不同的平台有不同的虚拟机;
- 其屏蔽了底层运行平台的差别,实现了"一次编译,到处运行"的效果
什么是JDK、JRE?
JDK基本介绍::
- 全程为Java Development Kit,即Java开发工具包,JDK = JRE + java的开发工具【java,javac等】
- 是提供给开发人员使用的,包含了java的开发工具,也包括了JRE。
JRE基本介绍:
- 全程为Java Runtime Environment,Java运行环境;JRE = JVM + Java的核心类库【类】
- 如果想要运行一个开发好的Java程序,安装JRE即可。
JDK、JRE和JVM的包含关系:
- JDK = JRE + 开发工具集;
- JRE = JVM + Java SE标准类库;
- JDK = JVM + Java SE标准类库 + 开发工具集。
JDK安装:
就不下载jdk8了,spingboot好像已经不支持了,就下载jdk21了,也是长期支持版。
下载完成后发现好像没有jre这个文件夹,去搜索了下,需要在命令行窗口中调出,方法如下:
- 点开你安装jdk的文件夹;
- 在该文件夹的搜索栏中输入cmd;
- 然后运行
bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre
就可以看到我们的JRE文件啦(不知道是不是必须)
关于jdk的配置,不知道是因为新版还是windows11的缘故,环境变量已经配置完成,不知道有没有配置完成的,在主界面进入命令行窗口运行java看看能不能正常运行即可。
Java_快速入门:
每个语言的必备环节"Hello,world!"
开发步骤:
- 将Java代码编写到扩展名为Hello.java的文件中;
- 通过javac命令对该java文件进行编译,生成.class文件;
- 通过java命令对生成的class文件进行运行。
java
// 这是Java的快速入门;演示Java的开发步骤:
// 对代码的相关说明
// 1.public class Hello表示Hello是一个类,是一个public公有的类
// 2.Hello{}表示一个类的开始和结束
// 3.main方法在这边不做讲解,在oop时讲解,现在就理解一个框架即可,主方法即程序的入口
// 4.main(){}表示方法的开始和结束也是成对出现的
// 5.System.out.println("Hello,world~");表示输出"hello,world~"到屏幕
// 6.;表示语句的结束
public class Hello{
// 编写一个主方法:
public static void main(String[] args){
System.out.println("Hello,world~");
}
}
现在我们完成了代码的编写,下一步就是要进行编译了,怎么做呢,找到文件所在的位置,在文件搜索栏进入cmd,命令行中输入 javac Hello.java
,然后我们就得到了Hello.class。(如果说没有生成,需要将文件编码转换为GBK,但是我的时UTF-8就可以了);
然后我们就可以运行了,输入 java Hello
即可不要带后缀了,这个代码的意思是找到Hello组类,所以不需要带上.class。
如果我们想要修改文件的内容,修改完.java文件后,保存,然后重新编译一次再运行即可。
流程分析:
- 编写.java文件(源文件);
- 编译(javac).java文件获得.class文件(字节码文件);
- 运行(java)组类获得结果。
什么是编译:
将Java源文件通过编译器编译成JVM可以识别的字节码文件;若程序无错误,会在源目录下生成一个.class文件,成为字节码文件,也是可执行的java文件
什么是运行:
有了可执行的字节码文件,通过运行工具java.exe对字节码文件进行执行,其本质就是将.class装载到JVM机上。
Java开发注意事项和细节说明:
-
Java文件以.java为扩展名,源文件的基本组成部分是类(class),如上文写的Hello;
-
Java的程序入口为main()方法,有固定的书写格式:
public static void main(String[] args){...}
-
Java严格区分大小写;
-
Java方法由一条条语句构成,每个语句以";"结束;
-
大括号都是成对出现的,缺一不可(可以先写好大括号在进行内部的编程);
-
一个源文件最多只能有一个public类,其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法;
-
若源文件包含一个public类,那么文件名必须按照该public类的名字命名;
java// 这是Java的快速入门;演示Java的开发步骤: // 对代码的相关说明 // 1.public class Hello表示Hello是一个类,是一个public公有的类 // 2.Hello{}表示一个类的开始和结束 // 3.main方法在这边不做讲解,在oop时讲解,现在就理解一个框架即可,主方法即程序的入口 // 4.main(){}表示方法的开始和结束也是成对出现的 // 5.System.out.println("Hello,world~");表示输出"hello,world~"到屏幕 // 6.;表示语句的结束 public class Hello{ // 编写一个主方法: public static void main(String[] args){ System.out.println("Tr is studying Java."); } } // 一个源文件最多只能有一个public类,但是其他类的个数是不限制的; // 若是进行编译,每一个类编译后都对应一个.class文件 class Dog{ public static void main(String[] args){ System.out.println("Hello,Dog~"); } } class Cat{ public static void main(String[] args){ System.out.println("Hello,Cat~"); } }
与C++不同的是Java可以有多个main函数只要他们不在一个类中。
学习方法:
需求:
- 工作需要;------为我的需求,想找后端开发工作,以及想要有一门主语言,脚本语言选择了Python
- 跳槽,对方要求;
- 技术控。
看看能否使用传递技术解决:
- 能解决,但是不完美;
- 解决不了
引出我们需要学习的新技术和知识点:
学习新技术或者知识点的基本语句和基本语法(先不考虑细节)
为什么,因为一开始就直接关注到细节,会非常繁琐,一下就失去动力了。
快速入门(基本程序,crud------增删改查)
开始研究技术的注意事项,使用细节,如何优化(决定工资高低)
这一项时永无止境的,所以放在最后,是没有止境的。
转义字符:
常用的转义字符如下:
- \t:一个制表符;
- \n:换行符;
- \ \:一个\符号;
- \ ":一个"符号;
- \ ':一个'符号;
- \r:一个回车。与换行符不一样,其只是将光标挪动到了这行的起始位置,没有到下一行
java
// 转义符的使用演示:
public class ChangeChar{
// main()
public static void main(String[] args){
// \t:一个制表符,实现对齐的功能;
System.out.println("北京\t上海\t天津");
// \n:换行符;
System.out.println("红楼梦\n水浒传\n西游记");
// \\:一个\;
System.out.println("D:\\Code\\Project\\javacode");
// \":一个";
System.out.println("神说:\"要有光。\"");
// \':一个';
System.out.println("神说:\'要有光。\'");
// \r:一个回车;回车和换行是不一样的
// 解读:
// 1、输出 学习Java
// 2、读取到换行符号,将光标挪至这行的最前面,用后面的字符替换光标指向及其后的几个字符
System.out.println("学习Java。\r江弦");
}
}
运行结果:
北京 上海 天津
红楼梦
水浒传
西游记
D:\Code\Project\javacode
神说:"要有光。"
神说:'要有光。'
江弦Java。
java
// 转义符的使用演示:
public class ChangeChar{
// main()
public static void main(String[] args){
// \t:一个制表符,实现对齐的功能;
System.out.println("北京\t上海\t天津");
// \n:换行符;
System.out.println("红楼梦\n水浒传\n西游记");
// \\:一个\;
System.out.println("D:\\Code\\Project\\javacode");
// \":一个";
System.out.println("神说:\"要有光。\"");
// \':一个';
System.out.println("神说:\'要有光。\'");
// \r:一个回车;回车和换行是不一样的
// 解读:
// 1、输出 学习Java
// 2、读取到换行符号,将光标挪至这行的最前面,用后面的字符替换光标指向及其后的几个字符
System.out.println("学习Java。\r\n江弦");
}
}
java
北京 上海 天津
红楼梦
水浒传
西游记
D:\Code\Project\javacode
神说:"要有光。"
神说:'要有光。'
学习Java。
江弦
初学Java容易犯的错误:
- 找不到文件:
- 检查文件名是否写对;
- 路径有问题,不在该目录下。
- 主类名和文件名不一致;
- 缺少;号。
- 常见错误总结:初学易犯的错是语法错误,不要慌。
- 把数字1写成了字母l;
- 数字0写成o;
- 英文字符写成中文字符;
- 拼写错误;
- 业务逻辑错误以及环境错误(最不好修改的错误)。
注释(comment):
提高代码的可读性,是一个写代码的良好习惯。将自己的思想总结出来,再用代码去体现。
单行注释:
格式------ //一行语句
多行注释:
格式------ /*多条语句可以换行*/
对多行注释,不允许嵌套多行注释。
这两个的注释的语法和C++中很像
文档注释:
注释内容可以被JDK提供的工具javadoc解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类内。
-
基本格式:
java/** *@ */
-
如何生成对应的文档注释
javadoc -d 文件夹名 -xx -yy 文件名.java // -xx和-yy就是我们@后面跟随的
这里面发生了一些问题,由于我们之前没有配置环境变量,在这步的时候会出现javadoc不是内部命令的错误,我们要做的就是将jdk下的bin目录添加到系统环境的path目录下,然后点击多次确定。之后便可以正常运行了。
-
应用实例
java// 文档注释 /** * @author 江弦 * @version 01 */ public class Comment{ public static void main(String[] args){ } }
然后生成好的文件,我们点击index.html便可以看到了
-
文档标签:太多了,自己找下复制下把,以后写文件还听常用的
- 标签 含义
@author 指定作者
{@code} 使用代码字体以原样显示信息,不处理HTML样式
@deprecated 指定程序元素已经过时
{@docRoot} 指定当前文档的根目录路径
@exception 标识由方法或构造函数抛出的异常
{@inheritDoc} 从直接超类中继承注释
{@link} 插入指向另外一个主题的内联链接
{@linkplain} 插入指向另外一个主题的内联链接,但是链接以明文显示
{@literal} 以原样显示信息,不处理 HTML 样式
@param 文档化参数
@return 文档化方法的返回值
@see 指定到另一个主题的链接
@serial 文档化默认的可串行化文本域
@serialData 文档化由 writeObject()或writeExternal()方法写入的数据
@serialField 文档化ObjectStreamField组件
@since 当引入特定的变化时,声明发布版本
@throws 与@exception 相同
{@value} 显示常量的值,常量必须是static 类型
@version 指定类的版本
- 标签 含义
Java代码规范:
-
类、方法的注释,要以javadoc的方式来写;
-
非javadoc的注释,往往是给代码维护者看的,着重告诉代码为什么这样写,如何修改,注意什么问题;
-
使用tab操作,实现缩进,默认整体向右;向左使用shift+tab
-
运算符和=两边习惯各加一个空格;
-
源文件(.java)使用utf-8的编码;
-
行宽度不要超过80字符;
-
代码编写次行风格和行尾风格。
java// 行尾风格: public class a { } // 次行风格: class b { }
我个人喜欢行尾,次行感觉有点看不清楚,不过两种都是对的看个人喜好。
DOS原理:
介绍:
Dos------Disk Operating System 磁盘操作系统。在控制台输入的指令会交给DOS。
路径:
在编程领域,文件夹也叫做目录。
相对路径:
从当前目录开始定位形成的路径就是相对路径。
举例:
从javacode下的文件到python(都在project下)...\Project\Python
绝对路径:
从顶级目录(根目录)生成的就是绝对路径
举例:
D:\Code\Project\python
常用的dos命令:
- 查看当前目录有什么内容:dir
- dir
- dir 绝对路径
- 切换到其它盘下:盘符号cd
- 切换到C盘:cd /D c:
- 切换到当前盘的其它目录(使用绝对路径和相对路径):
- 相对路径:cd ...\ ...\project\python(两个...\中间没有空格,markdown的语法会有影响只能加个空格)
- 绝对路径:cd D:\Code\Project\Python
- 切换到上一级:
- cd ...
- 切换到根目录:
- cd \
- 查看指定目录下的全部子目录 tree
- tree 绝对路径
- 清屏:cls
- 退出:exit