Java学习第一天:

Java学习第一天:

研0备战java第一天,听到组内还是开发多,直接java启动~


应用领域:

  • 企业级应用:
    • 企业的软件系统、各类型的网站。
  • Android平台应用:
    • Android开发水平的高低很大程度上取决于Java。
  • 移动领域:
    • 消费和嵌入式领域。

Java技术平台:

  • Java SE------标准版(面向桌面级应用),提供完整的Java核心API;
  • Java EE------企业版,是标准版的扩充;
  • Java ME------小型版,对API有所精简,现在用的不多,因为有Android了。

Java重要特性:

  1. 该语言是面向对象的(oop);
  2. 该语言是健壮的。Java的强类型机制、异常处理、垃圾自动收集等是Java程序健壮性的保证;
  3. Java语言是跨平台的,即一个编译好的class文件可以在多个平台上运行;
    1. .java编译后会得到一个.class文件;
    2. .class文件可以在不同的平台上运行,这就叫做跨平台性。
  4. Java是解释性语言。(编译后的代码不能够直接被机器执行,需要解释器来执行)。

这些特性只是对于初学者来说最为重要的,而不是说重要的特性只有那么多,要注意。


Java开发工具:


Java运行机制及运行过程:

运行流程:

  1. 编写.java文件;
  2. 编译为.class文件;(命令为javac)
  3. 通过不同平台上的JVM(Java 虚拟机)实现了跨平台特性------这是跨平台能够实现的本质。(运行命令为java)

Java核心机制------JVM:

  1. JVM是一个虚拟的计算机,具有指令集并使用不同的存储区域。负责执行指令,管理数据、内存、寄存器等,包含在JDK中;
  2. 对于不同的平台有不同的虚拟机;
  3. 其屏蔽了底层运行平台的差别,实现了"一次编译,到处运行"的效果

什么是JDK、JRE?

JDK基本介绍::

  1. 全程为Java Development Kit,即Java开发工具包,JDK = JRE + java的开发工具【java,javac等】
  2. 是提供给开发人员使用的,包含了java的开发工具,也包括了JRE。

JRE基本介绍:

  1. 全程为Java Runtime Environment,Java运行环境;JRE = JVM + Java的核心类库【类】
  2. 如果想要运行一个开发好的Java程序,安装JRE即可。

JDK、JRE和JVM的包含关系:

  1. JDK = JRE + 开发工具集;
  2. JRE = JVM + Java SE标准类库;
  3. JDK = JVM + Java SE标准类库 + 开发工具集。

JDK安装:

Java Downloads | Oracle 中国

就不下载jdk8了,spingboot好像已经不支持了,就下载jdk21了,也是长期支持版。

下载完成后发现好像没有jre这个文件夹,去搜索了下,需要在命令行窗口中调出,方法如下:

  1. 点开你安装jdk的文件夹;
  2. 在该文件夹的搜索栏中输入cmd;
  3. 然后运行 bin\jlink.exe --module-path jmods --add-modules java.desktop --output jre就可以看到我们的JRE文件啦(不知道是不是必须)

关于jdk的配置,不知道是因为新版还是windows11的缘故,环境变量已经配置完成,不知道有没有配置完成的,在主界面进入命令行窗口运行java看看能不能正常运行即可。


Java_快速入门:

每个语言的必备环节"Hello,world!"

开发步骤:

  1. 将Java代码编写到扩展名为Hello.java的文件中;
  2. 通过javac命令对该java文件进行编译,生成.class文件;
  3. 通过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文件后,保存,然后重新编译一次再运行即可。

流程分析:

  1. 编写.java文件(源文件);
  2. 编译(javac).java文件获得.class文件(字节码文件);
  3. 运行(java)组类获得结果。

什么是编译:

将Java源文件通过编译器编译成JVM可以识别的字节码文件;若程序无错误,会在源目录下生成一个.class文件,成为字节码文件,也是可执行的java文件

什么是运行:

有了可执行的字节码文件,通过运行工具java.exe对字节码文件进行执行,其本质就是将.class装载到JVM机上。

Java开发注意事项和细节说明:

  1. Java文件以.java为扩展名,源文件的基本组成部分是类(class),如上文写的Hello;

  2. Java的程序入口为main()方法,有固定的书写格式: public static void main(String[] args){...}

  3. Java严格区分大小写;

  4. Java方法由一条条语句构成,每个语句以";"结束;

  5. 大括号都是成对出现的,缺一不可(可以先写好大括号在进行内部的编程);

  6. 一个源文件最多只能有一个public类,其它类的个数不限,也可以将main方法写在非public类中,然后指定运行非public类,这样入口方法就是非public的main方法;

  7. 若源文件包含一个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函数只要他们不在一个类中。


学习方法:

需求:

  1. 工作需要;------为我的需求,想找后端开发工作,以及想要有一门主语言,脚本语言选择了Python
  2. 跳槽,对方要求;
  3. 技术控。

看看能否使用传递技术解决:

  1. 能解决,但是不完美;
  2. 解决不了

引出我们需要学习的新技术和知识点:

学习新技术或者知识点的基本语句和基本语法(先不考虑细节)

为什么,因为一开始就直接关注到细节,会非常繁琐,一下就失去动力了。

快速入门(基本程序,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代码规范:

  1. 类、方法的注释,要以javadoc的方式来写;

  2. 非javadoc的注释,往往是给代码维护者看的,着重告诉代码为什么这样写,如何修改,注意什么问题;

  3. 使用tab操作,实现缩进,默认整体向右;向左使用shift+tab

  4. 运算符和=两边习惯各加一个空格;

  5. 源文件(.java)使用utf-8的编码;

  6. 行宽度不要超过80字符;

  7. 代码编写次行风格和行尾风格。

    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
相关推荐
随便取个六字几秒前
GIT操作 学习
git·学习
chuanauc3 分钟前
Kubernets K8s 学习
java·学习·kubernetes
小张是铁粉7 分钟前
docker学习二天之镜像操作与容器操作
学习·docker·容器
一头生产的驴19 分钟前
java整合itext pdf实现自定义PDF文件格式导出
java·spring boot·pdf·itextpdf
YuTaoShao25 分钟前
【LeetCode 热题 100】73. 矩阵置零——(解法二)空间复杂度 O(1)
java·算法·leetcode·矩阵
zzywxc78729 分钟前
AI 正在深度重构软件开发的底层逻辑和全生命周期,从技术演进、流程重构和未来趋势三个维度进行系统性分析
java·大数据·开发语言·人工智能·spring
小张是铁粉32 分钟前
oracle的内存架构学习
数据库·学习·oracle·架构
HERR_QQ43 分钟前
【unify】unify的微信小程序开发学习 (to be continued)
学习·微信小程序·小程序
YuTaoShao3 小时前
【LeetCode 热题 100】56. 合并区间——排序+遍历
java·算法·leetcode·职场和发展
程序员张33 小时前
SpringBoot计时一次请求耗时
java·spring boot·后端