2016-11-22 12 views
6

मुझे यह बहुत ही बुनियादी सवाल पता है। लेकिन मैं इसमें बहुत उलझन में हूं। उचित रूप से मुझे वह नहीं मिल रहा है क्यों हमें स्ट्रिंग को CharArray में परिवर्तित करने की आवश्यकता है। मुझे toCharArray() विधि का काम पता है। केवल मुझे कुछ वास्तविक समय उदाहरण चाहिए कि हमें इस विधि की आवश्यकता क्यों है। मेरे प्रश्न में मैं हैशकोड के साथ charArray के संबंध को भी समझना चाहता हूं।स्ट्रिंग को charArray में बदलने की आवश्यकता क्या है?

मैं charArray प्रतिनिधित्व जानते हैं:

char[] charArray ={ 'a', 'b', 'c', 'd', 'e' }; 

उदाहरण

public class Test { 

public static void main(String args[]){ 
    String a = "bharti"; 
    char[] charArray = a.toCharArray(); 
    System.out.println(charArray); 

} 
} 

आउटपुट: भारती

मेरे लिए नहीं है कोईअंतर शर्त वेनआउटपुट और मेरी स्ट्रिंग भारती परिवर्तनीय 'ए' में।

समस्या निर्माण स्रोत:
असल में मैं एक हैश पासवर्ड तो मैं गूगल से कुछ कोड वहाँ ज्यादातर toCharArray() विधि में it.So मैं नहीं मिला प्रयोग किया जाता है पढ़ रहा था उत्पन्न करने के लिए एक कोड लिखने के लिए चाहते हैं हम इसका उपयोग क्यों कर रहे हैं।

+5

'System.out.println' के दृष्टिकोण से कोई स्पष्ट अंतर नहीं है। लेकिन कुछ एपीआई को स्ट्रिंग की बजाय सरणी की आवश्यकता हो सकती है। –

+1

शायद आप 'स्ट्रिंग' में सभी अद्वितीय पात्रों को चाहते हैं, शायद आप इसे उलटना चाहते हैं और हालांकि प्रत्येक 'char' पर लूप। सब कुछ मैं वास्तव में सवाल नहीं प्राप्त करता क्योंकि पर्याप्त उदाहरणों से अधिक हैं जहां आपको इसकी आवश्यकता होगी। – SomeJavaGuy

+0

@ केविन एशे मैं आपके उत्तर से कुछ हद तक संतुष्ट हूं। असल में मुझे केवल कुछ उदाहरणों की आवश्यकता है क्यों मुझे इस विधि का उपयोग करने की आवश्यकता है? मैं इस विधि का उपयोग कहां कर सकता हूं? मुझे लगता है कि यह मेरे प्रश्न में स्पष्ट रूप से लिखा गया है। –

उत्तर

4

String सेमें कनवर्ट करना उपयोगी है यदि आप तत्वों के क्रम के साथ कुछ करना चाहते हैं, उदाहरण के लिए sort()

स्ट्रिंग अपरिवर्तनीय है और हेरफेर के लिए बहुत उपयुक्त नहीं है।

उदाहरण के लिए:

String original = "bharti"; 
    char[] chars = original.toCharArray(); 
    Arrays.sort(chars); 
    String sorted = new String(chars); 
    System.out.println(sorted); 

जो प्रिंट:

abhirt


इसके अलावा, कुछ तरीकों/वर्गों स्पष्ट रूप से की आवश्यकता होती है एक 0,123,इनपुट के रूप में, उदाहरण के PBEKeySpec

byte[] salt = new byte[16]; 
random.nextBytes(salt); 
KeySpec spec = new PBEKeySpec("password".toCharArray(), salt, 65536, 128); 
SecretKeyFactory f = SecretKeyFactory.getInstance("PBKDF2WithHmacSHA1"); 
byte[] hash = f.generateSecret(spec).getEncoded(… 

औचित्य के लिए है कि आप स्मृति से चार [] सामग्री पोंछ कर सकते हैं। यहां अधिक जानकारी देखें: https://stackoverflow.com/a/8881376/461499

+0

आपके उत्तर के लिए धन्यवाद। अब मुझे इसका उपयोग मिल गया है। आपका जवाब सहायक है। यदि आप किसी अन्य मामले के लिए अधिक उदाहरण जोड़ते हैं तो यह बहुत आभारी होगा। –

+0

रोबाऊ मैं आपके द्वारा दिए गए PBEKeySpec उदाहरण पर काम कर रहा हूं। इसके लिए धन्यवाद्। केवल नई बाइट [16] की भूमिका को समझाएं ?? –

+0

वह नमक है। अधिक जानकारी के लिए इसे पढ़ें: http://stackoverflow.com/a/2969871/461499 – RobAu

0

आप उदाहरण के लिए, स्ट्रिंग के अंदर प्रत्येक चरित्र, न कि पूरी स्ट्रिंग की जांच करना चाहते हैं तो यह उपयोगी है:

public boolean hasDigit (String input){ 
    for (char c: input.toCharArray()){ 
     if (Character.isDigit(c)){ 
      return true; 
     } 
    } 
    return false; 
} 

इस विधि जांच करता है कि स्ट्रिंग के अंदर पात्रों में से एक एक अंक है।

+0

धन्यवाद @richardK। यह भी सहायक उत्तर है। –

0

स्ट्रिंग और charArray के बीच एक अंतर है। इन दोनों डेटा में उसी तरह से संग्रहीत किया जाता है, इसका मतलब यह नहीं है कि दोनों समान हैं। स्ट्रिंग अपरिवर्तनीय है जबकि charArray नहीं है।स्ट्रिंग को एक चार सरणी के साथ कार्यान्वित किया जाता है और प्रत्येक बार जब आप इसे संशोधित करने का प्रयास करते हैं तो यह आपको एक नई स्ट्रिंग ऑब्जेक्ट देता है। स्ट्रिंग अपने अपरिवर्तनीय गुणों के कारण कॉन्स्टेंट के रूप में व्यवहार करती है जबकि चार अरय नहीं।

दोनों के उपयोग अपनी जरूरत और आवश्यकता पर निर्भर करते हैं।

संबंधित मुद्दे