public class HelloWorld
{
public static void main(String[] args)
{
int i;
for(i=0;i<10;i++)
{
System.out.print("Hello,Worldn");
}
}
}
2、while循环
public class HelloWorld
{
public static void main(String[] args)
{
int i=0;
while (i<10)
{
i++;
System.out.print("Hello,Worldn");
}
}
}
3、do-while循环
public class HelloWorld
{
public static void main(String[] args)
{
int i=0;
do
{
i++;
System.out.print("Hello,Worldn");
}while(i<10);
}
}
1.1.2
a.删除public
错误: 在类 HelloWorld 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application
Java 指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为 public,Java 可以从该类之外的地方访问。因为 main 方法是公共的,JVM 就可以轻松的访问执行它。
b.删除static
错误: main 方法不是类 HelloWorld 中的static, 请将 main 方法定义为:
public static void main(String[] args)
1.正因为 main 方法是静态的,JVM 调用这个方法就不需要创建任何包含这个 main 方法的实例。
2.因为 C 和 C++ 同样有类似的 main 方法作为程序执行的入口。
3.如果 main 方法不声明为静态的,JVM 就必须创建 main 类的实例,因为构造器可以被重载,JVM 就没法确定调用哪个 main 方法。
4.静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用,如果 main 方法是静态的,那么它就会被加载到 JVM 上下文中成为可执行的方法。
c.删除void 为什么 main 方法没有返回值(Void)?因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。
d.删除args 为什么 main 方法要加参数args?运行时参数:运行Java程序的同时,可以通过输入参数给main函数中的接收参数数组args[],供程序内部使用!当你在Java命令行后面带上参数,Jvm就直接把它们存放到了main方法中的参数,args数组里了。 args这个数组可以接收到输入的内容。
java 文件名 args参数 args这个数组可以接收到这些参数。
例子:在命令行窗口下,通过java命令执行程序,并且在后面加上相加的参数,就会打印出来参数结果
public class Demo {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("调用main方法时没有指定任何参数!");
return;
}
System.out.println("调用main方法时指定的参数包括:");
for (int i = 0; i < args.length; i++) {
System.out.println("参数" + (i + 1) + "的值为:" + args[i]);
}
}
}
总结
1.main 方法必须声明为 public、static、void,否则 JVM 没法运行程序 。
2.如果 JVM 找不到 main 方法就抛出 NoSuchMethodError:main 异常,例如:如果你运行命令:java HelloWrold,JVM 就会在 HelloWorld.class 文件中搜索 public static void main (String[] args) 方法。
3.main 方式是程序的入口,程序执行的开始处。
4.main 方法被一个特定的线程 ”main” 运行,程序会一直运行直到 main 线程结束或者 non-daemon 线程终止。
5.当你看到“Exception in Thread main”如:Excpetion in Thread main:Java.lang.NullPointedException,意味着异常来自于 main 线程。
6.你可以声明 main 方法使用 java1.5 的可变参数的方式如:public static void main(String… args)。
7.除了 static、void、和 public,你可以使用 final,synchronized、和 strictfp 修饰符在 main 方法的签名中,如:public strictfp final synchronized static void main(String[] args)。
8.main 方法在 Java 可以像其他方法一样被重载,但是 JVM 只会调用上面这种签名规范的 main 方法。
9.你可以使用 throws 子句在方法签名中,可以抛出任何 checked 和 unchecked 异常。
10.静态初始化块在 JVM 调用 main 方法前被执行,它们在类被 JVM 加载到内存的时候就被执行了。
1.1.3 a.拼错 public
PS D:BaiduNetdiskWorkspaceStudentWorkSpaceJavadaolun1.1> javac HelloWorld.java
HelloWorld.java:3: 错误: 需要<标识符>
pblic static void main(String[] args)
^
1 个错误
PS D:BaiduNetdiskWorkspaceStudentWorkSpaceJavadaolun1.1> java HelloWorld
错误: 找不到或无法加载主类 HelloWorld
PS D:BaiduNetdiskWorkspaceStudentWorkSpaceJavadaolun1.1> javac HelloWorld.java
HelloWorld.java:3: 错误: 需要<标识符>
public satic void main(String[] args)
^
HelloWorld.java:3: 错误: 方法声明无效; 需要返回类型
public satic void main(String[] args)
^
2 个错误
PS D:BaiduNetdiskWorkspaceStudentWorkSpaceJavadaolun1.1> java HelloWorld
错误: 找不到或无法加载主类 HelloWorld
c.拼错 void
PS D:BaiduNetdiskWorkspaceStudentWorkSpaceJavadaolun1.1> javac HelloWorld.java
HelloWorld.java:3: 错误: 找不到符号
public static vid main(String[] args)
^
符号: 类 vid
位置: 类 HelloWorld
1 个错误
PS D:BaiduNetdiskWorkspaceStudentWorkSpaceJavadaolun1.1> java HelloWorld
错误: 找不到或无法加载主类 HelloWorld
d.拼错args
拼错args 无明显变化 程序仍然可以运行,不知道原理
Hello,World 放在不同行结果
java编译器无法识别
public class UseArgument
{
public static void main (String[] args)
{
System.out.print("Hi,");
System.out.print(args[0]);
System.out.println(",How are you?");
}
}
UseArgument 的命令行使用
0. java UseArgumentHi,Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at UseArgument.main(UseArgument.java:6)
错误原因:没有按照约定键入命令行参数
( 1.4节有详细说明)
打印出 Hi,java,How are you?
总结:不能在命令行输入@和&字符
@字符无法识别
&运算符为将来使用而保留的。
哦,可怜的Bob不见了
命令行参数倒置
public class UseThree
{
public static void main(String[] args)
{
System.out.print("Hi ");
System.out.print(args[2]+",");
System.out.print(args[1]+",");
System.out.print("and "+args[0]);
}
}
总结:习题很基础,有些繁琐,收获良多,教材很棒
日更加油!!!



