Ниво на трудност : Средно ниво
Предскажете изхода на следните 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() извиква метода in хлапе клас, тъй като по подразбиране 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 блокът не се извиква, а the накрая блок винаги се изпълнява след блок за опит, независимо дали изключението е обработено или не.
Програма 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 тогава в клас Две първият метод за изпълнение изпълнява нишката с името gfg1 след това се създава нова нишка, извикваща метод за изпълнение, но тъй като нова нишка може да бъде създадена чрез извикване само на метод за стартиране, така че предишната нишка извършва действието и отново gfg1 се отпечатва. Сега се създава нова нишка чрез извикване на метода start, така че нова нишка започва с gfg3 име и следователно отпечатъци gfg3 .
прочетете csv файла в java