Java面试基础--构造方法与静态方法

构造方法

Student student = new Student();  // Student()就是构造方法

.java(程序员写代码的文件)
// 先定义一个类
public class A {

}

.class(经过编译后生成)
// 这个类实际编译的代码
public class A {
	// 默认带一个无参的构造方法
	public A () {
	
	}
}
// 可以自己定义构造方法
.java
public class A {
	A(int a) {
		...
	}
	A(int a, int b) {
		...
	}
}

.class
public class A {
	// 无参的构造方法没有了,被有参的覆盖了
	public A(int a) {
		...
	}
	public A(int a, int b) {
		...
	}
}
  1. 与类名相同、没有返回值的方法叫构造方法。(普通方法也可以与类名一样)

  2. 每个类都有构造方法,不写默认为无参的构造方法。

  3. 若自己指定构造方法,那么构造方法可重载;没有指定无参构造方法时,有参的构造方法会覆盖之前默认附带的无参构造方法。

静态方法

public class student{
	static int id; // 静态变量/类变量
	// static int id = test(); // √ -> static调用static
	int age; // 实例变量
	// int age = test(); // × -> 只能static调用static
	string name; 
	
	// 代码块
	{
		...
	}
    
    // 静态块
    static {
    	...
    }
    
    // 静态方法/类方法
    static int test() {
    	...
    }
    
    public static void main(String[] args) {
    	System.out.println(Student.id); // 通过类名访问静态变量
    	Student.test(); // 通过类名调用静态方法
    }
}
  1. 由static修饰的变量、方法叫静态变量、静态方法;因为是类特有的属性,所以也叫类变量、类方法。

  2. 静态变量、静态方法可通过类名访问。

  3. static内容是类共有的;

    static内容会在类加载时分配,而不是对象创建时;

    sttaic内容会在第一个对象初始化之前完成,后续对象初始化不再执行(只执行一次)。

  4. 静态变量的赋值只能调用静态方法。

以下情况会加载类:

  1. 访问类的静态变量,或为静态变量赋值。

  2. new创建类的实例。

  3. 调用类的静态方法。

  4. 子类初始化。

  5. 反射。

构造方法、静态内容执行顺序

public class Student {
	static int id;
	String name;
	int age;

    Student(int a){
        System.out.println("1个参数的构造方法");
    }

    Student(){
        System.out.println("0个参数的构造方法");
    }

    static void test1() {
    	// 类方法可操作类变量
    	id = 1;
        // age = 5; 类方法不可操作实例变量
        System.out.println("静态方法1");
    }

    static void test2() {
        System.out.println("静态方法2");
    }

    {
        System.out.println("代码块");
    }

    static {
        System.out.println("静态块");
    }
    
    // 实例方法可以调用类变量
    void test3() {
        id = 5;
    }

    public static void main(String[] args) {
        Student student = new Student();
        Student student2 = new Student(1);
    }
}

执行结果:

静态块
代码块
0个参数的构造方法
代码块
1个参数的构造方法 

执行顺序:

  1. 静态块和静态变量初始化,二者顺序与代码顺序决定(只执行一次)。

  2. 代码块和实例变量初始化,二者顺序与代码顺序决定。

  3. 构造方法。

两个面试的笔试题

1.以下说法正确的是()

A.class中的constructor不可省略

B.constructor必须与class同名,但方法不能与class同名

C.constructor在一个对象被new时执行

D.一个class只能定定义一个constructor

答案:C

2.以下说法正确的是()

A.实例方法可以通过类名调用

B.类方法可以通过类名调用

C.实例方法可以操作实例变量、类变量

D.类方法可以操作实例变量、类变量

答案:BC

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值