2012-03-03 10 views
8

मैंने गलती से अंत में दो अर्धविरामों के साथ एक जावा कथन लिखा था। जावा कंपाइलर कोई त्रुटि नहीं दिखाता है और यह चलता है।जावा किसी कथन के अंत में डबल अर्धविराम के लिए त्रुटि क्यों नहीं दिखाता है?

कोड:

System.out.println("Length after delete the text is "+name.length());; 

सीखने प्रयोजनों के लिए मैं अर्धविराम के बाद विभिन्न पात्रों को जोड़ने की कोशिश की, और जावा संकलक टोकन पर सिंटैक्स त्रुटि के रूप में संकलन समय त्रुटि से पता चला है ")", इस टोकन को हटा दें।

यह बयान:

System.out.println("Length after delete the text is "+name.length());) 

क्यों जावा अर्धविराम और विभिन्न रूप में अन्य पात्रों का इलाज करता है?

उत्तर

28

क्योंकि एक डबल अर्धविराम को डबल अर्धविराम के रूप में नहीं माना जाता है लेकिन अर्धविराम के साथ एक खाली कथन के रूप में। और एक खाली बयान, जो कुछ भी नहीं करता है, कोई त्रुटि नहीं है।

+3

+1, ठीक है, यह कहीं भी आपके कोड के अंदर '{} {} {} {} (ब्रेसिज़ मेरा मतलब है) लिखना बहुत पसंद है। –

+1

धन्यवाद मैं अब मंजूरी दे दी। मैं आपके उत्तर जैसे कुछ संबंधित बिंदुओं को समझता हूं कि हम कथन को समाप्त करने के लिए अर्धविराम का उपयोग करते हैं लेकिन मुझे नहीं पता था कि दूसरा अर्धविराम एक खाली ऑपरेटर है। –

+2

वास्तव में, यह एक खाली ** कथन ** है। जावा में खाली अभिव्यक्ति जैसी कोई चीज़ नहीं है। –

1

; स्वयं ही एक खाली ऑपरेटर है, इसलिए आपके पास मूल मामले में प्रभावी रूप से दो ऑपरेटर हैं।

+0

धन्यवाद मैं अब मंजूरी दे दी।मैं आपके उत्तर जैसे कुछ संबंधित बिंदुओं को समझता हूं कि हम कथन को समाप्त करने के लिए अर्धविराम का उपयोग करते हैं लेकिन मुझे नहीं पता था कि दूसरा अर्धविराम एक खाली ऑपरेटर है। इस जानकारी के लिए –

+0

+1। जेएलएस संदर्भित करने के लिए –

1

अर्धविराम वाक्य समाप्त होता है।

System.out.println("Length after delete the text is "+name.length());; 

दूसरा अर्धविराम का अर्थ है कि वाक्य खाली है।

System.out.println("Length after delete the text is "+name.length());) 

गलत है क्योंकि आप एक अपूर्ण वाक्य को समाप्त करने की कोशिश कर रहे हैं।

10

जावा भाषा मानक के अनुसार, दूसरा अर्धविराम empty statement है।

An empty statement does nothing.

EmptyStatement: 
    ; 

Execution of an empty statement always completes normally.

+2

+1 –

0

क्योंकि यह त्रुटि नहीं है? आप जावा के बारे में क्यों पूछ रहे हैं? यह समान वाक्यविन्यास वाले अधिकांश भाषाओं में है ...

14

जैसा कि अन्य उत्तरों द्वारा बताया गया है, आमतौर पर दूसरे अर्धविराम को खाली कथन के रूप में व्याख्या किया जाता है, जिसे अनुमति दी जाती है जहां कभी भी एक कथन अनुमत होता है।

वास्तव में, वहाँ मामलों में जहां एक डबल अर्धविराम कोई त्रुटि उत्पन्न करता जाता है:

public int method() { 
    return 1;; 
} 

संकलक निर्धारित करता है जब कि एक स्थान पहुंच योग्य नहीं है (और यह वास्तव में JLS में परिभाषित किया गया है, लेकिन सीधे स्थान शामिल हैं return के बाद, break, continue और throw), वहां कोई कथन नहीं है, यहां तक ​​कि एक खाली भी नहीं।

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