构造方法
一、注意事项
1、构造方法名必须和类名完全相同
2、构造方法没有类型,void也不可以
3、不写构造器,默认赠送一个无参构造器
一旦自己编写构造器,编译器则不再赠送
4、构造方法可以重载(方法名相同,参数列表不同)
5、构造方法不能递归(直接递归、间接递归均不可)
二、构造方法 VS 成员方法
构造方法是一种特殊的成员方法,用来初始化对象的状态
构造方法和成员方法都可以有访问修饰符(public、protected、友好的、private)
构造方法不能有非访问修饰符(static、final、abstract、synchronized)
-
构造方法用于初始化对象,static修饰无意义
-
构造方法不会被子类继承,final、abstract修饰无意义
-
不会创建地址相同的对象,synchronized修饰无意义
三、全参构造器 VS Setter方法
各有优势,共同存在,Setter方法可以单独为成员变量设置值
全参构造器可以一次赋值多个属性,避免多次使用Setter方法
Employee e = new Employee("鱼悠奕", 21);
e.setAge(22);
main方法
main方法是一种特殊的成员方法,由Java虚拟机(JVM)直接调用,而不是由其他方法调用
JVM寻找一个具有特定签名的main
方法:public static void main(String[] args)
,然后执行它
-
程序的入口点,需要从程序外部被访问,所以它是
public
的 -
在没有创建任何对象实例的情况下就能运行,所以它是
static
的 -
主要目的是启动程序并控制程序的执行流程,不需要返回任何值,所以它是
void
的
public class Main {
// main 方法是 Main 类的一个成员
public static void main(String[] args) {
System.out.println("Hello, World!");
}
}
1、main方法不写static,编译通过,无法运行
2、main方法的参数必须是一个字符串数组,数组名任意
public class Demo {
public static void main(String[] arr) { // 一般为args
// 不带参数运行main方法
// System.out.println(arr); // [Ljava.lang.String;@50cbc42f
// System.out.println(arr.length); // 0
// 带着参数运行main方法
for (String str : arr) {
System.out.println(str);
}
}
}