Java概述

Java重要特点

  1. Java语言是面向对象的(oop)
  2. Java语言是健壮的,Java的强类型机制异常处理垃圾的自动收集等是Java程序健壮性的重要保证
  3. Java语言是跨平台性

img

.java 编译成 ,class,这个 .class 既可以在Linux,又可以在windows运行

即编译好的 .class 文件可以在多个系统下运行,这种特性就是跨平台性

  • 补充:为什么可以运行
  • 因为每一个操作系统上都有一个JVM,不同的操作系统里,JVM都不一样,根本原因就是靠JVM来支撑,另外JVM包含在JDK里面
  1. Java语言是解释性的(了解)

解释性语言:javascript、php、Java、

编译性语言:C、C++

解释性语言和编译性语言的区别:解释性语言的编译后的代码,不能直接被机器执行,还需要解释器来执行,而编译性语言的编译后的代码,可以直接被机器执行

Java虚拟机(JVM)

基本介绍

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

示意图

img

JDK和JRE

JDK基本介绍

JDK(Java Development Kit Java开发工具包)

  • JDK = JRE + Java的开发工具(java、javac、javadoc、javap)
  • JDK是提供给Java开发人员使用的,其中包含了Java的开发工具,也包含了 JRE ,因此安装了 JDK ,就可以不用在单独安装 JRE 了

JRE基本介绍

JRE(Java Runtime Environment Java的运行环境)

  • JRE = JVM + Java的核心类库【类】
  • 包括Java虚拟机(JVM - Java Virtual Machine)和Java程序所需的核心类库等
  • 因此如果想要运行一个已经开发好的 Java 程序,计算机中只需要安装 JRE 即可,好比程序员已经写好了 test.java 的文件,并且编译成了 test.class 文件,而另一个人想要运行的话只需要JRE这个运行环境,就不需要 javac 这些开发工具

JDK、JRE、JVM的包含关系

  • JDK = JRE + 开发工具集(例如javac、java编译工具等)
  • JRE = JVM + Java SE标准类库(Java核心类库)
  • 如果只想运行开发好的 .class 文件,只需要JRE

安装JDK和JRE

  • 安装JDK的细节:一般安装长期支持版如:Java 8Java 11, 或者现在的Java 17
  • 注意:JDK安装过程中的安装路径不能中文或者特殊符号如空格等,而安装JRE,看你自己,可以不安装,因为JDK中含有JRE

配置环境变量path

为什么要配置环境变量path

在**命令行窗口(dos命令行)**下运行 javajavac

img

为什么报错

由于当前执行的程序在当前目录下不存在因为我们将JDK安装在了别的路径下),因此win10系统会在系统中已有的path路径下查找,若查找不到就会报错

而我们为了能够在任何一个目录下执行 java 和 javac,因此我们就需要去配置环境变量

配置环境变量path的步骤

  1. 我的电脑 – 右键属性 – 高级系统设置 – 环境变量
  2. 增加 JAVA_HOME 环境变量,执行JDK的安装目录,如我的:F:\soft\Java
  3. 编译 path 环境变量,增加 %JAVA_HOME%\bin
  4. 打开命令行窗口(DOS命令行),任意目录下敲入 java 和 javac,如果出现 java 或者 javac的参数信息,则表示配置成功

img

  • 既可以在用户变量里配置,也可以在系统变量里配置,不同的点就是在用户变量里配置,只能供lenovo这个用户使用,换个用户就需要重新配置,不然使用不了,而系统变量表示所有用户都可以使用

img

配置完成后,就能在任意目录下的命令行窗口下运行java,可以查看其版本

img

Java快速入门(使用Sublime Text)

需求说明

要求开发一个 Hello.java 程序们,可以输出 “hello,world!”

开发步骤

  1. 将 Java 代码编写到扩展名为 Hello.java 的文件中
//这是java的快速入门,演示java的开发步骤
//对代码的相关说明
//1. public class Hello 表示Hello是一个类,是一个public公有的类
//2. Hello{ } 表示一个类的开始和结束
//3. public static void main(String[] args) 表示一个主方法,即我们程序的入口
//4. main() { } 表示方法的开始和结束
//5. System.out.println("hello,world~"); 表示输出"hello,world~"到屏幕
//6. ; 表示语句结束

public class Hello {

	//编写一个main方法
	public static void main(String[] args) {
		System.out.println("hello, world!");
	}
}
  1. 通过 javac 命令对该 java 文件进行编译,生成 .class 文件

**使用Sublime Text这个软件进行编译的,默认使用UTF-8,并且在文件中含有文字(即注释),由于DOS命令行(命令行窗口)是GBK格式,因此在命令行窗口下(DOS命令行)使用 javac 进行编译的时候会报错,**这里如果没有文字,虽然编译的类型不同,但还是能够编译

img

  • 它提醒你是编码 GBK 的不可映射字符,这是由于命令行窗口是默认使用 GBK 的编码,而Sublime Text是 UTF-8 的编码,主要原因是文件中还含有中文(即注释),两者类型不同,

img

  • 因此为了解决这个问题,就需要将Sublime Text默认的文件编码转变成 GBK

img

  • 这样子就能正常编译,正常运行
  1. 通过 java 命令对生成的 .class 文件进行运行
  • 运行直接 java 文件名
  • 运行不用 .class ,因为Java的规则,java Hello 只运行我们编写的类(即public class Hello),如果加上,会认为我们运行的是 Hello.class 的类,因此运行的时候不用加 .class

运行原理示意图

img

Java执行流程分析

img

  • 运行就是通过运行工具 java.exe字节码文件(.class)进行执行,本质上就是将 .class 文件装载JVM 机上执行
  • 注意事项:当修改过文件后,需要重新编译,生成新的 .class 文件,再次执行,才会改变

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

  1. Java源文件以 .java 为扩展名,源文件的基本组成部分是类(class),如本类中的Hello类
  2. Java应用程序的执行入口是 main() 方法,它有固定的书写格式:

public static void main(String[] args) {…}

  1. Java语法严格区分大小写

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

  3. 大括号都是成对出现的,缺一不可。[习惯:先写 {} 再写代码]

  4. 一个源文件中最多只能有一个public类,其他类的个数不限

img

  • 这样子编译后,每一个类都有一个 .class 文件

img

  1. 如果源文件包含一个public类,则文件名必须按该类名命名!

img

public class Hello {

	//编写一个main方法
	public static void main(String[] args) {
		System.out.println("hello, world!");
	}
}
  • 这里类名和文件不同,编译的时候会发生报错

img

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

	//编写一个main方法
	public static void main(String[] args) {
		System.out.println("Zan教育");
	}
}

//一个源文件中最多只能有一个public类,其他类的个数不限
//Dog是一个类
//编译后,每一个类都对应一个.class

class Dog {

	//一个源文件中最多只能由一个public类,其他类的个数不限,也可以将main方法写在非public类中
	//然后指定运行非public,这样入口方法就是在非public的main方法
	public static void main(String[] args) {
		System.out.println("hello, 小狗狗~");

	}

}

class Tiger {

	public static void main(String[] args) {
		System.out.println("hello, 小老虎~");
	}

}
  • 这里 非class类 运行后,会只进入 非class类main入口处

img

Java转义字符

  1. \t:一个制表位,实现代码对齐的功能
  2. \n:换行符
  3. *\:一个*
public class ChangeChar {
	public static void main(String[] args) {
//      \\:一个\
		1. System.out.println("F:\Java\code");//error
		2. System.out.println("F:\\Java\\code");
	}
}

img

  • 第一种情况就会报错,因为 \ 被默认当作转义字符的标志,因此想要打印出 \ ,就需要两个\
  1. “:一个”
public class ChangeChar {
	public static void main(String[] args) {
//		\":一个“
		1. System.out.println("老张说:"要好好学习java,有前途"");//error
		2. System.out.println("老张说:\"要好好学习java,有前途\"");
	}
}

img

  • 第一种情况也会报错,因为有两个双引号,解析不出来了
  1. ‘:一个’
  • 原理同\
  1. \r:一个回车
  • \r 表示回车 - 而回车过后会将光标放到输出的当前行第一个字符前,用 \r 后面的字符替换当前的字符
public class ChangeChar {

	public static void main(String[] args) {
//		\r:一个回车
//		1. 输出 老张的
//		2. \r 表示回车 - 回车过后将光标放到输出的当前行的第一个字符,
//        				用后面的字符替换当前的字符
		System.out.println("老张的\r教育"); // 教育的
		System.out.println("老张的\r\n教育"); // 老张的
											 // 教育
	}
}

img

  • \n会将光标定位到下一行的位置
//演示转义字符的使用

public class ChangeChar {

	public static void main(String[] args) {

//		\t:一个制表位,实现对齐的功能
		System.out.println("1. 北京\t天津\t上海");
//		\n:换行符
		System.out.println("2. jack\nsmith\nary");
//		\\:一个\
		System.out.println("3. F:\\Java\\code");
//		\":一个“
		System.out.println("4. 老张说:\"要好好学习java,有前途\"");
//		\':一个‘
		System.out.println("5/ 老张说:\'要好好学习java,有前途\'");

//		\r:一个回车
//		1. 输出 老张的
//		2. \r 表示回车 - 回车过后将光标放到输出的当前行的第一个字符,用后面的字符替换当前的字符
		System.out.println("6. "); 
		System.out.println("老张的\r教育"); // 教育的
		System.out.println("老张的\r\n教育"); // 老张的
											 // 教育
	}
}

img

初学Java易犯错误

  1. 找不到文件

img

  • 解决方法:源文件名不存在或者写错,或者当前路径错误
  1. 主类名和文件名不一致

img

  • 解决方法:声明为public的主类应与文件名一致,否则编译失败
  1. 缺少分号

img

  • 解决方法:编译失败,注意错误出现的行数,再到源代码中指定位置改错
  1. 常见错误总结

学习编程最容易犯的错是语法错误(初学者)。Java要求你必须按照语法规则去编写代码。如果你的程序违反了语法规则,例如:忘记加分号、大括号、引号、或者拼错了单词,java编译器都会报语法错误。尝试着去看懂编译器会报错的错误信息

  1. 数字 1 写成字母 l
  2. 数字 0 写成字母 o
  3. 英文符号写成中文字符:; ;" ”
  4. 拼写错误:void -> viod
  5. 业务错误、环境错误(不好修改)

注释

  1. 单行注释 //

基本格式://注释文字

  1. 多行注释 /* */

基本格式“/* 注释文字 */

  • 单行注释和文档注释的使用细节
  • \1. 被注释的文字,不会被JVM(java虚拟机)解释执行(即注释里的东西不会被执行)
  • \2. 多行注释里面不允许有多行注释嵌套
//演示注释使用
//

public class Comment01 {
    
	public static void main(String[] args) {

        //嵌套注释
		/*示意
			/*
			
			 */
		下面代码完成 两个数相加
		定义变量
		*/

	}
}

img

  • 嵌套注释的错误
  1. 文档注释 /* */*

注释内容可以被JDK提供的工具 javadoc 所解析,生成一套以网页文件形式体现的该程序的说明文档,一般写在类前

//文档注释
//
/**
 	* @author 张zan
 	* @version 1.0
*/

public class Comment02 {

	//编写一个main方法
	public static void main(String[] args) {
    	
	}
}

基本格式就是**/** */包含,然后中间以*@**格式来写,*@后面的内容具体可以参考《javadoc 标签.docx》

  • 另外应用的格式就是

javadoc -d 文件夹名 -xx -yy 程序名

如:javadoc -d F:\java\code\temp -author -version Comment02.java

img

  • 这样就会在temp文件夹里面生成一大推网页文件

Java代码规范

  1. 类、方法的注释,要以javadoc的方式来写
  2. 非JavaDoc的注释,往往都是给代码的维护者看的,着重告诉为什么这样写,如何修改,注意什么问题等
  3. 使用tab操作,实现缩进,默认整体向右边移动,也可以用shift+tab整体向左移
  4. 运算符和 = 两边习惯性的各加一个空格,比如:2 + 4 * 5 + 345 - 89
  5. 源文件一般都使用utf-8编码(上面是由于在DOS上运行,DOS是GBK格式)
  6. 行宽度不要超过80个字符(即能一行看完,不需要拉动)
  7. 代码编写次行风格和行尾风格(推荐)

DOS命令(了解)

DOS介绍

Dos: Disk Operating System 磁盘操作系统

img

相对路径和绝对路径

img

相对路径:从当前目录开始定位,形成的一个路径

绝对路径:从顶级目录(根目录)D盘,开始定位,形成的路径

需求:想在当前目录下(D:\abc\test100)访问hello.txt

  • 相对路径:…\abc2\test200\hello.txt
  • 绝对路径:D:\abc2\test200\hello.txt

常用的DOS命令

  1. dir:查看当前目录是有什么内容,例:dir d:\abc2\test200
  2. cd:切换到其他盘下,盘符号,例:cd /d C:(/d是必须要的)

还可以切换到当前盘的其他目录下(相对路径和绝对路径)…\表示上一级目录,例:cd d:\abc2\test200 或 cd …\abc2\test200(当前目录在d:\abc\test100)

  1. 切换到上一级:cd …
  2. 切换到根目录:cd \
  3. tree:查看指定的目录下所有的子级目录
  4. cls:清屏
  5. exit:退出DOS
  6. md:创建目录,例:md d:\temp - 即在d盘创建temp文件夹
  7. rd:删除目录,例:rd d:\temp - 即删除在d盘的temp文件夹
  8. copy:拷贝文件
  9. del:删除文件
  10. echo:输入内容要文件,例:echo hello > hello.txt 即将hello放在hello.txt里面,空文件就是echo nul > pic.txt
  11. type:显示文件里的内容,例:type hello.txt 即显示hello.txt里面的内容
  12. move:移动,例:move ok.txt F:\ok.txt,将ok.txt移到F盘下
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

itzzan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值