1-1第一个程序HelloWorld(基础不好先看1-2HelloWorld程序详解,1-1拿窗口控制台整的)
建议第一个程序helloworld用一用终端窗口(就是小黑窗口),也不太浪费时间,便于理解java文件的编译运行,之后就不要用了,浪费时间。
一、程序的创建(基础不好先看HelloWorld程序详解,这个可看可不看)
- 建立一个文档文件(记事本),后缀名改成.java,此时该文件为java源文件。
- 编写代码。
- 通过javac程序对java源文件进行编译,它将文件编译成以.class为结尾的字节码文件(源文件是没变,多了一个字节码文件)。格式:javac 源文件名.java。
- java程序启动java虚拟机,java虚拟机解释运行字节码文件。格式:java 类名。
小点
- javac程序就是一个java编译器。
- 源文件编写了几个类,就有几个字节码文件。
- 字节码文件(.class)的文件名和原文件的类名相同。
- 文件名尽量是英文,有时候中文可能计算机不识别导致文件编译失败。
- java文件名要跟公共类的类名相同(原因简单说就是计算机方便寻找路径)
代码
public class HelloChina{
public static void main(String[] args){
System.out.println("HelloWorld");
}
}
二、操作步骤
- 建立一个文档文件(记事本),后缀名改成.java,此时该文件为java源文件。
- 编写代码
- windows + r 再输入cmd打开命令窗口。
- 文件一般默认在c盘,如果想要更换,打上d:之后回车。
- 之后写上文件路径,写到java源文件的上一级文件,cd是指change directory,改变路径。
- 通过javac程序进行编译工作 javac 文件名.java(后缀名必须写)。很好理解因为编译器需要找到文件,所以要文件全名。
- 进行对java的解释运行工作, java 文件名(不需写后缀名)。 而在运行程序的时候只需要指定类名,所以不需要扩展名。
- 程序输出运行结果。
窗口图
注意:下图只是为了说明字节码文件和源代码的类名相同,正常写代码的时候源代码的文件名必须与公共类的类名相同
文件格式图
从图片可以看出,我建立的java文件的文件名为HelloWorld,而字节码文件名为HelloChina与pulic修饰的类名HelloWorld的名字相同 ,可以看出字节码文件的名称和源代码的公共类的类名相同。
注意:下图只是为了说明字节码文件和源代码的类名相同,正常写代码的时候源代码的文件名必须与公共类的类名相同
注意一点windows系统不会对字母的大小写进行区分,这可能会导致俩个只有大小写不同的文件被系统定义为同一个文件。
1-2HelloWorld程序详解
public class HelloWorld{ //第一行除了类名HelloWorld可以自己定义名称,其他不可更改
public static void main(String[] args){//第二行不可更改,就这么写
System.out.println("HelloWorld");//输出语句
}
}
一、代码详解(有些看不明白正常,没学呢)
1. public class HelloWorld
public:
public是java的一个关键字,被称为访问修饰符,正式一点说,访问修饰符的作用是 控制程序的其他部分对访问修饰符所修饰的代码的访问级别,简单点来说就是不同程度的限制其他代码对修饰范围内代码的使用,例如public即在整个java工程内都可以被访问。(后面会详细讲)
一个程序必须有一个被public修饰的类,java文件名与此类的类名相同。
class HelloWorld
class即是类的意思,我们可以把类看做一个容器,每一个容器代表着一种功能,定义了程序的行为,就好比,我定义了一个嘴类,那他所具有功能就是吃、喝、说话,他能做到的行为就是吃、喝、说话。类是所有java应用的构建模块,java所有的内容都必须放入类中。
HelloWorld是类的名称,类名必须以字母开头,后面可以是数字和字母的任意组合,长度没有限制,但不能使用java的保留字(例如public int 等等一系列java本身具有功能和意义的一切)。
2.public static void main(String[] args)
public static void main
首先main方法是一个java程序必有一个方法,因为在运行一个已编译的程序时,java虚拟机总是从指定类中main方法的代码开始执行,是程序的入口,因此为了执行代码,类中的源代码必须有一个main函数。
java解释器强制要求main方法必须是public
static void等我以后在写,现在当成编译java程序的必要部分就行了
在c++的main函数中,main方法会为操作系统返回一个退出码,所以会有个return 0,而java没有,在java中如果main方法正常退出,那么java程序的退出码即为0,表示程序成功运行了,所以不需要返回值。
String[] args(String args[]也可)
args -> argument :参数,这就是一个变量名,可以换成别的,例如a。
3.System.out.println(“HelloWorld”)
System就是java.lang的一个类。
static,静态的,final,常量,最终的,out是PrintStream类中的一个静态且不可更改的对象,所以可以用类名.静态方法的方式调用out。
public static final PrintStream out = null;
PrintStream是java.io下的一个类,println()是PrintStream类中的一个成员方法,out是PrintStream类的实例化(对象),所以可以用对象.方法的方式调用println()方法。
public void println() {
newLine();
}
3.println()是PrintStream类下的一个方法。
private void newLine() {
try {
synchronized (this) {
ensureOpen();
textOut.newLine();
textOut.flushBuffer();
charOut.flushBuffer();
if (autoFlush)
out.flush();
}
}
catch (InterruptedIOException x) {
Thread.currentThread().interrupt();
}
catch (IOException x) {
trouble = true;
}
}
当调用println()时候,调用了newLine放大,之后进行输出。