编译、运行

一、开发第一个java程序:HelloWorld

1.1、程序写完之后,一定要Ctrl+s进行保存

  新建一个文件,后缀改为.java

// 这是一个类,类名叫做HelloWorld
public class HelloWorld{ 
	public static void main(String[] args){
		System.out.println("Hello World");
	}
}

  
需要注意的是:java源代码只要修改,必须重新编译。
重新编译生成新的class字节码文件。

1.2、编译阶段
1.2.1怎么编译?配置path

  需要使用的命令是:C:\Program Files\Java\jdk-14.0.2\bin\javac.exe
   javac命令后加*加文件的末尾字母,可自动匹配到具有相同末尾的文件,一次性编译多个文件。
  这个命令需要先测试一下,打开DOS命令窗口,看看javac命令是否可用,
在这里插入图片描述

  这说明:windows操作系统没有发现“javac.exe"在哪里。

  为什么ipconfig、ping等命令可以使用呢?为什么javac用不了?
我们发现windows操作系统中有这样一个环境变量,名字叫做:path
并且发现path环境变量的值是:
在这里插入图片描述

  发现在:C:\windows\system32这个目录下存在:ipconfig.exe
注意:修改完环境变量之后,DOS命令窗口必须关闭重新打开才会起作用。

  将path环境变量中的:C:\windows\system32;删除之后再测试:
在这里插入图片描述

配置环境变量path的步骤:
  桌面计算机上右键–>属性–>高级系统设置–>环境变量
  怎么修改path环境变量?
    找到path,鼠标双击!!!
    path环境变量当中都是路径,路径和路径之间必须采用“半角的分号”(win7)(英文分号)

  让javac.exe能用,将以下路径配置到path中
    C:\Program Files\Java\jdk-14.0.2\bin

  注意:环境变量包括“系统变量”和“用户变量”
系统变量:范围比较大,系统变量会让计算机所有用户都起作用。
用户变量:范围比较小,这个变量只作用于当前用户。
优先从用户变量开始寻找。

  怎么查看编译器版本?
在这里插入图片描述

  怎么查看java虚拟机版本?在这里插入图片描述

  问题1:path环境变量的作用是什么?
    path环境变量的作用就是给windows操作系统指路的,告诉windows操作系统去哪里找这个命令文件。
path环境变量中有很多很多的路径,路径和路径之间用半角分号分隔。
path=A;B;C;D…
path是环境变量的名字。
A;B;C;D…是环境变量path的值。

  问题2:path环境变量是java中的机制,还是windows操作系统中的机制?path环境变量是隶属于java的吗?path环境变量和java有关系吗?
  path环境变量本质上是隶属于windows操作系统的,和java没有关系, java只不过用了一下path环境变量。

   path环境变量中的路径可以指定多个。
---------------------------------------------------------------------
  javac命令怎么用?
语法格式:
  javac java源文件的路径
什么是java源文件?
  java源文件的名字以“.java"结尾,该文件中写了java源代码。
java源文件的路径是什么意思?
  注意:路径永远包括绝对路径和相对路径。
注意:
   把java源文件直接拖进到DOS命令窗口,那么DOS命令窗口就有这个路径了。在这里插入图片描述

  绝对路径,直接生成在该文件夹中生成了字节码文件。在这里插入图片描述

  相对路径,直接生成在该文件夹中生成了字节码文件。在这里插入图片描述

注意:怎么在DOS命令窗口中快速定位到某个路径?
  打开计算机–>打开一些文件–>在地址栏上直接输入cmd回车就OK了。
新开了一个DOS命令窗口。
  编译报错的时候不会生成字节码文件。

1.3、运行阶段

   运行的前提是:class文件(字节码)生成了。没有字节码文件程序是无法运行的。
重点重点重点重点!!!!!!!
  假设该文件的名字叫做:HelloWorld.class
  那么HelloWorld被称为?????
  HelloWorld就是一个类名。

  如果文件名是Test.class,那么:Test就是一个类名。

  怎么运行,使用哪个命令?
    使用JDK的bin目录下的:java.exe命令来运行。

  先在DOS命令窗口中测试java.exe这个命令是否可用!!!
     java -version

   "java.exe"这个命令怎么用,语法格式是什么?
     java 类名

  千万要注意:java这个命令,后面跟的是“类名”,而绝对不能跟“文件路径”,因为java命令后面跟的不是文件,而是一个“类名”。
对于这个字节码:Test.class,应该:java Test
对于这个字节码:A.class,应该:java A
对于这个字节码:Hello.class,应该java Hello

  运行java程序需要哪些步骤呢?
  第一步(必须这样做):先使用cd命令切换到文件所在的路径。
  第二步:执行
  切记:
  java命令后面只要是跟路径,就一定不行。
  java命令后面只能跟类名。
在这里插入图片描述

二、“java HelloWorld”的执行过程以及原理

E:\Java学习\java代码编写>java HelloWorld
敲完回车,都发生了什么????
  第一步:会先启动JVM(java虚拟机)
  第二步:JVM启动后,JVM会去启动“类加载器classloader“
类加载器的作用:加载类的。本质上类加载器负责去硬盘上找“类”对应的“字节码”文件。
假设是“java HelloWorld”,那么类加载器会去硬盘上搜索:HelloWorld.class文件。
假设是“java Test”,那么类加载器会去硬盘上搜索:Test.class文件。

  第三步:类加载器如果在硬盘上找不到对应的字节码文件,会报错。在这里插入图片描述
  类加载器如果在硬盘上找到了对应的字节码文件,类加载器会将该字节码文件装载到JVM当中,JVM启动“解释器”将字节码解释为“10001001000…"这种二进制码,操作系统执行二进制码和硬件交互。

   默认情况下,类加载器去硬盘上找“字节码”文件的时候,会默认从当前路径下 找。

  问题:能不能给类加载器指定一个路径,让类加载器去指定的路径下加载字节码文件。
  答案:可以的。但是我们需要设置一个环境变量,叫做:classpath
classpath是一个环境变量,是给“类加载器”指路的。
classpath环境变量不属于windows操作系统,而是隶属于java。
classpath=A路径;B路径;C路径…
classpath是一个变量名
A路径;B路径;C路径…是变量值。
   配置classpath,这个环境变量在windows中没有,需要新建!!!
计算机–>右键–>属性–>高级系统设置–>环境变量–>新建…
注意:变量名不能随意写:大小写无所谓,但必须叫做:classpath
  目前随意配置一个:(配置后需重启DOS命令窗口)

  必须理解classpath环境变量的作用是什么?
    是给类加载器指路的。
在没有配置环境变量classpath的时候,默认从当前路径下加载。
在配置了环境变量classpath之后,就只能从指定的路径下加载了。

三、注释

三种注释方式
1、//单行注释
2、/*
多行注释
/
3、/
*
*javadoc注释:这里的注释信息可以自动被Javadoc.exe命令解析提取并生成到帮助文档当中。
*/

/*
	1、什么是注释,有什么用?
		注释是对java源代码的解释说明。
		注释可以帮程序员更好的理解程序。

	2、注释信息只保存在java源文件当中,java源文件编译生成的字节码class文件,
	这个class文件中是没有这些注释信息的。

	3、在实际的开发中,一般项目组都要求积极的编写注释。这也是一个java软件工程师
	的基本素养。

	4、注释不是写的越多越好,精简,主线清晰,每个注释都应该是点睛之笔。(以后慢慢锻炼)
*/

// 这种注释属于单行注释,只注释两个斜杠后面的

/**
* 类的注释信息
* @version 1.0
* @author bjpowernode-dujubin
* ....
*/
public class HelloWorld{ // 这是一个类,类名叫做HelloWorld
	public static void main(String[] args){
		System.out.println("Hello World");
	}
}

/*
	在这里可以编写多行注释
	这是一行注释
	这是第二行注释
	这是第三行注释
*/
/*
   1、在java中任何有效的代码必须写到“类体”当中,最外层必须是一个类的定义。

	2、public表示公开的,class表示定义一个类,Test是一个类名。类名后面必须是
	   一对大括号,这一对大括号被称为“类体”
	
	3、大括号必须是成对的,并且建议都要成对编写,这样才不会掉。
	   {}
	   []
	   ()

	4、什么时候代码缩进?
	   我包着你,你就比我低一级,你就需要缩进。
		没有合理的缩进,代码可读性很差。
		或者也可以这些想,大括号里的都需要缩进。
		缩进就是可读性问题,不缩进也不影响程序的编译和执行。
		通常可以按一下tab键缩进

*/
public class Test{  //声明/定义一个公开的类,起个名字叫Test

   //类体

	//整个这一块的代码被称为:main方法(程序的入口,sun公司java语言规定的)
	//也就是说:JVM在执行程序的时候,会主动去找这样一个方法。没有这个规格的方法,程序是无法运行的。
   //main方法也可以叫做主方法。
	//注意:方法必须放到“类体”中,不能放到“类体”外面。
	//任何一个程序都要有一个入口,没有入口进不来,无法执行。
	
	//类体当中应该是方法,而不是直接的java语句,
	//直接在类体中写java语句,不是不运行,是编译报错。编译过不去,运行肯定不行。
	public static void main(String[] args){ //这是一个入口方法。
      //注意:args可以改名字,随意,对于主方法来说只有这个位置可以改,其他位置不能动。

      //方法体
		//注意:方法体由一行一行的“java语句”构成。
		//重要的是:任何一条java语句必须以“;”结尾,英文分号。
		//";"代表 一条语句的结束。
		//非常重要的是:方法体中的代码遵循自上而下的顺序依次逐行执行。
		//main方法中什么也不写也是可以编译和运行的。

		System.out.println("Test1"); 

		//System.out.println();这行代码的作用是向控制台输出一句话。
		//注意:如果println后面小括号里的内容是一个“字符串”的话,必须使用英文双引号括起来。
		//双引号也要成对儿写。""

		//()里可以直接添加数字,不用加双引号。
		//()里数字加双引号后,和不加双引号性质是不一样的:一个是字符串,一个是数字。
		//但最终输出到控制台上一个样子,没啥区别。
		//()里对于数字来说能进行加减乘除。



		System.out.println("Test2");
	}


   //能再来一个一模一样的入口吗?
	//不行,有语法错误
	/*
   public static void main(String[] args){
	
	}
	*/
	
	//方法2
	//现在不执行不代表以后不执行,以后我们学习其他语法让他执行。
	public static void main2(String[] args){
		System.out.println("hello");
	}

	//方法3

	//方法4
}
/*
   1、这个内容没有为什么,只能经过测试,然后根据测试结果进行记忆。

	2、第一个结论
	   一个java源文件中可以定义多个class。并在编译后自动生成这多个class文件。
	
	3、第二个结论
	   public的类不是必须的。可以没有。
		
	4、第三个结论
	   在源文件中只要有一个class的定义,那么必然会对应生成一个class文件。

	5、第四个结论
	   public的类可以没有,但如果有的话,public修饰的类名必须和源文件名保持一致。

	6、第五个结论
		public的类也只能有一个。
*/
class A{

}

class B{

}

class C{

}

class D{

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值