Różnica między odlewaniem na Sznurek i sznurek.wartość

Jaka jest różnica między

Object foo = "something";
String bar = String.valueOf(foo);

I

Object foo = "something";
String bar = (String) foo;
Author: Matt, 2013-05-29

8 answers

Casting Do string działa tylko wtedy, gdy obiekt faktycznie jest ciągiem:

Object reallyAString = "foo";
String str = (String) reallyAString; // works.

Nie zadziała, gdy obiekt jest czymś innym:

Object notAString = new Integer(42);
String str = (String) notAString; // will throw a ClassCastException

String.valueOf() jednak będzie starał się przekształcić to, co w nim przekazać do String. Obsługuje zarówno primitives (42), jak i objects (new Integer(42), używając tego obiektu 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"

Uwaga szczególnie ostatni przykład: przejście null do String.valueOf() zwróci łańcuch "null".

 124
Author: Joachim Sauer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-09-28 11:19:23

String.valueOf(foo) wywołuje metodę foo i przypisuje wynik do paska . Jest to null i typ bezpiecznej pracy.

Casting po prostu przypisze foo do paska , jeśli typy są pasujące. W przeciwnym razie wyrażenie rzuci ClassCastException.

 15
Author: darijan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-25 15:30:44

Oba generują to samo wyjście W przypadku String.

Casting błąd w przypadku, gdy podany obiekt nie jest string.

 3
Author: ꜱᴜʀᴇꜱʜ ᴀᴛᴛᴀ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 13:42:17

Casting oznacza, że obiekt musi być typu String, podczas gdy {[0] } może przyjmować również inne typy.

 2
Author: tstorms,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 13:32:45

String.metoda valueOf służy do uzyskania reprezentacji łańcuchowej obiektu parametru.

(String) wartość rzuca wartość obiektu na string.

Możesz użyć ciągu.valueOf metoda, aby uzyskać reprezentację łańcuchową obiektu bez martwienia się o odwołania null. Jeśli spróbujesz rzucić ciąg znaków na odniesienie null, otrzymasz wyjątek NullPointerException.

 2
Author: Syamantak Basu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 13:36:57
final Object obj = null;
final String strValOfObj = String.valueOf(obj);
final String strCastOfObj = (String) obj;
if (strValOfObj == null) System.out.println("strValOfObj is null");
if (strCastOfObj == null) System.out.println("strCastOfObj is null");

Wyjście: strCastOfObj is null

 1
Author: Zaki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-22 11:02:26

Pierwszy tzn. String.valueOf zwraca łańcuch tylko wtedy, gdy obiekt jest reprezentowalnym typem, który jest typem wartości lub łańcuchem znaków.. W przeciwnym razie rzuca wyjątek.

W tym drugim rzucasz bezpośrednio, co może się nie udać, jeśli obiekt nie jest ciągiem.

Przykład Online.

Http://ideone.com/p7AGh5

 0
Author: Sri Harsha Chilakapati,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-29 13:33:47

In String.valueOf (); string as work typecasting wszystkie argumenty przekazane w metodzie valueof () przekonwertować W String i tak jak integer.string() Konwertuj liczbę całkowitą tylko na string

 0
Author: anuragsingh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-09-13 08:25:06