Essential Flashcards

1
Q

Чувствителен ли Java к регистру идентификаторов ?

Например, идентификатор Hello и hello интерпретируются одинаково или нет ?

A

Не одинаково. Java регистрочуствителен

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Как правильно называть классы ?

A
  1. Первая буква в верхнем регистре
  2. Каждое слово в названии начинается с буквы в верхнем регистре.

например, «MyJavaClass».

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Как правильно называть методы ?

A
  1. Первая буква в нижнем регистре
  2. Начиная со второго, каждое слово в названии метода должно начинаться с буквы в верхнем регистре

например, «public void myMethodName()».

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Как должен называться файл с java кодом, чтобы программа скомпилировалась верно ?

A

Имя файла должно совпадать с именем класса

например, «MyJavaProgram» — это название класса, тогда файл должен быть сохранен как «MyJavaProgram.java».

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

С чего начинается обработка и выполнение java программы ?

A

public static void main(String args[]) — обработка программы начинается с метода main(), который является обязательной частью каждой программы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Как объявить перечисление ?

A

создать переменную типа enum

class FreshJuice {

enum FreshJuiceSize{ SMALL, MEDIUM, LARGE } //переменная-перечисление
FreshJuiceSize size; // переменная с типом значения - перечисление
}

public class FreshJuiceTest {

   public static void main(String args[]){
      FreshJuice juice = new FreshJuice();
      juice.size = FreshJuice.FreshJuiceSize.MEDIUM; // одно из значений перечисления
      System.out.println("Размер: " + juice.size);
   }
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Какие существуют типы переменных ?

A

Локальные
Переменные класса (статические)
Переменные экземпляра (динамические)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Как задать однострочный комментарий ?

A

// комментарий

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Как задать многострочный комментарий ?

A

/*это

  • многострочный
  • / комментарий
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Какая строка считается пустой ?

A

строка, содержащая комментарии и только пробелы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Что такое локальная переменная ?

A

переменные, определенные внутри методов, конструкторов или блоков.

Они будут объявлены и инициализированы в методе, и будут уничтожены, когда метод завершится.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Что такое переменная экземпляра ?

A

Переменная на уровне класса, она инициализируется при создании экземпляра класса и доступна внутри любого метода класса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Что такое переменная класса ?

A

это статичная переменная класса. Инициализируется при создании класса

public static int myVar;

и доступна через точку от имени класса

MyClass.myVar

При создании экземпляров класса переменная класса не пересоздается, а используется ее единственный экземпляр, созданный при создании класса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Что такое конструктор класса ?

A

Это метод класса, который называется также как и сам класс. Их может быть несколько.
Конструктор вызывается при создании экземпляра класса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Сколько публичных классов public class может быть в исходном файле программы ?

A

только один

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Сколько не публичных классов может быть в исходном файле программы ?

A

много

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как импортировать в текущий модуль все классы расположенные в каталоге «java_installation/java/io» ?

A

import java.io*;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Что такое тип данных byte

A

является 8-разрядным знаковым целым числом

может иметь значение от -128 (-2^7) до 127(2^7 -1)

по-умолчанию = 0

занимает в 4 раза меньше памяти чем int

используется для экономии памяти в массивах

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Что такое тип данных short ?

A

является 16-разрядным знаковым целым числом

может иметь значение от -32768 (2^15) до 32767 (2^15 - 1)

по-умолчанию = 0

занимает в 2 раза меньше памяти чем int

используется для экономии памяти

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Что такое тип данных int ?

A

является 32-разрядным знаковым целым числом

может иметь значение от -2 147 483 648 (2^31) до 2 147 483 647 (2^31 - 1)

по-умолчанию = 0

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Что такое тип данных long ?

A

является 64-разрядным знаковым целым числом

может иметь значение от -9,223,372,036,854,775,808 (2^63) до 9,223,372,036,854,775,807 (2^63 - 1)

По умолчанию — 0L

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Что такое тип данных float ?

A

является c одинарной точностью 32-битный IEEE 754 с плавающей точкой

используется главным образом для сохранения памяти в больших массивах чисел с плавающей точкой.

По умолчанию — 0.0f.

никогда не должен применяется для точного значения, например, валюты

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Что такое тип данных float ?

A

является c двойной точностью 64-битный IEEE 754 с плавающей точкой

По умолчанию — 0.0d

Обычно используется для десятичных значений.
Никогда не должен применяется для точного значения, например, валюты

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Что такое тип данных boolean ?

A

один бит информации
true или false
по умолчанию false

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Что такое тип данных char ?

A

является одним 16-разрядным символом Юникода
Минимальная величина равна «\u0000» (или 0).
Максимальная величина равна «\uffff» (или 65535 включительно).
В Java char нужен для хранения любого символа

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Синтаксис объявления переменной ?

A

тип данных переменная [ = значение], [переменная [= значение], …] ;

например:

int a, b, c;
int x=1, y=2;

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

Может ли локальная переменная иметь модификатор доступа ?

A

Нет

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

Имеет ли локальная переменная значение по умолчанию ?

A

Нет

Значение ей нужно присвоить при инициализации

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Может ли переменная экземпляра иметь модификатор доступа ?

A

Да

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Имеет ли переменная экземпляра значение по умолчанию ?

A

Да
для числовых 0
для булевых false
для ссылочных null

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Для чего используется модификатор доступа private ?

A

устанавливает уровень доступа к переменным, методам и конструкторам, которые должны быть видны только внутри класса, в котором они объявлены.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

Можно ли использовать модификатор доступа private для классов и интерфейсов ?

A

Нельзя.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Для чего используется модификатор доступа public ?

A

устанавливает уровень доступа к классам, методам, конструкторам и переменным таким образом, чтобы они были доступны из любого места “вселенной” java.

Правда, сначала их нужно импортировать в модуль .

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Наследуются ли подклассам публичные методы и переменные класса-родителя ?

A

Да

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
35
Q

Для чего используется модификатор доступа protected ?

A

используется когда нужно переменные, методы и конструкторы открыть только подклассам.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
36
Q

Какое правило наследования доступа для методов с модификатором public ?

A

Методы, объявленные как public в суперклассе, также должны быть public во всех подклассах

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
37
Q

Какое правило наследования доступа для методов с модификатором protected ?

A

Методы, объявленные как protected в суперклассе, должны либо быть либо protected, либо public в подклассах; они не могут быть private

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
38
Q

Какое правило наследования доступа для методов с модификатором private?

A

Методы, объявленные как private для всех не наследуются

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
39
Q

Могут ли методы static использовать переменные экземпляра ?

A

Нет. Все данные методы static получают из параметров.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
40
Q

Для чего используется модификатор final ?

A

используется для завершения реализации классов, методов и переменных

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
41
Q

Можно ли инициализировать переменную final повторно ?

A

Нет.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
42
Q

Можно ли изменять состояние объекта, ссылка на который присвоена в переменную final ?

A

Да.

43
Q

Может ли подкласс переопределить метод final суперкласса ?

A

Нет.

44
Q

Как меняется поведение класса с модификатором final ?

A

Ни один подкласс не может наследовать от такого класса ни один метод или переменную.

45
Q

Как меняется поведение класса с модификатором abstract ?

A

От такого класса нельзя создать экземпляр.

Он может быть только расширен.

46
Q

Может ли класс одновременно быть abstract и final ?

A

Нет. Класс final не может быть расширен.

47
Q

Может ли не abstract класс содержать abstract методы ?

A

Нет.

48
Q

Какие особенности метода abstract ?

A

Метод abstract является методом, объявленным с любой реализацией. Тело метода (реализация) обеспечивается подклассом

public abstract class SuperClass{
    abstract void m(); //абстрактный метод
}
class SubClass extends SuperClass{
     // реализует абстрактный метод
      void m(){
	  .........
      }
}
49
Q

Может ли abstract метод быть final или strict ?

A

Нет

50
Q

Для чего используется модификатор synchronized ?

A

Ключевое слово synchronized используется для указания того, что метод может быть доступен только одному потоку одновременно.

В Java модификатор synchronized может быть применен с любым из четырех модификаторов уровня доступа

public synchronized void showDetails(){
…….
}

51
Q

Для чего используется модификатор volatile ?

A

volatile используется для переменных экземпляра, которые могут быть созданы в разных потоках, чтобы синхронизировать значения этой переменной во всех экземплярах класса.

Например,
public class MyRunnable implements Runnable{
    private volatile boolean active;
    public void run(){
        active = true;
        while (active){ // линия 1
            // здесь какой-нибудь код
        }
    }
public void stop(){
    active = false; // линия 2
} }
52
Q

Для чего используется оператор instanceof ?

A

для определения, является ли ссылочный объект экземпляром какого-то класса (типа)

53
Q

Каков синтаксис оператора instanceof ?

A

(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)

public class Test {

   public static void main(String args[]){
      String name = "Олег";
      // Следующее вернётся верно, поскольку тип String
      boolean result = name instanceof String;  
      System.out.println( result );
   }
}
54
Q

Как в цикле обойти элементы коллекции ?

A

использовать цикл for (item : collection) {}

public class Test {

public static void main(String args[]){
int [] numbers = {10, 20, 30, 40, 50};

      for(int x : numbers ){
         System.out.print( x );
         System.out.print(",");
      }
      System.out.print("\n");
      String [] names ={"Олег", "Иван", "Дима", "Юля"};
      for( String name : names ) {
         System.out.print( name );
         System.out.print(",");
      }
   }
}
55
Q

Как написать шаблонную строку с параметрами ?

A

String fs;
fs = String.format(“Значение переменной float = “ +
“%f, пока значение integer “ +
“переменная = %d, и string “ +
“= %s”, floatVar, intVar, stringVar);
System.out.println(fs);

56
Q

Что делает этот код
double[] myList = new double[10];
?

A

создает массив из 10 элементов типа double и заполняет его случайными значениями, затем присваивает этот массив переменной myList

57
Q

Как создать массив с конкретными значениями указанного типа ?

A

double[] myList = {1.9, 2.9, 3.4, 3.5};

58
Q

Как измерить время выполнения кода ?

A

Получить замер времени в начале и в конце кода, затем вычесть разницу.

     // Начала отсчета
      long start = System.currentTimeMillis();
  // Код программы. 
      // конец отсчета
      long timeWorkCode = System.currentTimeMillis() - start;  
  System.out.println("Скорость выполнения программы: " + timeWorkCode + " миллисекунд");
59
Q

Как получить дату из строки произвольного форрмата, например “01.03.2016” ?

A

Использовать класс SimpleDateFormat и его метд parse()

String date1 = "01.03.2016";
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
Date dateOne = format.parse(date1);
60
Q

Что такое группа сбора в регулярном выражении ?

A

Это группа символов,которая распознается как единое целое.
В регулярном выражении пишется в виде двух круглых скобок () с шаблоном поиска внутри.

Например
String str = “Крещение Руси произошло в 988 году! Не так ли?”;
String pattern = “(.)(\d+)(.)”;

Тут три группы:

  • до чисел,
  • числа
  • после чисел
61
Q

Синтаксис объявления метода в java

A
public static int methodName(int a, int b) {
   // тело
}

public static - модификатор доступа
int - тип возвращаемого значения
methodName - имя метода
int a, int b - список параметров с указанием их типа.

62
Q

Что означает void в качестве описания типа возвращаемого значения ?

A

Метод не возвращает ничего.

63
Q

При таком вызове метода
methodName(a, b)
значения в переменных a и b передаются в метод по значению или по ссылке ?

A

По значению.

Даже если внутри метода значения этих переменных будут изменены, после вызова метода значения переменных не изменятся.

64
Q

Что такое перегрузка метода ?

A

Это создания метода с таким же названием, но с дургим типом возвращаемых данных и другими параметрами.

Например:
   // для integer
   public static int minFunction(int n1, int n2) {
      int min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;
  return min;     }
   // для double
   public static double minFunction(double n1, double n2) {
     double min;
      if (n1 > n2)
         min = n2;
      else
         min = n1;
  return min;     }
65
Q

Как получить доступ к аргументам вызова программы из командной строки?

A

аргументы командной строки передаются в виде массива строк в метод main()

66
Q

Что такое this ?

A

Ключевое слова, используемое для доступа к контексту экземпляра класса (переменные, конструкторы, методы)

67
Q

Как вызвать конструктор с использованием this ?

A
class Student {
   int age
   Student() {
  this(20);

}

Student(int age) {
this.age = age;
}
}

68
Q

Как получить доступ к переменной экземпляра из метода, у которого есть локальная переменная с таким же именем ?

A

Использовать this

class Student {
   int age;   
   Student(int age) {
      this.age = age;	
   }
}
69
Q

Как объявить метод с переменным количеством параметров одного типа?

A

При объявлении метода Вы указываете тип, за которым следует многоточие (…)

public static void printMax(double… numbers) {}

numbers - будет массивом параметров

70
Q

Сколько параметров переменной длины может быть у метода ?

A

Только один и всегда последний в списке параметров.

71
Q

Для чего нужен метод finalize() ?

protected void finalize() {
}

A

Он используется средой выполнения java перед уничтожением объекта.

В нем можно расположить код для чистки перед уничтожением объекта сборщиком мусора.

72
Q

Что такое InPutStream ?

A

поток ввода используется для считывания данных с источника

73
Q

Что такое OutPutStream ?

A

поток вывода используется для записи данных по месту назначения

74
Q

Какой пакет в java предназначен для работы с потоками ввода/вывода ?

A

Java.io

75
Q

Какие классы пакета io чаще всего используются для работы с вводом/выводом 8-битовых байтов в/из файлов ?

A

FileInputStream

FileOutputStream

76
Q

Как прочитать содержимое файла по 8-битовым байтам с помощью класса FileInputStream ?

A
FileInputStream fileIn = new FileInputStream("file.txt");
int a = fileIn.read();
fileIn.close();
77
Q

Как записать содержимое в файл по 8-битовым байтам с помощью класса FileOutputStream ?

A

FileOutputStream fileOut = new FileOutputStream(“copied_file.txt”);
int a = 123;
fileOut.write(a);
fileOut.close();

78
Q

Как прочитать содержимое файла по 16-битовым символам юникода с помощью класса FileReader ?

A

FileReader fileIn = new FileReader (“file.txt”);
int a = fileIn.read();
fileIn.close();

79
Q

Как записать содержимое в файл по 8-битовым байтам с помощью класса FileWriter ?

A

FileWriter fileOut = new FileWriter (“copied_file.txt”);
int a = 123;
fileOut.write(a);
fileOut.close();

80
Q

Какие стандартные потоки реализованы в java?

A

Стандартный ввод - System.in
стандартный вывод - System.out
Стандартная ошибка - System.err

81
Q

Что такое “Контролируемое исключение” ?

A

Это исключение, которое возникает на этапе компиляции. Его программист должен обработать.

82
Q

Что такое “Неконтролируемое исключение” ?

A

Это исключение в ходе выполнения программы, игнорируется при компиляции.

83
Q

Как перехватить конкретный вид исключения в блоке catch ?

A

try {
}catch(ExceptionType1 e1){
}catch(ExceptionType2 e2){
}

84
Q

Как перехватить несколько видов исключений в одном блоке catch ?

A

try {
}catch(ExceptionType1 | ExceptionType2 ex){
}

85
Q

Как указать, что метод может выбросить исключение конкретных видов ?

A

Ключевое слово throws после имени метода

public void withdraw(double amount) throws RemoteException, 
      InsufficientFundsException {
      // Реализация метода
   }
86
Q

Как выбросить исключение конкретного вида из метода ?

A

Оператор throw

throw new RemoteException();

87
Q

Как работает конструкция try-with-resources ?

A

В секцию try в круглые скобки передаем ресурсы (потоки) котоыре автоматом закроются после catch и не нужно использовать finaly для этого.

try(FileReader fr = new FileReader("E://Soft/NetBeans 8.2/Projects/test/test/file.txt")) {
         char [] array = new char[10];
         fr.read(array);   // чтение содержимого массива
         for(char c : array)
         System.out.print(c);   // вывод символов на экран, один за одним
      }catch(IOException e) {
         e.printStackTrace();
      }
88
Q

Как создать собственное контролируемое исключение ?

A

Нужно создать класс исключения и расширить им класс Exception

class MyException extends Exception {
}
89
Q

Как создать собственное неконтролируемое исключение (на этапе выполнения) ?

A

Нужно создать класс исключения и расширить им класс RuntimeException

class MyException extends RuntimeException {
}
90
Q

Синтаксис вложенного класса.

A
class Outer_Demo {
   class Nested_Demo {
   }
}
91
Q

Может ли внутренний класс быть private ?

A

Да

92
Q
Как создать экземпляр внутреннего класса
class Outer_Demo {
   class Nested_Demo {
   }
}
?
A
Outer_Demo outer = new Outer_Demo();
Outer_Demo.Inner_Demo inner = outer.new Inner_Demo();
93
Q

Можно ли создать класс внутри метода ?

A

Можно, тогда это будет локальный тип.

Область его видимости такая же как и у локальной переменной.

94
Q

Как передать анонимный класс или интерфейс в метод в качестве аргумента ?

A
interface My_Class{
   String Do();
}
obj.my_Method(new My_Class() {
   public void Do() {
      .....
      .....
   }
});
95
Q

Как объявить статический вложенный класс ?

A
class MyOuter {
   static class Nested_Demo {
   }
}
96
Q

Какие особенности статического вложенного класса ?

A
  • он не имеет доступа к переменным экземпляра
  • его можно создать не создавая экземпляр внешнего класса
public class Outer {
   static class Nested_Demo {
      public void my_method() {
         System.out.println("Это мой вложенный класс");
      }
   }

public static void main(String args[]) {
Outer.Nested_Demo nested = new Outer.Nested_Demo();
nested.my_method();
}
}

97
Q

Наследуются ли конструкторы подклассами ?

A

Нет.
Конструктор суперкласса можно вызвать отдельно

super()

98
Q

Для чего используется super в наследовании ?

A
  • для диффиренциации переменных и методов с одинаковыми именами в суперклассе и подклассе
    super. myMetod()
    super. myVar
  • для вызова констурктора суперкласса
    super(args)
99
Q

Как наследовать классом свойства и методы интерфейса ?

A

оператор implements при создании класса

public interface Animal {
}

public class Mammal implements Animal {
}
100
Q

Как проверить, является ли класс наследником другого класса ?

A

.оператор instanceof

interface Animal{}
class Mammal implements Animal{}

public class Dog extends Mammal {

   public static void main(String args[]) {
      Mammal m = new Mammal();
      Dog d = new Dog();
  System.out.println(m instanceof Animal);
  System.out.println(d instanceof Mammal);
  System.out.println(d instanceof Animal);    } }
101
Q

Может ли класс наследовать сразу от нескольких классов

public class extends Animal, Mammal{}

?

A

Нет

102
Q

Что такое блок инициализации? Синтаксис?

A

Это блок кода, который запускается при создании объекта класса, точнее после выполнения метода Super().

Синтаксис

class MyClass {

{ // Блок инициализации
    System.out.println("Это блок инициализации");
}

MyClass(){
    System.out.println("Это конструктор");    } }

c = new MyClass;

// => Это блок инициализации
// => Это конструктор
103
Q

Что такое статический блок инициализации? Синтаксис?

A

Это блок кода, который запускается при первом обращении к классу.

Синтаксис
class MyClass {
{ // Блок инициализации
    System.out.println("Это блок инициализации");
}

Static { // статический блок инициализации
    System.out.println("Это статический блок инициализации");
}

MyClass(){
    System.out.println("Это конструктор");    } }

public static void main(String[] args){
c = new MyClass;
}

// => Это статический блок инициализации
// => Это блок инициализации
// => Это конструктор
104
Q

Для чего используют модификатор transient при объявлении полей класса ?

A

При сериализации объекта этого класса поле с модификатором transient не будет сериализовано.

После десериализации это поле примет значение по-умолчанию.