Sự khác biệt giữa
Object foo = "something";
String bar = String.valueOf(foo);
và
Object foo = "something";
String bar = (String) foo;
Sự khác biệt giữa
Object foo = "something";
String bar = String.valueOf(foo);
và
Object foo = "something";
String bar = (String) foo;
Câu trả lời:
Truyền sang chuỗi chỉ hoạt động khi đối tượng thực sự là một chuỗi:
Object reallyAString = "foo";
String str = (String) reallyAString; // works.
Nó sẽ không hoạt động khi đối tượng là thứ khác:
Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException
String.valueOf()
tuy nhiên sẽ cố gắng chuyển đổi bất cứ thứ gì bạn chuyển vào nó thành a String
. Nó xử lý cả nguyên mẫu ( 42
) và đối tượng ( new Integer(42)
, sử dụng đối tượng đó toString()
):
String str;
str = String.valueOf(new Integer(42)); // str will hold "42"
str = String.valueOf("foo"); // str will hold "foo"
Object nullValue = null;
str = String.valueOf(nullValue); // str will hold "null"
Đặc biệt lưu ý ví dụ cuối cùng: chuyển null
tới String.valueOf()
sẽ trả về chuỗi "null"
.
String.valueOf()
và obj.toString()
? (Điều đầu tiên xuất hiện trong đầu tôi là obj.toString()
sẽ thông qua một ngoại lệ nếu obj
là giá trị không.)
null
. Nếu bạn nhìn vào việc triển khai String.valueOf()
trong JDK của mình, bạn sẽ thấy rằng tất cả những gì nó làm cho các tham chiếu không null là gọi toString()
.
String.valueOf()
là tao nhã hơn một dàn diễn viên. Nhưng nếu String.valueOf()
mọi thứ diễn ra đều làm được, và hơn thế nữa, thì có lý do nào khiến người ta chọn sử dụng một diễn viên không? Tại sao nó không được dùng nữa?
String.valueOf((Object) null)
sẽ trả về Chuỗi "null". Gọi nó bằng một ký tự null
sẽ gọi String # valueOf (char []) thực sự ném NPE khi bạn chuyển vào null
.
String.valueOf(foo)
gọi phương thức của foo.toString()
và gán kết quả cho thanh . Nó là null và loại hoạt động an toàn.
Quá trình truyền sẽ chỉ gán foo cho thanh , nếu các loại khớp nhau. Nếu không, biểu thức sẽ ném ra một ClassCastException
.
String.valueOf(Object)
kêu gọi đóObject.toString()
Cả hai đều tạo ra cùng một đầu ra trong trường hợp String
.
Casting
không thành công trong trường hợp đối tượng được cung cấp không phải là string.
Phương thức String.valueOf được sử dụng để lấy lại chuỗi ký tự của đối tượng tham số của nó.
(Chuỗi) giá trị chuyển giá trị đối tượng thành chuỗi.
Bạn có thể sử dụng phương thức String.valueOf để lấy biểu diễn chuỗi của một đối tượng mà không cần lo lắng về các tham chiếu rỗng. Nếu bạn cố gắng ép kiểu String trên một tham chiếu rỗng, bạn sẽ nhận được một NullPointerException.
Cái đầu tiên, tức là, chỉ String.valueOf
trả về một chuỗi nếu đối tượng là một kiểu có thể biểu diễn là một kiểu giá trị hoặc một Chuỗi. Nếu không, nó ném ngoại lệ.
Trong cái thứ hai, bạn đang truyền trực tiếp có thể không thành công nếu đối tượng không phải là một chuỗi.
Ví dụ trực tuyến.
trong String.valueOf (); string as work typecasting tất cả đối số được truyền trong phương thức valueof () chuyển đổi trong String và giống như integer.string () chỉ chuyển đổi số nguyên thành chuỗi