Java学习笔记之main方法和代码块

还记得我们写的第一个Java程序,hello world吗?

public Class HelloWorld{
	public static void main(String[] args){
		System.out.println("Hello World!");
	}
}

这段代码非常简单,作用就是调用main方法打印一句“Hello World!”

1、main方法

public static void main(String[] args)
  • public:表示该方法可以被外部所调用
  • static:表示此方法可以由类名称直接调用
  • void:主方法是程序的起点,所以不需要任何返回值
  • main:系统规定好默认调用的方法名称,执行的时候,默认找到main方法名称
  • String[] args:表示运行时的参数,参数传递的形式:类名称 参数1 参数2 参数3 … 参数之间用空格分隔

如果一个程序运行时,要求必须输入三个参数,否则无法执行,则可以在程序执行前加一个判断

public Class HelloWorld{
	public static void main(String[] args){
		if(args.length!=3){
			System.out.println("参数个数不对,无法执行");
			System.exit(1);  // 直接退出程序
		}
		for(int i=0;i<args.length;i++){
			System.out.println("第" + (i+1) + "个参数:" + args[i]);
		}
	}
}

2、代码块

代码块其实从一开始写程序就接触到了,就是用 { } 括起来的一段代码,主要分为普通代码块、构造块、静态代码块、同步代码块。

2.1 普通代码块

直接定义在方法里的代码块称为普通代码块

public Class HelloWorld{
	public static void main(String[] args){
		{	// 普通代码块
			int x = 10;  // 局部变量
			System.out.println("普通代码块:x = " + x);
		}
		int x = 100;
		System.out.println("代码块之外:x = " + x);
	}
}

运行结果:
普通代码块:x = 10
代码块之外:x = 100

2.2 构造块

定义在类里的代码块

public class ChapterFive {
    public static void main(String[] args){
        new Person();
        new Person();
        new Person();
    }
}

class Person{
    {  // 直接在类中编写代码,称为构造块
        System.out.println("1、构造块");
    }
    public Person(){
        System.out.println("2、构造方法");
    }
}

运行结果:
1、构造块
2、构造方法
1、构造块
2、构造方法
1、构造块
2、构造方法

可以看到:构造块先于构造方法执行,且多次执行,只要一实例化对象,就执行构造块中的内容

2.3 静态代码块

直接用static声明的代码块就叫静态代码块

public class ChapterFive {
    static{ // 在主方法的类里定义静态代码块
        System.out.println("主方法类里定义静态代码块");
    }
    public static void main(String[] args){
        new Person();
        new Person();
        new Person();
    }
}

class Person{
    {  // 直接在类中编写代码,称为构造块
        System.out.println("1、构造块");
    }
    static {  // 用static声明的代码块就叫静态代码块
        System.out.println("0、静态代码块");
    }

    public Person(){
        System.out.println("2、构造方法");
    }
}

执行结果:
主方法类里定义静态代码块
0、静态代码块
1、构造块
2、构造方法
1、构造块
2、构造方法
1、构造块
2、构造方法

可以看到,静态块优于主方法先执行,在普通类中的静态块优先于构造块执行,不管实例化多少个对象,静态块只执行一次,静态代码块的作用就是静态属性初始化,因为静态属性是全局共有的,所以只需要执行一次即可。

2.4 同步代码块

后面学到多线程再讲

猜你喜欢

转载自blog.csdn.net/zuolixiangfisher/article/details/84334355