环境变量path
修改完环境变量之后,DOS命令窗口必须关闭重新打开才会起作用。
配置环境变量path的步骤:
桌面计算机上右键-->属性-->高级系统设置-->环境变量
怎么修改path环境变量?
找到path,鼠标双击。
path环境变量当中都是路径,路径和路径之间必须采用英文输入模式下的分号分隔。
修改环境变量时,一定要把路径确定好。
注意:环境变量包括“系统变量”和“用户变量”
系统变量:范围比较大,系统变量会让计算机所有用户都起作用。
用户变量:范围比较小,这个变量知识作用于当前用户。
如何查看编译器版本:在DOS命令窗口中输入“javac -version”
path环境变量的作用说就是给windows操作系统指路的。告诉Windows操作系统到哪里去找这个命令文件。
如何使用javac命令编译
语法格式:javac java源文件的路径
直接把源文件拖入DOS命令窗口,那么在DOS命令窗口中就有这个路径了。
或者在你的存放.java文件的位置,点击路径直接输入cmd然后敲回车 直接进入DOS命令窗口 而且就在当前路径。
这样就可以在存放源文件的目录下生成.class文件,这样就编译完成了。
如何使用java命令运行
运行的前提是:class文件(字节码)生成了。没有字节码文件是无法运行的。
语法格式:java 类名(什么叫类名,请看前一天笔记,没有后缀的.class,切记)
同样是在DOS命令窗口下完成命令。
运行java程序的步骤
第一步:先使用cd命令切换到xxx.class文件所在的路径。
第二步:执行java xxx
win10运行输出结果是乱码的,在运行前输入chcp 65001,这样就可以了。
JAVA_HOME环境变量
对于java的JDK所属的环境变量,有一个叫做:JAVA_HOME
目前我们不需要JAVA_HOME环境变量,不配置这个环境变量也不会影响当前java程序的运行。但是后期学习到JavaWEB的时候需要安装Tomcat服务器,那个时候JAVA_HOME就必须配置了。
“java HelloWorld”的执行过程及原理
在DOS命令窗口指定的路径上,敲完“java HelloWorld”后,敲完回车都发生了什么?
第一步:会先启动JVM(Java虚拟机)
第二步:JVM启动后,JVM会去启动“类加载器classoader”
类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件。
第三步:类加载器如果在硬盘上找不到对应的字节码文件,会报错,错误:找不到或无法加载主类
类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装在到JVM当中,JVM启动“解释器”将字节码解释为二进制码,操作系统执行二进制码和硬件交互。
默认情况下,类加载器(classorder)去硬盘上找“字节码”文件的时候,默认从当前路径下找。
当然了,当然了,裤衩着火--裆燃了。
我们也可以给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件。但是我们需要设置一个环境变量,叫做classpath。
classpath环境变量
classpath环境变量不属于windows操作系统,classpath环境变量隶属于java。
classpath环境变量是java特有的。
classpath环境变量是给类加载器指路的。
classpath=A路径;B路径;C路径;...(其中classpath是变量名,等号右边是变量值)
配置classpath环境变量需要新建,因为这个环境变量在windows中没有。
计算机-->右键-->属性-->高级系统设置-->环境变量-->新建
注意:变量名不能随意写,大小写无所谓,但必须叫做:classpath
新建完成后一定要记得重启DOS命令窗口!!
配置完classpath环境变量后,类加载器就会在classpath配置的路径下找字节码文件,而不是在当前路径下。
所以说,到目前为止,现在的我们不需要去配置classpath环境变量。但是,必须要理解classpath环境变量是干什么的。
高版本JDK的新特性(了解即可)
在高版本的JDK当中,有这样一个新特性,可以直接这样一步到位。
java 直接加.java源文件的路径
这个特性是为了简化开发而提出,但实际上底层的实现原理还是和以前一样的,以上命执行过程中,还是会先进行编译,然后在运行,并且以上的运行方式,比那一生成的class文件在硬盘上不存在,看不到。
Java中的注释
注释是对java代码的解释说明。
注释只存在于java源文件中,java源文件编译生成的字节码class文件是没有这些注释信息的。
注释可以帮程序员更好的理解程序。
在实际的开发中,一般项目组都积极要求编写注释,这也是一个java软件工程师的基本素养。
注释不是写的越多越好,精简,主线清晰,每个注释都应该是点睛之笔。
java中的注释有三种写法
第一种 单行注释
//这种注释属于单行注释,只注释两个斜杠后面的
第二种 多行注释
/*
在这里可以编写多行注释
这是一行注释
这是又一行注释
*/
第三种 javadoc注释(这种注释信息,可以自动被javadoc.exe命令识别出注释信息,解析体取并生成到帮助文档当中)
/**
*注释信息
*@version 版本1.0
*@author 苦难 wb
*...
*/
对第一个编写的java程序(HelloWorld)进行解释
在Java中任何有效的代码必须写到“类体”当中,最外层必须是一个类的定义。(包的声明需要写在类的外面,在此先不说)
public表示公开的,class表示定义一个类,HelloWorld是一个类名,类匿名后面必须是一对大括号,这一对大括号被称为“类体”。
括号必须是成对的。并且,建议都要成对编写,这样才不会丢掉。
那什么时候代码缩进呢?
我包着你,你就比我低一级,你就需要缩进。
没有合理的缩进,代码的可读性很差。或者说大括号里的都要缩进。
缩进不缩进不影响编译,但是影响可读性。
shift+tab可以缩进。
public class HelloWorld{ //声明/定义一个公开的类,起个名字叫HelloWorld
//整个这一块的代码被称为:main 方法(程序的入口,SUN公司java语言规定的)
//也就是说,JVM在执行程序的时候,会主动去找这样一个方法,没有这个规格的方法,程序是无法执行的。
//main方法也可以叫做主方法。
//注意:方法必须放到“类体”中,不能放到“类体”外。
//任何一个程序都要有一个入口,没有入口进不来,无法执行。
public static void main(String[] args){//这是一个入口方法。而且不能再来一个一模一样的入口了。
//不过定义一个其他入口时可以的,但是不执行,以后我们可以学习其他语法让他执行。
//方法体
//方法体是由一行一行的“java语句”构成的。
//并且非常重要的是:任何一条java语句必须以英文模式下的分号“;”结尾。不能用中文的分号。
//“;”分号代表一条语句的结束。
//非常非常重要的是:方法体中的代码遵循自伤而下的顺序依次逐行执行。
System.out.println("Hello World");
//System.out.println();这行代码的作用是想控制台输出一句话,就是这个作用。
//注意:println后面的小括号里的内容是一个字符串的话,必须使用英文双引号括起来,双引号也要成对写。
//如果println后面的小括号里的内容是数字,可以不加双引号,加了双引号也不算错,只不过意义不同。一个是数字,一个是字符串。但最终输出的都是一个样子。
System.out.println("JAVA入坑");
}
}
以下程序科以编译通过,当时不能运行,因为没有main方法。符合语法规则,没有语法错误。
public class HelloWorld{
}
public class HelloWorld{
static void main(String[] args){
}
}
public class HelloWorld{
public static void main(String[] args){
}
}
注意:args可以改名字,随意,对于主方法来说,只有这个位置可以改,其他位置不能动。
注意:类体当中应该是方法,而不是直接的java语句。
加减乘除都是可以在println后面的小括号里运用的。
public class和class的区别
1.一个java源文件中可以定义多个class。
2.public的类不是必须的。
3.在源文件中,只要有一个class的定义,那么必然会对应生成一个class文件。
4.public的类可以没有,但如果有的话,public修饰的类名必须和源文件名保持一致。
5.public类只能有一个。
每个类中都可以编写入口,想从哪个入口进,就加载哪个类就可以了。
编写程序练习
第一题:编写java程序,输出学生基本信息
public class XinXi {
public static void main(String[] args){
System.out.println("学号:0000000000");
System.out.println("姓名:苦难");
System.out.println("生日:xxxx年xx月xx日");
System.out.println("家庭住址:某省某市某县某镇某村某屯");
}
}
第二题:编写Java程序,输出商城商品列表信息
public class ShangPin{
public static void main(String[] args){
System.out.println("-----------------------------------------");
System.out.println("|-------------手机商品列表--------------|");
System.out.println("-----------------------------------------");
System.out.println("| 商品编号 | 商品名称 | 单价(元)|");
System.out.println("-----------------------------------------");
System.out.println("|0000000001| 红米not8 pro | 1899.00 |");
System.out.println("-----------------------------------------");
System.out.println("|0000000002|小米10至尊纪念版| 5599.00 |");
System.out.println("-----------------------------------------");
System.out.println("|0000000003| Redmi 9 | 1199.00 |");
System.out.println("-----------------------------------------");
System.out.println("|0000000004| 小米10 pro | 4999.00 |");
System.out.println("-----------------------------------------");
}
}