基础篇学习课堂记录3-4

第三天

1.1、开发第一个Java程序 HelloWorld,要保存

源代码只要修改了就必须重新编译,生成新的.class字节码文件

1.2、编译阶段使用给命令C:\Program Files\Java\jdk-13.0.2\bin\javac.exe

首先要进行验证一下Javac是否是可运行的,windows+r打开cmd控制命令,输入javac进行验证

第一次运行会出现:

C:\Users\北城>javac
‘javac’ 不是内部或外部命令,也不是可运行的程序
或批处理文件。

说明windowsOS操作系统没找到Javac的指令,一些其余指令可以使用,比如ipconfig(测量IP地址)或者ping(设备间通信检测)指令,Windows环境变量中有path变量:路径值为C:\Program Files (x86)\Common Files\Oracle\Java\javapath;%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0;%SYSTEMROOT%\System32\OpenSSH;%JAVA-HOME%\bin;%JAVA-HOME%\jre\bin;

在system目录下有一个ipconfig命令,修改完环境变量之后,重新打开dos窗口,修改后ipconfig也不能使用

从而要用Javac命令可用,必须加入path变量,从而需要进行环境变量的配置

此电脑右键属性,高级系统设置,打开环境变量,找到path,双击即可修改,将路径C:\Program Files\Java\jdk-13.0.2\bin纳入进去

注意:环境变量包括系统变量(范围比较大,作用于全部的电脑上)也包括用户变量(仅仅针对单一用户可用)

利用java -version命令来查看版本,和是否安装好了(记住,在中间有个空格)

我配置时出现的问题,是因为之前安装的版本中配置过环境变量,在安装新版本时重新配置环境变量出现了一些问题,原因是在配置的环境变量path中有着先前添加的Java程序,会被优先打开,但因为因为之前的版本已经被删除,从而会出现无法打开的情况,进而在设置时可以将path里面的项目改变优先级位置来实现:

1)将C:\Program Files (x86)\Common Files\Oracle\Java\javapath环境变量和对应的快捷文件夹都删掉,因为这个并没有用,而且在使用IDEA创建爱项目的时候回出现错误。(因为这条环境变量和自己定义的环境变量用意重复,删除掉以免以后出现不必要的麻烦)

2)将自己配置的环境变量(%JAVA_HOME%\bin和%JAVA_HOME%\jre\bin)配置移动到C:\Program Files (x86)\Common Files\Oracle\Java\javapath这条环境变量的上面。(推荐使用第一种,以免在开发时出现错误)

3)之前说到IDEA出现Error:java: Compilation failed: internal java compiler error检查过JDK版本后任然出错,因为环境变量中有重复的环境变量,在IAEA中出现的环境变量有可能是哪上文汇总提到的快捷方式的环境变量,这样对应的库文件和其他可执行文件就无法使用,所以删除对应的快捷方式的环境变量就可以解决。
————————————————
版权声明:本文为CSDN博主「幽灵球」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_34950682/article/details/94339981

在CSDN社区中找到的解决方式,并顺利解决。

查看编译器版本:

C:\Users\北城>javac -version
javac 13.0.2

查看虚拟机版本:

C:\Users\北城>java -version
java version “13.0.2” 2020-01-14
Java™ SE Runtime Environment (build 13.0.2+8)
Java HotSpot™ 64-Bit Server VM (build 13.0.2+8, mixed mode, sharing)

path环境变量的作用:给Windows操作系统进行指路,告诉操作系统去哪儿找这个命令文件。各路径之间用半角分号进行分割,路径可以多个。

path环境变量是windows操作系统下的机制,而不是局限于Java,而是Java用了一下path环境变量

在进行别的软件安装时,如果找不到相应的命令,要配置一下path环境变量(出现找不到命令的错误)


javac命令的使用:

​ 语法格式:javac java源文件(以.java结尾)的路径

.java文件中写了java源代码,文件的路径包括绝对路径和相对路径

神操作:可以直接将.java文件拖入dos窗口,后面就出现了文件的路径

如果一个路径下前面没有写盘符,便是相对路径,直接拖入dos窗口的话就是生成的绝对路径

可以在dos窗口上进行 cd切换路径也可以不断找到要编译的文件也可以去编译,都可以有效编译。路径一定要对,相对路径时在当前盘下进行寻找,可以用cd命令来切换

神操作:在.java文件所在的路径下直接输入cmd来打开DOS命令窗口,直接进行该目录下的编译。相当于直接在该文件所在路径下打开命令窗口。

打开计算机—>打开一些文档---->在地址栏直接输入cmd 回车即可打开DOS命令窗口

这样的话,利用绝对路径和相对路径都可以进行编译

1.3、运行阶段

运行前提时.class文件生成了,没有字节码文件程序是无法运行的

.class前的名字被称为类,就是一个类名

使用bin目录下的java命令来运行,现在dos命令窗口下测试下是否可用。

语法格式:java 类名 (类名!!!!!!!!!!)**

java HelloWorld

***千万注意:java命令后面跟的是一个“类名”,绝对不能是“文件路径”,java命令后面跟的不是文件,是一个“类名”。***路径无论是绝对路径还是相对路径都不可以

第一步(必须这样):

​ 先使用cd命令切换到.class文件所在的路径,或者就直接在该文件所在文件夹的地址栏直接打开cmd窗口

第二部:执行java 类名(仅仅这一种方式来运行)

切记:java命令下只要是跟路径就一定不行,只能是是类名!!!!!

神操作:在DOS窗口下可以通过上下键来将历史上的输入指令进行调整,从而不用一直进行输入

对于Java的JDK所属的环境变量有一个叫做:JAVA_HOME,这个JAVA_HOME可以不进行配置,不配置也不会影响当前java程序的运行,但是后期学习到JavaWEB的时候便需要安装Tomcat服务器,那个时候JAVA_HOME就必须要配置了,我直接给配置上了,但不知道配置的是否合理。

除了JAVA_HOME,还有其他的一些环境变量

探索一下java HelloWorld 的执行过程和原理:

​ 第一步、先启动JVM

​ 第二步、JVM启动后,JVM会去启动"“类加载器classloader”

​ 类加载器作用:加载类发的,本质上是去硬盘上去 找类对应的字节码文件,去搜索HelloWorld.class文件。

​ 第三步、类加载器如果在硬盘上找不到对应的字节码文件,会报错(错误:找不到或无法加载主类);类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM上,JVM启动“解释器”将字节码解释为“010101001010”这种二进制码,操作系统执行二进制码来与硬件进行交互。

问题:类加载器在默认情况下,去硬盘上去找字节码文件,从哪儿开始去找?

默认是从当前路径下来找.class文件

可以给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件,但需要设置一个classpath这一个环境变量,这一个变量是给classloader类加载器进行指路的,而不是隶属于windows操作系统,隶属于java,是java特有的

但并不是必须要去配置的环境变量,只是执行起来会比较麻烦。

可以在系统变量里面新建一个classpath这个环境变量,***变量名不可以随意写:大小写无所谓,但必须要叫classpath***配置完要重启cmd命令窗口

一旦配置上classpath 后之后仅仅在这一个目录下去找,在当前路径下就不找了,有的时候配置上反而不太方便,不如不配。

可以固定下一个路径,只需要将所有要编译的.class文件放在classpath下的路径就可以。

在没有配置classpath环境变量时,类加载器默认从当前路径下进行寻找

在配置classpath环境变量后,之后类加载器都会从指定的路径下进行寻找字节码文件

“.”代表当前路径

1.4、高版本的JDK中有新的特性,可以直接一部到位,是为了简化开发,但实际上的实现原理是一样的,但尽量还是使用原来的编译和运行工作,毕竟很多公司都是在用JDK8版本的进行开发。

第四天

//声明/定义一个公开的类,并给类起个名字,即类名叫Test
public class Test{
public static void main(String[] args){
System.out.println(“Test1”);
System.out.println(“Test2”);
}

}

//整个这一块的代码称之为:main方法(程序的入口,SUN公司规定的)
//jvm在执行时,会主动去找这个方法,没有这个规格的方法,程序无法运行
//main方法也叫主方法,方法必须放到类体中,不能放在外面
//public static void main(String[] args)是固定的,不得随便改变

/*
1、在Java中任何有效的代码都必须写到“类体”当中,最外层必须是一个类的定义
2、public表示公开的,class表示一个类,Test是一个类名。类名后面必须
是一个大括号,这一对大括号称为“类体”
3、大括号是成对的,建议成对编写
4、什么时候代码缩进?
答:我包着你,你就比我低一级,你就得缩进。没有合理的缩进,代码可
读性很差;或者说大括号里的都需要缩进
shift+tab键就是左缩进,只按tab键直接右缩进
5、任何一个程序都要有一个程序入口,但不能重复定义

*/

在类体中是进行方法的放置,方法体是由一行一行的“java”语句构成,并且每行都要以;结尾,非常重要的是:方法体中的代码遵循自上而下的顺序依次逐行执行。

System.out.println(“Test1”);这一行语句作用就是向控制台输出一句话,就这一个做哟个

小括号里面的内容是一个字符串的话,就必须用双引号将字符串包起来

注意:public static void main(String[] args)中args是可以改的,随意进行更改,其他位置不能动。

类体当中应该是放入方法,不能直接去跟java语句,会出现问题。如果直接这么写,会出现语法规则错误,编译过不去,进而无法直接运行。

System.out.println(“100”)

System.out.println(100)二者语法上没有什么错误, 但是一个是字符串,一个是数字

但最终输出到控制台上,表现出的是一个意思,表面上没啥区别

System.out.println(中间可以写数字间的运算-加减乘除);输出的结果是运算后的结果

结论

​ 1、 一个.java文件中可以定义多个.class文件,进行javac的编译之后会生成多个.class文件

​ 2、public的类不是必须的,可以没有

​ 3、只要有一个class的定义,就会生成一个class文件

​ 4、public的类可以没有,但是如果有的话,public修饰的类名必须和源文件名保持一致,所以public的类有且只能有一个,只能和源文件名保持一致在这里插入图片描述
5、在每一个class文件中都可以进行安设入口,生成的多个.class文件,可以根据类名来选择进入哪个入口,但一般项目开发中的执行入口只会有一个,虽然可以这么写,但执行性不高

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值