স্ট্রিং এবং স্ট্রিং.ভালুওফের কাছে কাস্টিংয়ের মধ্যে পার্থক্য


উত্তর:


150

স্ট্রিংয়ে কাস্টিং কেবল তখন কাজ করে যখন বস্তুটি আসলে স্ট্রিং থাকে:

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

বস্তু অন্য কিছু হলে এটি কাজ করবে না:

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

String.valueOf()তবে আপনি যা যা পাস তা এটিকে রূপান্তরিত করার চেষ্টা করবে String। এটি আদিম ( 42) এবং অবজেক্টস ( new Integer(42), সেই বস্তুর ব্যবহার করে ) উভয়ই পরিচালনা করে 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"

বিশেষত শেষ উদাহরণটি নোট করুন: পাস nullকরা String.valueOf()স্ট্রিংটি ফিরিয়ে দেবে "null"


14
@ অ্যাডামস্টেলমাসজেকেক: আমার সন্দেহ আছে যে এটি প্রাসঙ্গিক। সম্ভবত ingালাই কিছুটা দ্রুত, তবে অন্যান্য পার্থক্য (নাল হ্যান্ডলিং, অন্যান্য ধরণের হ্যান্ডেল করার ক্ষমতা) যে কোনও ছোট পারফরম্যান্স পার্থক্যের চেয়ে উল্লেখযোগ্যভাবে গুরুত্বপূর্ণ।
জোছিম সউর

4
এই প্রশ্নটিকে আরও কিছুটা এগিয়ে নিয়ে যাওয়ার জন্য, কলিং String.valueOf()এবং এর মধ্যে কোনও উল্লেখযোগ্য পার্থক্য রয়েছে obj.toString()কি? (আমার মনে যে প্রথমটি আসে obj.toString()তা objহ'ল শূন্য হলে একটি ব্যতিক্রমের মাধ্যমে তা ঘটবে ))
কেভিন

4
@ কেভিন: রেফারেন্স প্রকারের জন্য (ওরফে "অবজেক্টস") কেবলমাত্র পার্থক্য যা ঘটে তার সাথে null। আপনি যদি String.valueOf()আপনার জেডিকে বাস্তবায়নের দিকে লক্ষ্য করেন তবে দেখতে পাবেন যে এটি নাল-রেফারেন্সের জন্য যা করে তা কল করা toString()
জোছিম সউর

4
str = String.valueOf(null)জাভা 7 আপডেট 80 এ চেষ্টা করা হয়েছে, এটি এ NullPointerException
রৌপ্য

4
@ সিলভার: সত্যই, আমি ওভারস্প্লিপ্লাইড করেছি। String.valueOf((Object) null)স্ট্রিং "নাল" ফিরিয়ে দেবে। আক্ষরিক সাথে এটিকে কল করলে nullস্ট্রিংকে # ভ্যালুওফ (চর []) কল করবে যা আপনি যখন পাস করবেন তখন আসলে একটি এনপিই নিক্ষেপ করবে null
জোছিম সউর

19

String.valueOf(foo)foo এর .toString()পদ্ধতিটি আহ্বান করে এবং ফলাফলটি বারে বরাদ্দ করে । এটি নাল এবং নিরাপদ অপারেশন টাইপ করুন।

হবে শুধু বরাদ্দ কাস্টিং foo বিন্যাস করতে বার , যদি ধরনের মেলা হয়। অন্যথায়, অভিব্যক্তি একটি নিক্ষেপ করবে ClassCastException


4
+1 যে String.valueOf(Object)আহ্বানগুলি বোঝানোর জন্যObject.toString()
রায়ান আমোস

4

উভয় ক্ষেত্রে একই আউটপুট উত্পন্ন String

Casting প্রদত্ত বস্তুর ক্ষেত্রে ব্যর্থ হয় না string.


3

কাস্টিংয়ের অর্থ এই যে অবজেক্টটির স্ট্রিং টাইপ হওয়া String.valueOf()দরকার, অন্য ধরণের ক্ষেত্রেও এটি নিতে পারে।


2

স্ট্রিং.ভেলিউও পদ্ধতিটি এর প্যারামিটার অবজেক্টের স্ট্রিং উপস্থাপনা পেতে ব্যবহৃত হয়।

(স্ট্রিং) মান স্ট্রিংয়ের জন্য বস্তুর মান কাস্ট করে।

নাল রেফারেন্স সম্পর্কে চিন্তা না করে আপনি কোনও স্ট্রিংয়ের স্ট্রিং প্রতিনিধিত্ব পেতে স্ট্রিং.ভালিউও পদ্ধতিটি ব্যবহার করতে পারেন। আপনি যদি নাল রেফারেন্সে স্ট্রিং কাস্ট করার চেষ্টা করেন তবে আপনি নালপয়েন্টারএক্সসেপশন পাবেন।


1
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");

আউটপুট :strCastOfObj is null


0

প্রথমটি অর্থাত্ String.valueOfযদি স্ট্রিংটি কেবল তখনই প্রত্যাশিত হয় যদি অবজেক্টটি উপস্থাপনযোগ্য টাইপ হয় যা একটি মান প্রকার বা একটি স্ট্রিং .. অন্যথায় এটি ব্যতিক্রম ছুঁড়ে দেয়।

পরেরটিতে, আপনি সরাসরি কাস্টিং করছেন যা অবজেক্ট হতে পারে যদি অবজেক্টটি স্ট্রিং না হয়।

অনলাইন উদাহরণ।

http://ideone.com/p7AGh5


কি ধরনের ব্যতিক্রম?
ইউশা আলেয়াউব

0

স্ট্রিং.ওয়ালুওফ () এ; স্ট্রিংটি ওয়ার্ক হিসাবে টাইপস্টাস্ট করে সমস্ত আর্গুমেন্টকে মান () পদ্ধতিতে পাস করে স্ট্রিংয়ে রূপান্তর করে এবং পূর্ণসংখ্যার মতো st স্ট্রিং () পূর্ণসংখ্যাকে কেবল স্ট্রিংয়ে রূপান্তর করে

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.