-
"जुदा"
public static void main(String args[])।फ्रेशर्स के लिए लोकप्रिय जावा साक्षात्कार प्रश्नों में से एक, और बहुत आसान।
-
publicएक एक्सेस मॉडिफायर है। हम इसका उपयोग इस विधि तक पहुंच निर्दिष्ट करने के लिए करते हैं। यहां संशोधक "सार्वजनिक" है, इसलिए किसी भी वर्ग की इस पद्धति तक पहुंच है। -
static. इस जावा कीवर्ड का अर्थ है कि हम इस पद्धति का उपयोग किसी वर्ग का नया ऑब्जेक्ट बनाए बिना करते हैं। -
Voidविधि का वापसी प्रकार है। इसका मतलब है कि विधि कोई मान नहीं लौटाती है। -
mainविधि का नाम है। JVM "जानता है" यह एक आवेदन के प्रवेश बिंदु के रूप में है (इसमें एक विशेष हस्ताक्षर होना चाहिए)।Mainएक तरीका है जहां मुख्य निष्पादन होता है। -
String args[]. यह मुख्य विधि को दिया गया पैरामीटर है। यहां हमारे पास स्ट्रिंग प्रकार के तर्क हैं, जब आप इसे चलाते हैं तो आपका जावा एप्लिकेशन स्वीकार करता है। आप उन्हें टर्मिनल पर टाइप कर सकते हैं।
-
-
equals()और में क्या अंतर है==?सबसे पहले, "
==" एक ऑपरेटर है जबकिequals()एक विधि है। हम==संदर्भ तुलना (या पता तुलना) औरequals()सामग्री तुलना के लिए विधि के लिए ऑपरेटर का उपयोग करते हैं। इसका मतलब यह है कि वस्तुओं में मूल्यों की तुलना करते==समय यह जांचता है कि क्या दोनों वस्तुएं एक ही स्मृति स्थान पर इंगित करती हैं ।equals() -
क्या हम बिना विधि के किसी प्रोग्राम को निष्पादित कर सकते हैं
main()?कई जावा बेसिक इंटरव्यू प्रश्न वास्तव में आसान हैं। इसे लाईक करें। तो संक्षिप्त उत्तर है: हाँ, हम कर सकते हैं। उदाहरण के लिए हम इसे स्टैटिक ब्लॉक का उपयोग करके कर सकते हैं।
आप स्थैतिक डेटा सदस्य को प्रारंभ करने के लिए स्थैतिक ब्लॉक का उपयोग कर सकते हैं।
mainक्लास लोडिंग के समय, इसे विधि से पहले निष्पादित किया जाता है ।class Example{ Static{ System.out.println("static block is invoked"); } public static void main(String args[]){ System.out.println("Now main method"); } }आउटपुट है:
static block is invoked Now main method कुल मुख्य विधि अनुपस्थिति के बारे में क्या? यदि आप मुख्य विधि के बिना एक सामान्य वर्ग को चलाने का प्रयास करते हैं, तो आपको अगली त्रुटि मिलती है: कक्षा परीक्षण में मुख्य विधि नहीं मिली, कृपया मुख्य विधि को इस प्रकार परिभाषित करें: सार्वजनिक स्थैतिक शून्य मुख्य (स्ट्रिंग [] args) या JavaFX अनुप्रयोग वर्ग को javafx.application.Application का विस्तार करना चाहिए। त्रुटि स्वयं कहती है कि यदि यह JavaFX एप्लिकेशन है और वर्ग javafx.application.Application से विरासत में मिला है, तो यह संभव है।
-
वस्तु क्या है
immutable? क्या आपimmutableवस्तु बना सकते हैं?immutableआप किसी वर्ग की वस्तुओं को उनके निर्माण के बाद संशोधित नहीं कर सकते । इसलिए एक बार जब आप उन्हें बना लेते हैं, तो आप उन्हें बदल नहीं सकते। यदि आपImmutableवस्तु को संशोधित करने का प्रयास करते हैं तो आपको एक नई वस्तु (क्लोन) मिलती है और निर्माण के दौरान इस क्लोन को बदल दें।एक अच्छा उदाहरण है
String, यहimmutableजावा में है। इसका मतलब है कि आप वस्तु को स्वयं नहीं बदल सकते, लेकिन आप वस्तु के संदर्भ को बदल सकते हैं। -
निम्नलिखित कोड में कितने ऑब्जेक्ट बनाए गए हैं?
जावा तकनीकी साक्षात्कार प्रश्नों में से एक जो #4 को प्रतिस्थापित करता है।
String s1="Hello"; String s2="Hello"; String s3="Hello";उत्तर "केवल एक" है क्योंकि जावा में एक स्ट्रिंग पूल है। जब हम नए () ऑपरेटर का उपयोग करके एक स्ट्रिंग ऑब्जेक्ट बनाते हैं, तो यह हीप मेमोरी में एक नया ऑब्जेक्ट बनाता है। यदि हम स्ट्रिंग लिटरल सिंटैक्स का उपयोग करते हैं, जैसे हमारे उदाहरण में, यह स्ट्रिंग पूल से मौजूदा ऑब्जेक्ट को वापस कर सकता है, यदि यह पहले से मौजूद है।
-
निम्नलिखित कोड में कितने ऑब्जेक्ट बनाए गए हैं?
String s = new String("Hello");2 वस्तुएँ हैं। एक स्ट्रिंग स्थिर पूल में है (यदि पहले से मौजूद नहीं है) और दूसरा हीप में है।
-
जावा में और कक्षाओं
StringकेStringBuilderबीच क्या अंतर है ?StringBufferशीर्ष जावा साक्षात्कार प्रश्नों में से एक नेता है।
सबसे पहले
Stringएक अपरिवर्तनीय वर्ग है। इसका मतलब है कि एक बार बनने के बाद आप इसकी सामग्री को संशोधित नहीं कर सकते। जबकिStringBufferऔरStringBuilderपरिवर्तनशील वर्ग हैं, इसलिए आप उन्हें बाद में बदल सकते हैं। यदि हमStringवस्तु की सामग्री बदलते हैं, तो यह एक नई स्ट्रिंग बनाता है इसलिए यह मूल को संशोधित नहीं करता है। इसलिए साथ का प्रदर्शनStringBufferसाथ से बेहतर हैString।StringBufferऔरStringBuilderthatStringBufferके तरीकों के बीच मुख्य अंतर सिंक्रनाइज़ हैं जबकिStringBuilderके नहीं हैं। -
क्या इसमें कोई अंतर है
Stringजो शाब्दिक औरnew()ऑपरेटर के साथ बनाया गया था?वहाँ है। यदि हम
new()ऑपरेटर के साथ एक स्ट्रिंग बनाते हैं, तो यह हीप और स्ट्रिंग पूल में दिखाई देता है (यदि पहले से मौजूद नहीं है)। यदि आपStringशाब्दिक का उपयोग करते हुए बनाते हैं, तो यह स्ट्रिंग पूल में बनाया जाता है (यदि पहले से मौजूद नहीं है)। एक स्ट्रिंग पूल हीप के भीतर एक स्टोरेज एरिया है, जो स्ट्रिंग लिटरल को स्टोर करता है। -
क्या आप जावा में ओवरराइड
privateया विधि कर सकते हैं?staticनौसिखियों के लिए जावा ट्रिकी साक्षात्कार प्रश्नों में से एक। आप वास्तव में जावा में ओवरराइड
privateया विधि नहीं कर सकते हैं।staticआप विधियों को ओवरराइड नहीं कर सकते
privateक्योंकि निजी एक्सेस विनिर्देशक का दायरा केवल कक्षा के भीतर है। जब आप किसी चीज को ओवरराइड करने जा रहे हैं, तो हमारे पास पैरेंट और चाइल्ड क्लास होनी चाहिए। यदि सुपरक्लास की विधि हैprivate, तो चाइल्ड क्लास इसका उपयोग नहीं कर सकता है, और चाइल्ड क्लास के तरीकों को नए तरीकों के रूप में माना जाएगा (ओवरराइड नहीं)।Staticमेथड्स को भी ओवरराइड नहीं किया जा सकता है, क्योंकिstaticमेथड्स क्लास का ही हिस्सा हैं, न कि क्लास के किसी ऑब्जेक्ट का हिस्सा। सुनिश्चित करें कि आपstaticबाल वर्गों में समान हस्ताक्षर के साथ समान विधि घोषित कर सकते हैं, लेकिन फिर से, उन्हें नए तरीकों के रूप में माना जाएगा। -
Abstract Classऔर में अंतरInterfaceलोकप्रिय जावा डेवलपर साक्षात्कार प्रश्नों में से एक जो ओओपी सिद्धांतों पर आधारित है। सबसे पहले, जावा में
interfaceएक व्यवहार को परिभाषित करता है औरabstract classपदानुक्रम बनाता है।सार वर्ग इंटरफेस अमूर्त वर्ग में एक विधि निकाय (गैर-अमूर्त विधियाँ) होना संभव है इंटरफ़ेस में केवल अमूर्त विधियाँ हो सकती हैं। जावा 8 या नए में, डिफ़ॉल्ट तरीकों को परिभाषित करना और उन्हें सीधे इंटरफ़ेस में लागू करना संभव हो गया है। इसके अलावा, जावा 8 में इंटरफेस में स्थिर तरीके हो सकते हैं। इंस्टेंस चर सार वर्ग में हो सकते हैं एक इंटरफ़ेस में आवृत्ति चर नहीं हो सकते। कंस्ट्रक्टर्स को अनुमति है इंटरफ़ेस में कोई कन्स्ट्रक्टर नहीं हो सकता है। स्थैतिक तरीकों की अनुमति है स्थैतिक तरीकों की अनुमति नहीं है कक्षा में केवल एक अमूर्त अभिभावक हो सकता है एक इंटरफ़ेस विभिन्न वर्गों को लागू कर सकता है अमूर्त वर्ग इंटरफ़ेस का कार्यान्वयन प्रदान कर सकता है। इंटरफ़ेस अमूर्त वर्ग का कार्यान्वयन प्रदान नहीं कर सकता है। एक सार वर्ग को अन्य जावा वर्ग का विस्तार करने और कई जावा इंटरफेस को लागू करने की अनुमति है। एक इंटरफ़ेस को केवल अन्य जावा इंटरफ़ेस का विस्तार करने की अनुमति है। एक जावा सार वर्ग में निजी और संरक्षित वर्ग के सदस्य हो सकते हैं जावा इंटरफ़ेस के सदस्य डिफ़ॉल्ट रूप से सार्वजनिक होते हैं -
क्या हम कक्षा
staticमें चर और विधियों की घोषणा कर सकते हैंabstract?staticहां, चर और विधियों कोabstractविधि में घोषित करना संभव है । स्थिर संदर्भ तक पहुँचने के लिए किसी वस्तु को बनाने की कोई आवश्यकता नहीं है। इसलिए हमें वर्गabstractके नाम का उपयोग करके कक्षा के अंदर घोषित स्थिर संदर्भ तक पहुँचने की अनुमति है ।abstract -
जेवीएम द्वारा किस प्रकार के मेमोरी क्षेत्र आवंटित किए जाते हैं?
क्लास एरिया प्रतिवर्ग संरचनाओं को संग्रहीत करता है, उदाहरण के लिए, रनटाइम निरंतर पूल, फ़ील्ड्स, विधि डेटा और विधियों के लिए सभी कोड।
हीप एक रनटाइम डेटा क्षेत्र है जहां वस्तुओं को मेमोरी आवंटित की जाती है।
स्टैक स्टोर फ्रेम। इसमें स्थानीय चर और आंशिक परिणाम शामिल हैं, और विधि मंगलाचरण और वापसी में भाग लेता है। प्रत्येक थ्रेड में एक निजी JVM स्टैक होता है, जिसे उसी समय थ्रेड के रूप में बनाया जाता है। हर बार एक विधि लागू होने पर एक नया फ्रेम बनाया जाता है। इसकी विधि आमंत्रण पूर्ण होने पर एक फ्रेम नष्ट हो जाता है।
प्रोग्राम काउंटर रजिस्टर में वर्तमान में निष्पादित जावा वर्चुअल मशीन निर्देश का पता होता है।
नेटिव मेथड स्टैक में वे सभी नेटिव तरीके होते हैं जो एप्लिकेशन में उपयोग किए जाते हैं।
-
जावा में एकाधिक वंशानुक्रम की अनुमति क्यों नहीं है?
यह वास्तव में जटिल होगा। तीन वर्गों की कल्पना करें
A,B, औरCऔरCइनहेरिट करेंAऔरB। अब,AऔरBकक्षाओं में एक ही विधि है और आप इसे चाइल्ड क्लास ऑब्जेक्ट से कॉल करते हैं... कौन सा?Aहै याBहै? यहाँ हमारे पास अस्पष्टता है।यदि आप दो वर्गों को प्राप्त करने का प्रयास करते हैं तो जावा संकलन समय त्रुटि प्रस्तुत करता है।
-
क्या हम
main()विधि को अधिभारित कर सकते हैं?ज़रूर, हमें
mainजावा प्रोग्राम में मेथड ओवरलोडिंग का उपयोग करके कई तरीके रखने की अनुमति है। कोशिश करके देखो! -
क्या हम कन्स्ट्रक्टर घोषित कर सकते हैं
final?नहीं। एक कंस्ट्रक्टर को घोषित नहीं किया जा सकता
finalक्योंकि इसे इनहेरिट नहीं किया जा सकता है। इसलिए कंस्ट्रक्टर्स कोfinal. हालाँकि, यदि आप इसे करने का प्रयास करते हैं, तो जावा कंपाइलर आपको एक त्रुटि देता है। -
क्या हम एक इंटरफ़ेस घोषित कर सकते हैं
final?नहीं, हम ऐसा नहीं कर सकते। एक इंटरफ़ेस नहीं हो सकता
finalक्योंकि इंटरफ़ेस को किसी वर्ग द्वारा उसकी परिभाषा के अनुसार लागू किया जाना चाहिए। इसलिए, इंटरफ़ेस बनाने का कोई मतलब नहीं हैfinal। हालाँकि, यदि आप ऐसा करने का प्रयास करते हैं, तो कंपाइलर एक त्रुटि दिखाएगा। -
static bindingऔर में क्या अंतर हैdynamic binding?जिसे
bindingसंकलन समय पर संकलक द्वारा हल किया जा सकता है, उसेstaticअर्ली बाइंडिंग कहा जाता है।Bindingसभीstatic,privateऔरfinalविधियों का संकलन-समय पर किया जाता है।कंपाइलर में
Dynamic bindingकॉल करने के लिए कोई विधि नहीं चुन सकता है। ओवरराइडिंग इसका एक आदर्श उदाहरण हैdynamic binding। माता-पिता और बच्चे दोनों वर्गों को ओवरराइड करने में एक ही विधि होती है।Static Binding class Cat{ private void talk() {System.out.println("cat is mewing..."); } public static void main(String args[]){ Cat cat=new Cat(); cat.talk(); } } Dynamic Binding class Animal{ void talk(){ System.out.println("animal is talking..."); } } class Cat extends Animal{ void talk(){ System.out.println("cat is talking..."); } public static void main(String args[]){ Animal animal=new Cat(); animal.talk(); } } -
जावा में रीड-ओनली क्लास कैसे बनाएं?
आप कक्षा के सभी क्षेत्रों को निजी बनाकर ऐसा कर सकते हैं। रीड-ओनली क्लास में केवल गेट्टर मेथड्स होते हैं जो क्लास की प्राइवेट प्रॉपर्टी को
mainमेथड में लौटाते हैं। आप इस संपत्ति को संशोधित करने में सक्षम नहीं हैं, इसका कारण सेटर्स विधि की कमी है।public class HockeyPlayer{ private String team ="Maple leaf"; public String getTeam(){ return team; } } -
जावा में केवल-लेखन वर्ग कैसे बनाएं?
फिर से, आपको कक्षा की सभी फ़ील्ड बनानी चाहिए
private। अब, आपके केवल-लिखने वाले वर्ग में केवल सेटर विधियाँ होनी चाहिए और कोई गेटर्स नहीं होना चाहिए। इसलिए, हम वर्ग के गुण नहीं पढ़ सकते।public class HockeyPlayer{ private String team; public void setTeam(String college){ this.team = team; } } -
प्रत्येक
tryब्लॉक के बाद एकcatchब्लॉक होना चाहिए, है ना?नहीं। यह कोई आवश्यकता नहीं है। प्रत्येक-
tryब्लॉक बिनाcatchब्लॉक के हो सकता है। इसके बाद कैचब्लॉक या अंत में ब्लॉक या उनके बिना भी हो सकता है।public class Main{ public static void main(String []args){ try{ int variable = 1; System.out.println(variable/0); } finally { System.out.println("the other part of the program..."); } } }आउटपुट:
Exception in thread main java.lang.ArithmeticException:/ by zero the other part of the program...
एक और उदाहरण:class Main { public static void main(String[] args) throws IOException { try(InputStreamReader inputStreamReader = new InputStreamReader(System.in); BufferedReader reader = new BufferedReader(inputStreamReader)){ System.out.println("test"); } } }आउटपुट:
test
पीएस: जावा से पहले इंटरफेस में 8 विधियां केवल सार हो सकती थीं। जावा 8 या नए में, डिफ़ॉल्ट विधियों को परिभाषित करना और उन्हें सीधे इंटरफ़ेस में लागू करना संभव हो गया है। -
throwऔर कीवर्ड में क्या अंतर हैthrows?Throwsअपवाद घोषित करने के लिए प्रयोग किया जाता है, इसलिए यहtry-catchब्लॉक के समान काम करता है।Throwकिसी विधि या कोड के किसी अन्य ब्लॉक से अपवाद को स्पष्ट रूप से फेंकने के लिए कीवर्ड का उपयोग किया जाता है।Throwइसके बाद क्लास का उदाहरण आता हैExceptionऔर थ्रो के बाद अपवाद क्लास का नाम आता है।Throwअपवाद फेंकने के लिए विधि निकाय में उपयोग किया जाता है।Throwsविधि में मौजूद बयानों में होने वाले अपवादों को घोषित करने के लिए विधि हस्ताक्षर में उपयोग किया जाता है।एक समय में एक अपवाद को फेंकने की अनुमति है लेकिन आप
throwकीवर्ड का उपयोग करके उन्हें घोषित करके कई अपवादों को संभाल सकते हैं। आप कई अपवादों की घोषणा कर सकते हैं, जैसेpublic void method()throws IOException,।SQLException
GO TO FULL VERSION