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]
Bài liên quan
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.
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
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
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
em dùng hàm isblank trong stringUntil. Để kiểm tra có truyền null hoặc rỗng không
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ả.
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.
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.