30/09/2018, 18:47

Sự khác nhau giữa null và "" trong java

//đây là class Sinh viên
public SinhVien(int mssv, String hoTen, float diemLT, float diemTH) throws Exception
	{
		if(mssv < 0)
			throw new Exception("ma so sv khong duoc nho hon 0!");
		if(hoTen==null) //kiểm tra họ tên rỗng
			throw new Exception("ho ten sv khong duoc rong!");
		if(diemLT < 0)
			throw new Exception("diem ly thuyet khong duoc nho hon 0!");
		if(diemTH < 0)
			throw new Exception("diem thuc hanh khong duoc nho hon 0!");
		
	}
//đây là class test sinh viên
public class SinhVien_Program {

	public static void main(String[] args) {
		try {
			SinhVien sv= new SinhVien(0, "", 0, 0); 
			System.out.println(sv);
		} catch (Exception e) {
			System.out.println(e.toString());
		}

	}

}

Mọi người cho em hỏi bên contructor SinhVien em đã kiểm tra hoTen==null mà sao ở class SinhVien_Progarm em truyền vào ""(rỗng) thì nó vẫn in ra đúng là
SinhVien [mssv=0, hoTen=null, diemLT=0.0, diemTH=0.0]

vũ xuân quân viết 20:55 ngày 30/09/2018

Vì kiểu String là một kiểu data object nên khi em gán giá trị rỗng thì sẽ được hiểu là null.

Interns viết 20:57 ngày 30/09/2018

Vậy bên contructor em phải kiểm tra điều kiện như thế để khi truyền vào rỗng hay chuỗi mà chứa toàn khoảng trắng thì throw Exception được anh

Cương Nguyễn viết 20:59 ngày 30/09/2018

Không phải, do em truyền vào nhưng có gán giá trị đâu? nên các biến của e vẫn giữa giá trị mặc định.
kiểu int -> 0
kiểu String -> null
kiểu float -> 0.0

Interns viết 21:01 ngày 30/09/2018

Em hiểu chỗ này rồi nhưng em muốn khi truyền tham số hoTen vào là rỗng hay chuỗi mà chứa toàn khoảng trắng thì nó phải throw Exception được, vậy bên contructor em phải kiểm tra điều kiện ở hoTen như thế nào anh

vũ xuân quân viết 20:56 ngày 30/09/2018

em dùng hàm isblank trong stringUntil. Để kiểm tra có truyền null hoặc rỗng không

Cương Nguyễn viết 20:55 ngày 30/09/2018

Dùng StringUtils cũng được nhưng e phải thêm thư viện common-lang
còn không thì check tay thôi
if (hoTen == null || “”.equals(hoTen.trim())) {
throw Exception
}

String là một reference variable nghĩa là bản thân String lưu một địa chỉ ô nhớ và trong ô nhớ đó có chứa dữ liệu kiểu string.
=> String a = null; // a không lưu gì bên trong cả
=> String b = “”; // b đang lưu một địa chỉ ô nhớ. Ô nhớ này có kiểu string và không lưu gì bên trong cả.

Cương Nguyễn viết 20:56 ngày 30/09/2018

String là một reference variable nghĩa là bản thân String lưu một địa chỉ ô nhớ và trong ô nhớ đó có chứa dữ liệu kiểu string.

Bạn giải thích khó hiểu quá :v, Không phải “String là một reference variable” mà là “1 Reference variable kiểu String”. Ref variable này lưu một địa chỉ ô nhớ của String Object.

Quân viết 20:49 ngày 30/09/2018

chỉ có biến không gán gì mới là null thôi bạn à, null nghĩa là k cso gì cả, còn bạn gán “” vào rồi thì nó là có gì rồi

Đúng là nói theo cách kia dễ hiểu hơn thật.

Bài liên quan
0