[Вопросы по практике Java] Вывод программ Java | Седьмой набор (включая анализ)

Java задняя часть
[Вопросы по практике Java] Вывод программ Java | Седьмой набор (включая анализ)

«Эта статья участвовала в мероприятии Haowen Convocation Order, щелкните, чтобы просмотреть:Заявки на бэк-энд и фронт-энд с двумя треками, призовой фонд в 20 000 юаней ждет вас, чтобы бросить вызов! "

Уровень сложности: средний

Предскажите вывод следующей программы Java:

проблема

Вопрос первый

public class Calculator
{
	int num = 100;
	public void calc(int num) { this.num = num * 10; }
	public void printNum()	 { System.out.println(num); }

	public static void main(String[] args)
	{
		Calculator obj = new Calculator();
		obj.calc(2);
		obj.printNum();
	}
}

Опции:

A) 20
B) 100
C) 1000
D) 2

Нажмите здесь, чтобы перейти к ответу

Вопрос второй

public class MyStuff
{
	String name;

	MyStuff(String n) { name = n; }

	public static void main(String[] args)
	{
		MyStuff m1 = new MyStuff("guitar");
		MyStuff m2 = new MyStuff("tv");
		System.out.println(m2.equals(m1));
	}

	@Override
	public boolean equals(Object obj)
	{
		MyStuff m = (MyStuff) obj;
		if (m.name != null) { return true; }
		return false;
	}
}

Опции:

A) Вывод верен, MyStuff выполняет контракт Object.equals().
Б) Вывод ложный, и MyStuff выполняет контракт Object.equals().
C) Вывод верен, и MyStuff не выполняет контракт Object.equals().
D) Вывод ложный, и MyStuff не выполняет контракт Object.equals().

Нажмите здесь, чтобы перейти к ответу

Вопрос третий

class Alpha
{
	public String type = "a ";
	public Alpha() { System.out.print("alpha "); }
}

public class Beta extends Alpha
{
	public Beta() { System.out.print("beta "); }

	void go()
	{
		type = "b ";
		System.out.print(this.type + super.type);
	}

	public static void main(String[] args)
	{
		new Beta().go();
	}
}

Опции:

A) alpha beta bb
B) alpha beta ab
C) beta alpha bb
D) beta alpha ab

Нажмите здесь, чтобы перейти к ответу

Вопрос четвертый

public class Test
{
	public static void main(String[] args)
	{
		StringBuilder s1 = new StringBuilder("Java");
		String s2 = "Love";
		s1.append(s2);
		s1.substring(4);
		int foundAt = s1.indexOf(s2);
		System.out.println(foundAt);
	}
}

Опции:

A) -1
B) 3
C) 4
D) Генерировать исключение StringIndexOutOfBoundsException во время выполнения.

Нажмите здесь, чтобы перейти к ответу

Проблема

class Writer
{
	public static void write()
	{
		System.out.println("Writing...");
	}
}
class Author extends Writer
{
	public static void write()
	{
		System.out.println("Writing book");
	}
}

public class Programmer extends Author
{
	public static void write()
	{
		System.out.println("Writing code");
	}

	public static void main(String[] args)
	{
		Author a = new Programmer();
		a.write();
	}
}

Опции:

А) Письмо…
B) Writing book
C) Writing code
D) Compilation fails

Нажмите здесь, чтобы перейти к ответу


Поместите картинку милой девушки для снятия усталости глаз.Вторая половина статьи - вывод и разбор программы

9992fc8fbcb7d37eac355b3c01f68bb3.jpg


вывод и разбор

вопрос ответ

Отвечать:

A) 20

объяснять:

Имя переменной экземпляра класса (num) здесь совпадает с именем локальной переменной (num) метода calc(). Таким образом, для ссылки на переменную экземпляра класса из метода calc() используется это ключевое слово. Итак, в выражении this.num = num * 10, num представляет локальную переменную метода, и ее значение равно 2, а this.num представляет переменную экземпляра класса, и ее начальное значение равно 100. Теперь в методе printNum(), поскольку у него нет имени локальной переменной, такого же, как у переменной экземпляра класса, мы можем напрямую использовать num для ссылки на переменную экземпляра, хотя this.num можно использовать.

Вопрос два ответа

Отвечать:

C) 输出为真,MyStuff 不履行 Object.equals() 合同。

инструкция:

Как и метод equals(Object obj) в классе Object, два объекта сравниваются в соответствии с отношением эквивалентности. Но здесь мы просто подтверждаем, что объект пуст, поэтому он не выполняет контракт Object.equals(). Поскольку m1 не пусто, будет напечатано true.

Вопрос три ответа

Отвечать:

A) alpha beta bb

объяснять:

Оператор new Beta().go() выполняется в два этапа. На первом этапе вызывается конструктор класса Beta. Элементы экземпляра не существуют в бета-классах. Итак, теперь выполняется конструктор класса Beta. Поскольку класс Beta расширяет класс Alpha, вызывается конструктор класса Alpha, потому что первым оператором (размещенным компилятором) по умолчанию является super() в конструкторе класса Beta. Теперь, поскольку в классе Alpha есть переменная экземпляра (тип), она получит память, теперь выполняется конструктор класса Alpha, а затем вызывается следующий оператор, возвращающий конструктор класса Beta. Итак, альфа-бета печатается.

На втором этапе для этого объекта вызывается метод go(). Поскольку в объекте есть только одна переменная (тип), ее значение равно a. Таким образом, он будет изменен на b и напечатан дважды. Супер ключевое слово здесь бесполезно.

Вопрос четыре ответа

Отвечать:

 C) 4

инструкция:

метод append(String str), объединяет строку str с s1. Метод sub(int index) возвращает строку от начала до конца по заданному индексу. Но так как нет строковой переменной для хранения возвращаемой строки, она уничтожается. Теперь метод indexOf(String s2) возвращает индекс первого вхождения s2. Итак, 4 печатается как s1="JavaLove".

Вопрос пять ответов

Отвечать:

B) Writing book

инструкция:

Поскольку статические методы нельзя переопределить, не имеет значения, какой объект класса создается. Поскольку a является ссылочным типом Author, всегда вызывается метод класса Author. Если мы удалим метод write() из класса Author, будет вызван метод класса Writer, потому что класс Author расширяет класс Writer.


Статьи по Теме:

[Вопросы по практике Java] Вывод программ на Java | Первый набор (включая синтаксический анализ)

[Вопросы по практике Java] Вывод программ Java | Второй набор (включая синтаксический анализ)

[Вопросы по практике Java] Вывод Java-программ | Третий набор (включая синтаксический анализ)

[Вопросы по практике Java] Вывод программ Java | Четвертый набор (включая анализ)

[Вопросы по практике Java] Вывод Java-программ | Пятый набор (включая анализ)

[Вопросы по практике Java] Вывод Java-программ | Шестой набор (включая синтаксический анализ)

Я давно веду блог о технологиях, и это одна из моих технических статей/руководств. Надеюсь, вам это понравится! Вот краткое изложение всех моих оригинальных и исходных кодов работ:GitHub,Gitee

Если вы действительно узнали что-то новое из этой статьи, ставьте лайк, добавляйте в закладки и делитесь с друзьями. 🤗Наконец, не забудьте поддержать ❤ или 📑