Java基础-编写问候语-“Hello World”
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.编写“Hello World”程序
1>.编写源代码
任何文本编辑起都可以编写Java源代码。Java代码的文件的命名格式规定是以“*.java”结尾。
2>.编译
编译时使用javac命令。用法:javac + 源文件
3>.运行
运行时使用Java命令。Java后面跟的是类名或是字节码文件的文件名。
二.“Hello World”程序说明
1 /* 2 @author :yinzhengjie 3 Blog:http://www.cnblogs.com/yinzhengjie/tag/GO%E8%AF%AD%E8%A8%80%E7%9A%84%E8%BF%9B%E9%98%B6%E4%B9%8B%E8%B7%AF/ 4 EMAIL:y1053419035@qq.com 5 */ 6 7 class Hello{ 8 public static void main(String[]args){ 9 System.out.println("Hello World!"); 10 } 11 }
1>.Java程序都必须定义在类中,编写Java程序的过程就是不断定义类的过程;
2>.使用class来定义一个类;
3>.Hello是程序员气的一个类名;
4>.类中的内容需要使用一对大括号括起来;
5>.程序要运行,必须编写main方法,并且main方法的写法是固定的;
6>.pubic表示公共的;
7>.static表示静态的;
8>.void表示main方法没有返回值;
9>.main是一个方法名;
10>.main后面的小括号是方法的参数;
11>.string[]args 是定义了一个字符串类型的数组;
12>.main方法的方法体也需要使用一对大括号括起来;
13>.“System.out.println("Hello World!");”是一条语句,Java语句使用英文半角分好结束;
14>.上一条语句的作用是在屏幕上打印一行信息,就是双引号引起来的内容会打印到屏幕上;
15>.System是sun公司定义的一个类,表示系统类;
16>. System.out 代表的是系统的标准输出设备,默认为显示器;
17>.println() 是一个方法,其作用就是在屏幕上打印一行信息;
注意:在Java中的符号都是英文半角!!!
三.Java源文件与类
1>.定义的类必须存储在Java源文件中。
2>.一般情况下,Java源文件名与类名相同。
3>.如果类名与源文件名不同:
a>.javac编译时,跟的是源文件名;
b>.生成的字节码文件,字节码文件名与类名相同。
4>.一般情况下,一个Java源文件中只定义一个类。
5>.在Java源文件中可以定义多个类:
a>.编译后,每个类都会生成一个对应的字节码文件
6>.同一个源文件中不同的类,都可以有main方法:
a>.一个类是否需要定义main方法,根据这个类是否需要被运行来决定
7>.类可以使用public修饰为公共类:
a>.你可能会问为什么要定义公共类,这就不得步说一下包的概念,包是用来管理类的,如果A包中的类想要使用B保重的类,在B包中被使用的类必须定义为public公共类;
b>.公共类的类名必须和文件名一致;
四.Java编码规范
1>.存储规范
a>.Java源文件的路径中尽量不要含有空格(dos命令行默认是以空格区分命令与参数)和中文(可以避免字符编码导致的问题)。
b>.Java源文件名不能有空格,尽量不要有中文。
2>.命名规范
程序源在开发程序时,会给类,变量,方法,常量起一些名字,在起名时要符合命名规范,常见的命名规范如下:
a>.类名一般每个单词首字母都大写;
b>.变量名,是名词,第一个单词小写,其它每个单词的首字母大写;
c>.方法名,是动词,第一个单词小写,其它每个单词的首字母大写;
d>.final常量名,一般每个字母都大写;
1 D:10.JavaJavaSEDay1>dir 2 驱动器 D 中的卷是 学习资料 3 卷的序列号是 0006-071A 4 5 D:10.JavaJavaSEDay1 的目录 6 7 2018/03/27 周二 上午 08:26 <DIR> . 8 2018/03/27 周二 上午 08:26 <DIR> .. 9 2018/03/27 周二 上午 08:21 417 Demo01.java 10 2018/03/26 周一 下午 11:17 416 Hello.class 11 2018/03/26 周一 下午 10:55 99 Hello.java 12 3 个文件 932 字节 13 2 个目录 460,338,917,376 可用字节 14 15 D:10.JavaJavaSEDay1> 16 D:10.JavaJavaSEDay1>type Demo01.java 17 /* 18 @author :yinzhengjie 19 Blog:http://www.cnblogs.com/yinzhengjie/tag/Java%E5%9F%BA%E7%A1%80/ 20 EMAIL:y1053419035@qq.com 21 */ 22 23 class MyClass{ 24 final double PI = 3.14; //final常量每个字母都大写 25 public static void main(String[] args){ 26 int dogAge = 5; //定义一个变量,dogAge是一个变量名 27 System.out.println("尹正杰"); 28 } 29 30 public static int getYear(){ //getYear()是方法名 31 return 2018; 32 } 33 } 34 D:10.JavaJavaSEDay1>javac Demo01.java 35 36 D:10.JavaJavaSEDay1>dir 37 驱动器 D 中的卷是 学习资料 38 卷的序列号是 0006-071A 39 40 D:10.JavaJavaSEDay1 的目录 41 42 2018/03/27 周二 上午 08:26 <DIR> . 43 2018/03/27 周二 上午 08:26 <DIR> .. 44 2018/03/27 周二 上午 08:21 417 Demo01.java 45 2018/03/26 周一 下午 11:17 416 Hello.class 46 2018/03/26 周一 下午 10:55 99 Hello.java 47 2018/03/27 周二 上午 08:26 551 MyClass.class 48 4 个文件 1,483 字节 49 2 个目录 460,338,917,376 可用字节 50 51 D:10.JavaJavaSEDay1>java MyClass 52 尹正杰 53 54 D:10.JavaJavaSEDay1> 55 D:10.JavaJavaSEDay1>
3>.书写规范
在编写代码时,要进行适当的换行与缩进。
4>.注释规范
a>.什么是注释
注释是对代码进行解释说明;
注释是给人看的,不参与编码,不影响程序的结构;
注释的作用就是为了提高代码的可读性;
b>.Java文档中的注释分类
单行注释,使用"//"(双斜杠)开始的注释
多行注释,使用"/**/"标识的注释
文档注释,使用“/** 文档注释*/”进行的注释,文档注释可以生成相应的文档。
五.文档注释的生成
1>.文档注释一般用来注释类,方法,成员变量
即在类的前面,在方面的前面,在成员变量的前面可以有文档注释。
2>.类必须使用public修饰为公共的才可以生成相应的文档
方法,变量可以使用public修饰,也可以使用protected修饰。
3>.工具类说明书的制作
a>.写一个完整的工具类,类要用public修饰;
b>.类名上加author(指定作者,可以用中文),version(指定发行版本,如1.0版本)标签;
c>.方法上加param(对形参列表进行说明的关键字),return(对返回值的类型进行说明)标签;
d>.注意,方法上标签中不用加类型;
4>.文档注释可以使用javadoc命令生成相应的文档
命令行常用编译参数说:
a>.“-author”,表示包含包含 @author 段。
b>.“-version”,表示包含 @version 段。
c>.“encoding”,指定源文件的编码格式。
如果想要了解更多参数可以查看帮助信息:“javadoc -help”。
1 D:10.JavaJavaSEJavaDAY1> 2 D:10.JavaJavaSEJavaDAY1>type Demo.java 3 /** 4 @author 尹正杰 5 @version 1.0 6 */ 7 8 public class Demo{ 9 /** 10 文档注释对成员变量进行注释时,可以使用public/protected修饰。 11 */ 12 protected int password = 123; //成员变量 13 14 /** 15 * 文档注释,对方法进行注释,方法需要使用public/protected修饰。 16 * 17 * @param args main 方法的参数是一个字符串数组 18 */ 19 public static void main(String[] args){ 20 int age = 18; //定义一个变量保存一个人的年龄。 21 System.out.println("yinzhengjie"); 22 } 23 } 24 D:10.JavaJavaSEJavaDAY1> 25 D:10.JavaJavaSEJavaDAY1>javadoc -d ./mydoc -author -version Demo.java 26 正在加载源文件Demo.java... 27 正在构造 Javadoc 信息... 28 正在创建目标目录: "./mydoc" 29 标准 Doclet 版本 9.0.4 30 正在构建所有程序包和类的树... 31 正在生成.mydocDemo.html... 32 正在生成.mydocpackage-frame.html... 33 正在生成.mydocpackage-summary.html... 34 正在生成.mydocpackage-tree.html... 35 正在生成.mydocconstant-values.html... 36 正在构建所有程序包和类的索引... 37 正在生成.mydocoverview-tree.html... 38 正在生成.mydocindex-all.html... 39 正在生成.mydocdeprecated-list.html... 40 正在构建所有类的索引... 41 正在生成.mydocallclasses-frame.html... 42 正在生成.mydocallclasses-frame.html... 43 正在生成.mydocallclasses-noframe.html... 44 正在生成.mydocallclasses-noframe.html... 45 正在生成.mydocindex.html... 46 正在生成.mydochelp-doc.html... 47 48 D:10.JavaJavaSEJavaDAY1>
六.反编译操作
1 D:10.JavaJavaSEDay1>dir 2 驱动器 D 中的卷是 学习资料 3 卷的序列号是 0006-071A 4 5 D:10.JavaJavaSEDay1 的目录 6 7 2018/03/27 周二 上午 10:38 <DIR> . 8 2018/03/27 周二 上午 10:38 <DIR> .. 9 2018/03/27 周二 上午 08:40 417 Demo01.java 10 2018/03/27 周二 上午 08:40 562 Demo02.java 11 2018/03/27 周二 上午 08:49 402 Demo03.java 12 2018/03/27 周二 上午 10:38 <DIR> doc 13 2018/03/27 周二 上午 10:33 572 Dome04.java 14 2018/03/26 周一 下午 10:55 99 Hello.java 15 5 个文件 2,052 字节 16 3 个目录 460,333,453,312 可用字节 17 18 D:10.JavaJavaSEDay1> 19 D:10.JavaJavaSEDay1>javac Dome04.java 20 21 D:10.JavaJavaSEDay1>dir 22 驱动器 D 中的卷是 学习资料 23 卷的序列号是 0006-071A 24 25 D:10.JavaJavaSEDay1 的目录 26 27 2018/03/27 周二 上午 10:41 <DIR> . 28 2018/03/27 周二 上午 10:41 <DIR> .. 29 2018/03/27 周二 上午 08:40 417 Demo01.java 30 2018/03/27 周二 上午 08:40 562 Demo02.java 31 2018/03/27 周二 上午 08:49 402 Demo03.java 32 2018/03/27 周二 上午 10:38 <DIR> doc 33 2018/03/27 周二 上午 10:41 467 Dome04.class 34 2018/03/27 周二 上午 10:33 572 Dome04.java 35 2018/03/26 周一 下午 10:55 99 Hello.java 36 6 个文件 2,519 字节 37 3 个目录 460,333,453,312 可用字节 38 39 D:10.JavaJavaSEDay1> 40 D:10.JavaJavaSEDay1>javap -c Dome04 41 Compiled from "Dome04.java" 42 public class Dome04 { 43 protected int password; 44 45 public Dome04(); 46 Code: 47 0: aload_0 48 1: invokespecial #1 // Method java/lang/Object."<init>": 49 ()V 50 4: aload_0 51 5: bipush 123 52 7: putfield #2 // Field password:I 53 10: return 54 55 public static void main(java.lang.String[]); 56 Code: 57 0: bipush 18 58 2: istore_1 59 3: getstatic #3 // Field java/lang/System.out:Ljava/ 60 io/PrintStream; 61 6: ldc #4 // String yinzhengjie 62 8: invokevirtual #5 // Method java/io/PrintStream.printl 63 n:(Ljava/lang/String;)V 64 11: return 65 } 66 67 D:10.JavaJavaSEDay1> 68 D:10.JavaJavaSEDay1>