计算机科学导论—— 跨学科方法 1.1第一个程序练习

练习1.1

在这里插入图片描述

1.1.1

1、for循环

public class HelloWorld
{
	public static void main(String[] args)
	{
		int i;
		for(i=0;i<10;i++)
			{
				System.out.print("Hello,World\n");
			}
	}
}

2、while循环

public class HelloWorld
{
	public static void main(String[] args)
	{
		int i=0;
		while (i<10)
		{
			i++;
			System.out.print("Hello,World\n");
		}
	}
}

3、do-while循环

public class HelloWorld
{
	public static void main(String[] args)
	{
		int i=0;
		do 
		{
			i++;
			System.out.print("Hello,World\n");
		}while(i<10);
	}
}

1.1.2

a.删除public

删除public
错误: 在类 HelloWorld 中找不到 main 方法, 请将 main 方法定义为:
public static void main(String[] args)
否则 JavaFX 应用程序类必须扩展javafx.application.Application

为什么main方法是公有的(public) ?

Java 指定了一些可访问的修饰符如:private、protected、public,任何方法或变量都可以声明为 public,Java 可以从该类之外的地方访问。因为 main 方法是公共的,JVM 就可以轻松的访问执行它。

b.删除static

删除static
错误: main 方法不是类 HelloWorld 中的static, 请将 main 方法定义为:
public static void main(String[] args)

为什么 main 方法是静态的(static)?

1.正因为 main 方法是静态的,JVM 调用这个方法就不需要创建任何包含这个 main 方法的实例。

2.因为 C 和 C++ 同样有类似的 main 方法作为程序执行的入口。

3.如果 main 方法不声明为静态的,JVM 就必须创建 main 类的实例,因为构造器可以被重载,JVM 就没法确定调用哪个 main 方法。

4.静态方法和静态数据加载到内存就可以直接调用而不需要像实例方法一样创建实例后才能调用,如果 main 方法是静态的,那么它就会被加载到 JVM 上下文中成为可执行的方法。

c.删除void

删除void

为什么 main 方法没有返回值(Void)?

因为 main 返回任何值对程序都没任何意义,所以设计成 void,意味着 main 不会有任何值返回。

d.删除args

删除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:\BaiduNetdiskWorkspace\StudentWorkSpace\Java\daolun\1.1> javac HelloWorld.java
HelloWorld.java:3: 错误: 需要<标识符>
pblic static void main(String[] args)
^
1 个错误
PS D:\BaiduNetdiskWorkspace\StudentWorkSpace\Java\daolun\1.1> java HelloWorld
错误: 找不到或无法加载主类 HelloWorld

b.拼错static

拼错static

PS D:\BaiduNetdiskWorkspace\StudentWorkSpace\Java\daolun\1.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:\BaiduNetdiskWorkspace\StudentWorkSpace\Java\daolun\1.1> java HelloWorld
错误: 找不到或无法加载主类 HelloWorld

c.拼错 void

拼错void

PS D:\BaiduNetdiskWorkspace\StudentWorkSpace\Java\daolun\1.1> javac HelloWorld.java
HelloWorld.java:3: 错误: 找不到符号
        public static vid main(String[] args)
                      ^
  符号:   类 vid
  位置: 类 HelloWorld
1 个错误
PS D:\BaiduNetdiskWorkspace\StudentWorkSpace\Java\daolun\1.1> java HelloWorld
错误: 找不到或无法加载主类 HelloWorld

d.拼错args

拼错args
拼错args 无明显变化 程序仍然可以运行,不知道原理

1.1.4 Hello,World 放在不同行结果

Hello,World 放在不同行结果
不同行java编译器无法识别

1.1.5 UseArgument.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 UseArgument

java UseArgument,java

Hi,Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
        at UseArgument.main(UseArgument.java:6)

错误原因:没有按照约定键入命令行参数
( 1.4节有详细说明)

a. java UseArgument java

java UseArgument java
打印出 Hi,java,How are you?

b.java UseArgument @!&^%

在这里插入图片描述
在这里插入图片描述
总结:不能在命令行输入@和&字符
@字符无法识别
&运算符为将来使用而保留的。

c.java UseArgument 1234

1234

d.java UserArgument.java Bob

在这里插入图片描述

e.java UseArgument Alice Bob

AliceBob
哦,可怜的Bob不见了

1.1.6

命令行参数倒置

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]);
	}
}

UseThree
总结:习题很基础,有些繁琐,收获良多,教材很棒
日更加油!!!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值