第一个Java程序
一、第一个Java程序
1、基础写法
我们第一个程序可以先使用记事本去编写,新建一个记事本,重命名为 HelloWorld.java (跟类名一致,后续解释)
输入以下内容:
class HelloWorld { public static void main(String [] args){ System.out.println("HelloWorld!"); } }
这就是我们的第一个java程序的代码了,下面怎么运行呢?
1.进入cmd命令行,编译java程序,把.java 文件编译成 .class 字节码文件
javac HelloWorld.java
2.执行 .class 文件,注意,这里不需要添加 .class后缀去执行
java HelloWorld
3.注意点
原文:https://blog.csdn.net/shaoxiaoning/article/details/40424087
- Java保存的文件名必须与类名一致;
- 如果文件中只有一个类,文件名必须与类名一致;
- 一个Java文件中只能有一个public类;
- 如果文件中不止一个类,文件名必须与public类名一致;
- 如果文件中不止一个类,而且没有public类,文件名可与任一类名一致。
当编写一个Java源代码文件时,此文件通常被称为编译单元(有时也称为转译单元)。每个编译单元都必须要有一个后缀为.java,而在编译单元内测可以 有一个public类,该类的名称必须与文件名称相同(包括大小写,但不包括文件的后缀名.java)。每个编译单元只能有一个public类,否则编译 器就不会接受。如果在该编译单元之中还有额外的类的话,那么在包之外的世界是无法看见这些类的,这是因为他们不是public类,而且他们主要用来为主要 public类提供支持。
1. 每个编译单元(文件)都只能有一个public类。这表示,每个编译单元都有单一的公共接口,用public类来表现。该接口可以按要求包含众多的支持包访问权限的类。如果在某个编译单元内有一个以上的public类,编译器就会给出出错信息。
2. public类的名称必须完全与含有该编译单元的文件名相匹配,包括大小写。所以对于Widget而言,文件的名称必须是Widget.java,而不是widget.java或WIDGET.java。如果不匹配,同样将得到编译时错误。
3. 虽然不是很常用,但编译单元内完全不带public类也是可能的。这种情况下,可以随意对文件命名。(尽管随意命名会使得人们在阅读和维护代码时产生混淆。)
一个Java文件可以有多个类作为内部类/Adapter类/其它类,但是只能有一个public类,且类名必须和文件名一致。这是这类语言的一个不好的地方。
在现实情况中,经常有一些很小的类由几个类共同需要,因此无法作为内部类,而且接口关系必须设置为public,这样就导致了大量很小的.Java程序,每个都只有几百字节。
这类语言的另一个问题是一个类的所有实现的方法都必须包含在同一个文件中。在swing应用程序中,经常导致长达一两百K字节的源程序,行数达到三四千行,搞得JBuilder奇慢无比。
一个 .java 文件,可以有多个类,但是文件名只能有一个,用哪一个类名来充当文件名呢?其实文件名是无所谓的,因为将来用 javac 进行编译的时候,最终会生成多个 .class 文件,每一个类对应个 .class 文件。运行时只要运行对应的 .class 文件就可以了,这时 .java 文件就显得没什么用了( 运行时不需要 ),那还管它叫什么名字。
但是当你的类被 public 修饰时,此时文件名必须和该类保持一致(例如 public class A{} 只能放在 A.java 文件中,不然在用 javac 编译时会提示错误:类 A 是公共的,应在名为 A.java 的文件中声明)。也就是说在同一个 .java 文件中,不应该出现2个或2个以上的 public class 。
如果有一个public class类,就应该让文件名和此类名相同;那如果没有呢,即所有的 class 都没有修饰符,那么可以给该文件随便起名字,甚至可以不和任意一个类同名,哪怕是汉字名称都可以,但是后缀还是要有.java 的 。
注:有很多初学者 ( 我也是 ) 可能会认为文件名应该也和 main 方法所在类有关系,其实不然。main 方法只是程序的一个入口,老师讲“一个程序只能有一个入口”,好象是在说只能有一个 main 方法,其实,只要你高兴,就可以在所有类里都写上 main 方法,给程序提供N多个入口,但是最后你运行程序的时候也只能从其中的一个入口进去,这就是 main 的作用( 程序入口 )。(这也就是为什么你会发现,程序员在做单元测试时,会往自己做的很多类里面添加 main 方法,因为他要为自己做的东西添加运行入口,从而能方便测试。)
2、带命令行参数的Java
我们重新新建一个Java程序为 ArgsTest.java ,内容如下:
class ArgsTest { public static void main(String[] args) { System.out.println(args.length); for (String arg : args) { System.out.println(arg); } } }
运行Java程序时在类名后面跟上一个或多个字符串(多个字符串用空格隔开,一个引号里面算一个字符串),JVM就会把这些字符串依次赋值给args数组。
二、Java程序的结构
版权声明:本文为CSDN博主「sunzixiao」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/sunzixiao/article/details/125815397
class 是定义类的关键字。
main方法是java程序的主方法,是java程序的入口,public static void main(String[] args){……}
那么这个方法是如何起作用的呢?下面我们就来探讨一下。
public修饰符:Java类由JVM调用,为了让JVM可以自由调用这个main方法,所有使用public来修饰这个方法。
static修饰符:JVM调用这个主方法时,不会先创建该主类的对象,然后通过对象来调用该主方法。JVM直接通过该类来调用主方法,因此使用static来修饰。
void返回值:主方法被JVM调用,该主方法的返回值将返回给JVM,这没有任何意义,因此返回值使用void
String[] args:字符串数组形参。根据方法调用规则,谁调用方法,谁负责为形参传递参数。
小结:
主方法是一个程序的入口,是SUN公司规定的固定编写方式。