רמת קושי : בינוני
חזה את הפלט של תוכניות Java הבאות.
תוכנית 1:
class GfG { public static void main(String args[]) { String s1 = new String('geeksforgeeks'); String s2 = new String('geeksforgeeks'); if (s1 == s2) System.out.println('Equal'); else System.out.println('Not equal'); } }
תְפוּקָה:
Not equal
הֶסבֵּר: מכיוון ש- s1 ו- s2 הם שני אובייקטים שונים, ההפניות אינן זהות והאופרטור == משווה התייחסות לאובייקט. אז זה מדפיס 'לא שווה' כדי להשוות את התווים בפועל בשיטת .equals() מחרוזת יש להשתמש.
תוכנית 2:
Java
class Person { private void who() { System.out.println('Inside private method Person(who)'); } public static void whoAmI() { System.out.println('Inside static method Person(whoAmI)'); } public void whoAreYou() { who(); System.out.println('Inside virtual method Person(whoAreYou)'); } } class Kid extends Person { private void who() { System.out.println('Kid(who)'); } public static void whoAmI() { System.out.println('Kid(whoAmI)'); } public void whoAreYou() { who(); System.out.println('Kid(whoAreYou)'); } } public class Gfg { public static void main(String args[]) { Person p = new Kid(); p.whoAmI(); p.whoAreYou(); } }
תְפוּקָה:
Inside static method Person(whoAmI) Kid(who) Kid(whoAreYou)
הֶסבֵּר: כריכה סטטית (או זמן קומפילציה) מתרחשת עבור שיטות סטטיות. כָּאן p.whoAmI() קורא למתודה הסטטית כך שהיא נקראת בזמן הקומפילציה ומכאן מביאה לכריכה סטטית ומדפיסה את השיטה במחלקה Person.
ואילו p.whoAreYou() קורא לשיטה פנימה יֶלֶד מחלקה שכן כברירת מחדל Java לוקחת אותה כשיטה וירטואלית כלומר כריכה דינמית.
תוכנית 3:
class GfG { public static void main(String args[]) { try { System.out.println('First statement of try block'); int num=45/3; System.out.println(num); } catch(Exception e) { System.out.println('Gfg caught Exception'); } finally { System.out.println('finally block'); } System.out.println('Main method'); } }
תְפוּקָה:
First statement of try block 15 finally block Main method
הֶסבֵּר:
מכיוון שאין יוצא מן הכלל לבלוק ה-catch לא נקרא אלא ה לְבָסוֹף בלוק מבוצע תמיד לאחר חסימת ניסיון בין אם החריגה מטופלת או לא.
תוכנית 4:
class One implements Runnable { public void run() { System.out.print(Thread.currentThread().getName()); } } class Two implements Runnable { public void run() { new One().run(); new Thread(new One()'gfg2').run(); new Thread(new One()'gfg3').start(); } } class Three { public static void main (String[] args) { new Thread(new Two()'gfg1').start(); } }
תְפוּקָה:
gfg1gfg1gfg3
הסבר: בהתחלה שרשור חדש מתחיל עם השם gfg1 ואז ב-class Two שיטת הריצה הראשונה מריץ את השרשור עם השם gfg1 ואז אחרי זה נוצר שרשור חדש שקורא לשיטת הפעלה אבל מכיוון שניתן ליצור שרשור חדש על ידי קריאה לשיטת התחל בלבד אז השרשור הקודם עושה את הפעולה ושוב gfg1 מודפס. כעת נוצר שרשור חדש על ידי קריאה לשיטת ההתחלה כך שרשור חדש מתחיל עם gfg3 שם ומכאן הדפסים gfg3 .
חיבור ג'אווה של מסד נתונים