2012-06-18 11 views
8

पर समाप्त क्यों कोड के इस टुकड़े का प्रयास करें -println() ASCII कोड शून्य

public class WhitespaceTest 
{ 
    public static void main(String[] args) 
    { 
     int x = 0; 
     char c = (char) x; 
     System.out.println("c-->"+c+"<---this doesn't print?"); 
    } 
} 

उत्पादन होता है -

c--> 

क्यों println() ASCII कोड शून्य पर समाप्त करें?

मैं Windows 7.

+1

शायद सी-स्टाइल नल-टर्मिनेटेड तारों से अधिक हो जाती है। – Mysticial

+0

यह मेरे लिए प्रिंट करता है। \ u0000 एक शून्य चरित्र है लेकिन जावा स्ट्रिंग को शून्य के साथ समाप्त नहीं करता है। –

+0

यह मेरे लिए ठीक प्रिंट करता है ... – NominSim

उत्तर

18

तहत JCreator ले में इस की कोशिश की यह है कि आपके सांत्वना करता है (या जो कुछ भी System.out निपटने जाता है) पर निर्भर करता है। System.out सभी जानकारी को ठीक से प्रचारित करेगा, और यदि आपका कंसोल यू +0000 के लिए कोई विशेष अर्थ नहीं जोड़ता है तो सभी ठीक होंगे। हालांकि, कई UI नियंत्रण एक समाप्ति चरित्र के रूप में व्यवहार करेंगे। यह जावा की "गलती" नहीं है - यह यूआई नियंत्रण ही है।

(बस में संदर्भ के लिए, विंडोज 7 पर एक Windows कमांड प्रॉम्प्ट के भीतर उस कोड चल मेरे लिए ठीक है।)

+0

पर आउटपुट को रोक नहीं है ठीक है !! इसके लिए धन्यवाद! – CodeBlue

+9

ओएमजी यह जॉन स्कीट है! नहीं कर सकता ... रुको ... ऊपर उठाना !! –

+0

हां, बस मैंने विंडोज कमांड प्रॉम्प्ट पर कोशिश की और यह वहां काम किया। – CodeBlue

2

सी/C++ शैली तार स्ट्रिंग के अंत समाप्त अशक्त के स्थान के आधार पर निर्धारित किया जाता है -character (मूल्य 0 के साथ चरित्र, आपके मामले में)। सबसे अधिक संभावना है कि System.out.println() कॉल स्ट्रिंग को ओएस वर्बैटिम में पास करता है, जो सोचता है कि स्ट्रिंग नल-कैरेक्टर पर समाप्त होती है, और केवल उस बिंदु तक प्रिंट होती है

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