01/10/2018, 09:34

Programing language Java

mọi người cho em hỏi là tại sao khi khai báo thuộc tính trong java thì máy tự động gán giá trị cho nó vậy ạ,ví dụ như là số thì mặc định là 0,chuỗi thì mặc định là null,còn khi khai báo biến cục bộ thì nó lại không gán tự động vậy ạ

Trần Hoàn viết 11:49 ngày 01/10/2018

Vì hàm tạo thì cần khởi tạo nên hàm tạo mặc định sẽ phải khởi tạo giá trị mặc định của kiểu dữ liệu.
Ví dụ

class abc123
{
    int So;
    string Chuoi;
}

Khi khởi tạo abc123 ahjhj = new abc123(); sẽ đồng thời gọi ahjhj.So = new int();ahjhj.Chuoi = new string();

Trần Hoàn viết 11:46 ngày 01/10/2018

Nói chính xác hơn thì khi bạn khai báo, chẳng có giá trị nào cả nếu bạn không khởi tạo.

Tuấn Tử Tế viết 11:37 ngày 01/10/2018

Đây là quy tắc đối với các loại biến trong Java thôi bạn. Với các thuộc tính, biến lớp thì sẽ được gán giá trị mặc định còn biến cục bộ thì sẽ không. Còn nếu muốn hỏi tại sao thì phải gặp mấy ông viết ra Java.

Quân viết 11:41 ngày 01/10/2018

Do yêu cầu tối ưu giữa tốc độ và sự an toàn thôi

Nguyễn Văn Sang viết 11:50 ngày 01/10/2018

a trần hoàn cho em hỏi là vậy còn biến cục bộ tại sao lại ko đc khởi tạo vậy ạ

Trần Hoàn viết 11:37 ngày 01/10/2018

Hàm tạo được xây dựng như vậy để đảm bảo tất cả mọi thứ đều được khởi tạo. Nếu bạn không dùng hàm khởi tạo thì các thuộc tính hay biến lớp cũng không được khởi tạo mặc định. Ví dụ:

public class abc123
{
    public int So;
    public string Chuoi;
}

Nếu bạn viết thế này, ok

    abc123 a = new abc123();
    System.out.print(a.So);//In ra màn hình giá trị 0

Nếu bạn viết thế này, sẽ bị báo lỗi Use of unassigned local variable 'a':

    abc123 a;//a mới khai báo, chưa khởi tạo
    System.out.print(a.So);
Nguyễn Văn Sang viết 11:50 ngày 01/10/2018

vâng em hiểu rồi anh

Bài liên quan
0