Giá trị mặc định của biến trong Java

Mn cho em hỏi tý khi khai báo 1 biến trong Java mà chưa khởi tạo giá trị thì giá trị của ns mặc định là 0 ạ. Em mới từ C++ sang thấy bên C++ nó là 1 số bất kì ạ.

1 Like

Một biến trong Java không có giá trị khởi tạo mặc định.

public static void main(String... args)
{
    int a;
    System.out.print(a);//Báo lỗi vì a chưa được khởi tạo
}

Một trường trong Java thì mới có giá trị mặc định.

Class X
{
    public int a;
}
//Ở một chỗ nào đó khác bên ngoài khai báo class X
X x = new X();
int b = x.a + 1;// = 0 + 1 = 1;
7 Likes
class Student {
	private String name;
	private int age;

	public static int numberOfStudents;

	public Student(String name, int age) {
		this.name = name;
		this.age = age;
		numberOfStudents++;
	}
}

class Entry {
	public static void main(String[] args) {
		Student s1 = new Student("Manh", 19);
		Student s2 = new Student("Trung", 19);
		Student s3 = new Student("Kien", 19);
		System.out.println(Student.numberOfStudents);
	}
}

Anh có thể giải thích giúp em sao kết quả lại là 3 ko ạ???

1 Like
public static int numberOfStudents;

Là một TRƯỜNG (field) của class Student. Nó là static nên nó không thuộc về đối tượng Student cụ thể nào mà thuộc về class.

Vì là field nên có giá trị mặc định, với int là 0, mỗi lần tạo đối tượng Student thông qua hàm tạo trong ví dụ của bạn thì numberOfStudents++; được gọi 1 lần.

6 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?