1、window相关DOS命令:
* DOS命令在DOS命令窗口中编写
* DOS命令窗口打开:开始菜单-->运行-->输入cmd-->回车【默认打开的黑色命令窗口,这就是DOS窗口】
* 常见的DOS命令:
- exit 退出当前DOS命令窗口
- cls 清屏
- DOS窗口中的内容复制:在DOS窗口中的任意位置,点击鼠标右键,然后选择标记,
接下来选中要复制的内容,在DOS窗口的任意位置点击鼠标邮件,
此时被复制的内容已经到剪贴板了。
在需要粘贴的位置粘贴即可。
- dir 列出当前目录下的所有的子文件/子目录
- cd 命令
* cd命令表示:change directory【改变目录】
* 用法:cd 目录的路径
* 路径包括相对路径和绝对路径。
* 绝对路径:表示该路径从某个磁盘的盘符下作为出发点的路径
* 相对路径:表示该路径从当前所在的路径下作为出发点的路径
* 假设当前所在的路径是C:\Users\Administrator,那么在此时输入
cd Desktop,那么其中Desktop就是一个相对路径,从当前所在的
C:\Users\Administrator这个路径作为出发点,开始找Desktop目录。
* 假设是这样写的:cd C:\Users\Administrator\Desktop
其中C:\Users\Administrator\Desktop路径就是一个绝对路径。
- cd ..回到上级目录。
- cd \直接回到根目录。
- 切换盘符:
c:回车
d:回车
e:回车
f:回车
2、Java语言特性【开源、免费、纯面向对象、跨平台】
* 简单性:
相对而言的,例如java中不再支持多继承,c++是支持多继承的,多继承比较复杂C++中有指针,
Java中屏藏了指针的概念。
所以相对来说Java是简单的。
Java语言底层是c++实现的。不是c语言。
* 面向对象
Java是纯面向对象的。更符合的人的思维模式。更容易理解。
* 可移植性
什么是可移植性?
java程序可以做到一次编译,到处运行。
也就是说java程序可以在windows操作系统上运行,
不做任何修改,同样的java程序可以直接放到Linux操作系统上运行,
这个被称为Java程序的可移植性,或者叫做跨平台。
Windows操作系统内核和Linux操作系统的内核肯定不同,他们这两个操作系统执行指令的方式也是不一样的。
结论:显然java程序不能直接和操作系统打交道。因为java程序只有一份。操作系统执行原理都不同。
SUN的团队很聪明,他们想了一个办法,他们让java程序运行在一台虚拟的计算机
当中,这个虚拟的计算机叫做Java虚拟机,简称JVM。Java虚拟机再和底层的操作系统打交道。
* 多线程
* 健壮性:
和自动垃圾回收机制有关,自动垃圾回收机制简称GC机制。
Java语言运行过程中产生的垃圾是自动回收的,不需要程序员关心。
* 安全性
3、Java的加载与执行
* Java程序的运行包括两个非常重要的阶段
- 编译阶段
- 运行阶段
* 编译阶段
- 编译阶段主要的任务是检查Java源程序是否符合Java语法,
符合Java语法则能够生成正常的字节码文件
不符合Java语法规则则无法生成字节码文件
- 字节码文件中不是纯粹的二进制,这种文件无法在操作系统当中直接执行。
- 编译阶段的过程:
* 程序员需要在硬盘的某个位置<位置随意>新建一个.java扩展名的文件,
该文件被称为Java源文件,源文件当中编写的是Java源代码/源程序。
而这个源程序是不能随意编写,必须符合Java语法规则<Java语法规则是需要记忆的>
* Java程序员需要使用JDK当中自带的javac.exe命令进行Java程序的编译。
javac怎么用呢?在哪用呢?
- javac的使用规则:
javac java源文件的路径
-在Dos命令窗口中使用。
javac是一个java编译器工具/命令。
* 一个java源文件可以编译生成多个.class文件。
* 字节码文件/class文件是最终要执行的文件,所以说class文件生成之后,
java源文件删除并不会影响java程序的执行。但是一般java源程序不要删除,
因为class文件最终执行效果可能不是我们想要的,
那么这个时候需要回头再重新修改java源程序,
然后将java源程序重新编译生成新的class文件,
然后再运行这个class程序,生成新的效果。
* 编译结束之后,可以将class文件拷贝到其他操作系统当中运行。【跨平台】
*运行阶段【可以在其它操作系统当中,跨平台】
- JDK安装之后,除了自带一个javac.exe之外,还有另一个工具/命令,叫做java.exe
java.exe命令主要负责运行阶段。
- java.exe在哪里用?怎么用?
- 在Dos窗口中使用。
- java.exe怎么用呢?
java 类名
例如:
硬盘上有一个A.class,那么就这样用: java A
硬盘上有一个B.class,那么就这样用: java B
硬盘上有一个c.class,那么就这样用: java c
千万要注意:不要写成这样:java A.c1as的【这种方式是错误的】
- 运行阶段的过程是:
* 打开DOs命令窗口
* 输入:java A
* java.exe命令会启动Jara虚拟机(JVM),JVM会启动类加载器classLoader
* ClassLoader会去硬盘上搜索A.class文件,找到该文件则将该字节码文件装载到JwM当中。
* JVM将A.class字节码文件解释成二进制1010101010这样数据。
* 然后操作系统执行二进制和底层硬件平台进行交互。
4、开始第一个Java程序
* 安装JDK【JDK一般需要从oracle的官网下载】
* JDK、JRE、JVM的关系搞清楚
* JDK目录的介绍:
JDK/bin:该目录下存放了很多命令,例如javac.exe和java.exe
javac.exe负责编译
java.exe负责运行
* 开发HelloWorld.java源程序
public class HelloWorld{
public static void main(String[] args){
System.out.println("hello jackson");
}
}
* 将HelloWorld.java源程序通过javac工具进行编译:
- 首先需要解决的问题是:javac命令是否可用
- 打开DOS命令窗口,直接输入javac,然后回车,出现以下:
'javac'不是内部或外部命令,也不是可运行的程序
或批处理文件。
出现以上问题是因为: windows操作系统无法找到javac命令文件
- 怎么解决以上javac不可用的问题?
windows操作系统是如何搜索硬盘上某个命令的呢?
* 首先会从当前目录下搜索
* 当前目录搜索不到的话,会从环境变量path指定的路径当中搜索某个命令
* 如果都搜索不到,则报以上的错误。
- 配置环境变量path
* 注意:path环境变量和java语言没有关系,path环境变量是属于windows操作系统的一个知识点。
path环境变量是专门给windows操作系统指路的。
* javac要想能随意使用,需要将javac所在的目录配置到环境变量path当中:
path=xxxx;D:\Program Files\Java\jdk-17.0.5\bin【win10环境下直接分行存放,不要使用“;”分隔】
- javac命令怎么用?
java java源文件路径
注意:路径包括相对路径和绝对路径,都可以。
在cmd中输入C:\Users\admin>javac D:\Documents\JavaProject\day01\HelloWorld.java,
在HelloWorld.java所在目录下生成HelloWorld.class
* 运行java程序:
- 需要使用java.exe命令
- 首先测试java命令是否可用
- 使用方式:
java 类名
硬盘上有Helloworld.class,那么类名就是:Helloworld
java Helloworld
一定要注意:java命令后面跟的不是文件路径,是一个类的名字。
- 首先你需要先将DOS窗口中的目录切换到Helloworld.class文件所在目录。
- 然后直接执行:java HelloWorld
C:\Users\admin>cd..
C:\Users>cd..
C:\>D:
D:\>cd D:\Documents\JavaProject\day01【切换到HelloWorld.class所在目录】
D:\Documents\JavaProject\day01>java HelloWorld【运行】
hello world【输出结果】
5、打开DOS命令窗口,执行java Helloworld,执行原理?
* java.exe命令会启动JVM
* JVM启动之后会启动类加载器ClassLoader
* ClassLoader会在硬盘上的某个位置搜索Helloworld.class字节码文件
* 找到该文件则执行
* 找不到该文件则报错
疑问:classLoader是在哪个位置上搜索Helloworld.class字节码文件的?
* 默认情况下,ClassLoader从当前路径下加载xxx.class字节码文件
* 当然,也可以让classLoader去某个指定的路径下加载字节码文件,这时需要配置环境变量classpath
* classpath环境变量属于java语言中的环境变量,不属于windows操作系统【PATH环境变量属于操作系统】
* classpath是给ClassLoader类加载器指路的。
* 设置这样的环境变量:classpath=D:\course\JavaProjects\02-JavasElday02
- 打开DOS命令窗口在任意位置,都可以执行:java Helloworld
* classpath环境变量没有配置的话,类加载器默认从当前路径下找字节码文件,
当classpath环境变量配置为某个指定的路径之后,类加载器只去指定的路径当中加载字节码文件。
* 综上所述,环境变量classpath不再配置,这样类加载器会自动从当前路径下加载class字节码文件。
所以,每一次执行.class程序的时候,需要在DOS命令窗口中先切换到.class字节码文件所在的路径下。
然后运行。
* 当然,classpath也可以这样设置:classpath=.
注意:
路径中".."表示上级目录
路径中"."表示当前目录
6、关于java源程序当中的注释:
* 什么是注释?注释的作用是什么?
- 出现在java的源程序当中,对java源代码的解释说明
- 注释不会被编译到.class字节码文件当中
- 一个好的开发习惯应该是多编写注释,这样程序的可读性比较强。
* java中的注释怎么写呢?
- 单行注释
//单行注释,只注释当前行
- 多行注释
/*
多行注释
多行注释
多行注释
多行注释
多行注释
*/
- javadoc注释
/**
* javadoc注释
* javadoc注释
* javadoc注释
* javadoc注释
* javadoc注释
*/
注意:这种注释是比较专业的注释,该注释信息会被javadoc.exe工具解析提取并生成帮助文档。
7、对HelloWor1d程序进行解释:
需要记忆:
* public表示公开的
* class表示定义一个类
* static表示静态的
* void表示空
* System.out.println("");向控制台输出消息
* 类体
* 方法体
* 类体中不能直接编写java语句【除声明变量之外】
* 一个java语句必须以";"结束
* 方法体中可以编写多条java语句
* 主方法是程序的入口,固定写法。
HelloWorld.java代码编写
//public表示公开的
//class表示定义一个类
//HelloWorld表示一个类名
public class HelloWorld{ //表示定义一个公开的类,起名HelloWorld
//类体中不允许直接编写java语句【除声明变量之外】
//System.out.println("hello world");
//类体
/*
public表示公开的
static表示静态的
void表示空
main表示方法名是main
(string[] args)是一个main方法的形式参数列表
需要记住的是:
以下的方法是一个程序的主方法,是程序的执行入口
*/
public static void main(String[] args){ //表示定义一个公开的静态的主方法,args可以随便写
//方法体
//Java语句【Java语句以";"终止,分号必须是半角分号】
//以下代码的作用是向控制台输出一段消息
//以下的双引号必须是半角的双引号【是java语法的一部分】
//java中所有的"字符串"都使用双引号括起来。
System.out.println("hello world");
//再向控制台输出消息
System.out.println("hello jackson");
//输出中文
System.out.println("你好,杰克!");
//输出中文【提醒:以下程序员两边的双引号是“全角的”,
//这里的双引号不是java语法的一部分,这里的全角的双引号只是一个普通的字符串】
System.out.println("我是一个“程序员”");
}
}
HelloWorld编译
C:\Users\admin>javac D:\Documents\JavaProject\day01\HelloWorld.java
HelloWorld运行
C:\Users\admin>cd..
C:\Users>cd..
C:\>D:
D:\>cd D:\Documents\JavaProject\day01
D:\Documents\JavaProject\day01>java HelloWorld
hello world
hello jackson
你好,杰克!
我是一个“程序员”
4、public class和class的区别:
* 一个java源文件当中可以定义多个class
* 一个java源文件当中public的class不是必须的
* 一个class会定义生成一个xxx.class字节码文件
* 一个java源文件当中定义公开的类的话,只能有一个,并且该类名称必须和java源文件名称一致。
* 每一个class当中都可以编写main方法,都可以设定程序的入口,
想执行B.class中的main方法: java B
想执行E.c1ass中的main方法:java E
* 注意:当在命令窗口中执行java Hello,那么要求Hello.class当中必须有主方法。
没有主方法会出现运行阶段的错误:
D:\Documents\JavaProject\day02>java Hello
错误: 在类 Hello 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application
* K.java代码编写
class A
{
public static void main(String[] args){
System.out.println("java A");
}
}
class B
{
}
class C
{
public static void main(String[] args){
System.out.println("java C");
}
}
class D
{
public static void main(String[] args){
System.out.println("java D");
}
}
class E
{
public static void main(String[] args){
System.out.println("java E");
}
}
class F
{
public static void main(String[] args){
System.out.println("java F");
}
}
class G
{
public static void main(String[] args){
System.out.println("java G");
}
}
* K.java 编译
C:\Users\admin>javac D:\Documents\JavaProject\day02\K.java
编译后,在K.java所在文件夹下生成A.class、B.class、C.class、D.class、E.class、F.class、G.class
* K.java 运行
C:\Users\admin>cd..
C:\Users>cd..
C:\>D:
D:\>cd D:\Documents\JavaProject\day02
D:\Documents\JavaProject\day02>java A
java A
D:\Documents\JavaProject\day02>java B
错误: 在类 B 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application
D:\Documents\JavaProject\day02>java c
错误: 找不到或无法加载主类 c
原因: java.lang.NoClassDefFoundError: C (wrong name: c)
D:\Documents\JavaProject\day02>java C
java C