还记得我们写的第一个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 同步代码块
后面学到多线程再讲