Ниво на трудност: средно
Предскажете изхода на следните Java програми.
равенство на обекти в java
Програма 1: Верижно свързване на конструктори
Java
class First { public First() { System.out.println('a'); } } class Second extends First { public Second() { System.out.println('b'); } } class Third extends Second { public Third() { System.out.println('c'); } } public class MainClass { public static void main(String[] args) { Third c = new Third(); } }
Изход
a b c
Обяснение: Когато се създаде „Трети“ обект преди извикването на конструктора по подразбиране на трето class конструкторът по подразбиране на суперклас, т.е. Второ клас се извиква и след това отново преди конструктора по подразбиране на конструктора по подразбиране на супер клас Първо клас се нарича. И следователно изходът е в реда a b c.
Програма 2: Инициализация на променливи и изпълнение на конструктор
Javaclass First { int i = 10; public First(int j) { System.out.println(i); this.i = j * 10; } } class Second extends First { public Second(int j) { super(j); System.out.println(i); this.i = j * 20; } } public class MainClass { public static void main(String[] args) { Second n = new Second(20); System.out.println(n.i); } }
Изход
10 200 400
Обяснение: Тъй като във „Втория“ клас той няма собствено „i“, променливата е наследена от супер класа. Също така конструкторът на родител се извиква, когато създаваме обект на Второ.
Програма 3: instanceof с итератори
Javaimport java.util.*; class Geeks { public static void main (String[] args) { Object i = new ArrayList().iterator(); System.out.print((i instanceof List) + ' '); System.out.print((i instanceof Iterator) + ' '); System.out.print(i instanceof ListIterator); } }
Изход
false true false
Обяснение: The итератор() метод връща итератор върху елементите в списъка в правилна последователност, той не връща обект List или ListIterator. А ListIterator може да се получи чрез извикване на метода listIterator.
bash дължина на низа
Програма 4: Изключение при стартиране и спиране на нишка
Javaclass ThreadEx extends Thread { public void run() { System.out.print('Hello...'); } public static void main(String args[]) { ThreadEx T1 = new ThreadEx(); T1.start(); T1.stop(); T1.start(); } }
Изход:
Run Time Exception
Обяснение: Една нишка не може да бъде стартирана повече от веднъж. Обаждане начало() метод на спряна нишка причини IllegalThreadStateException .