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
Что такое тип данных char ?
является одним 16-разрядным символом Юникода Минимальная величина равна «\u0000» (или 0). Максимальная величина равна «\uffff» (или 65535 включительно). В Java char нужен для хранения любого символа
26
Синтаксис объявления переменной ?
тип данных переменная [ = значение], [переменная [= значение], ...] ; например: int a, b, c; int x=1, y=2;
27
Может ли локальная переменная иметь модификатор доступа ?
Нет
28
Имеет ли локальная переменная значение по умолчанию ?
Нет | Значение ей нужно присвоить при инициализации
29
Может ли переменная экземпляра иметь модификатор доступа ?
Да
30
Имеет ли переменная экземпляра значение по умолчанию ?
Да для числовых 0 для булевых false для ссылочных null
31
Для чего используется модификатор доступа private ?
устанавливает уровень доступа к переменным, методам и конструкторам, которые должны быть видны только внутри класса, в котором они объявлены.
32
Можно ли использовать модификатор доступа private для классов и интерфейсов ?
Нельзя.
33
Для чего используется модификатор доступа public ?
устанавливает уровень доступа к классам, методам, конструкторам и переменным таким образом, чтобы они были доступны из любого места "вселенной" java. Правда, сначала их нужно импортировать в модуль .
34
Наследуются ли подклассам публичные методы и переменные класса-родителя ?
Да
35
Для чего используется модификатор доступа protected ?
используется когда нужно переменные, методы и конструкторы открыть только подклассам.
36
Какое правило наследования доступа для методов с модификатором public ?
Методы, объявленные как public в суперклассе, также должны быть public во всех подклассах
37
Какое правило наследования доступа для методов с модификатором protected ?
Методы, объявленные как protected в суперклассе, должны либо быть либо protected, либо public в подклассах; они не могут быть private
38
Какое правило наследования доступа для методов с модификатором private?
Методы, объявленные как private для всех не наследуются
39
Могут ли методы static использовать переменные экземпляра ?
Нет. Все данные методы static получают из параметров.
40
Для чего используется модификатор final ?
используется для завершения реализации классов, методов и переменных
41
Можно ли инициализировать переменную final повторно ?
Нет.
42
Можно ли изменять состояние объекта, ссылка на который присвоена в переменную final ?
Да.
43
Может ли подкласс переопределить метод final суперкласса ?
Нет.
44
Как меняется поведение класса с модификатором final ?
Ни один подкласс не может наследовать от такого класса ни один метод или переменную.
45
Как меняется поведение класса с модификатором abstract ?
От такого класса нельзя создать экземпляр. | Он может быть только расширен.
46
Может ли класс одновременно быть abstract и final ?
Нет. Класс final не может быть расширен.
47
Может ли не abstract класс содержать abstract методы ?
Нет.
48
Какие особенности метода abstract ?
Метод abstract является методом, объявленным с любой реализацией. Тело метода (реализация) обеспечивается подклассом ``` public abstract class SuperClass{ abstract void m(); //абстрактный метод } ``` ``` class SubClass extends SuperClass{ // реализует абстрактный метод void m(){ ......... } } ```
49
Может ли abstract метод быть final или strict ?
Нет
50
Для чего используется модификатор synchronized ?
Ключевое слово synchronized используется для указания того, что метод может быть доступен только одному потоку одновременно. В Java модификатор synchronized может быть применен с любым из четырех модификаторов уровня доступа public synchronized void showDetails(){ ....... }
51
Для чего используется модификатор volatile ?
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
Для чего используется оператор instanceof ?
для определения, является ли ссылочный объект экземпляром какого-то класса (типа)
53
Каков синтаксис оператора instanceof ?
(Переменная ссылочного объекта) instanceof (класс/тип интерфейса) public class Test { ``` public static void main(String args[]){ String name = "Олег"; // Следующее вернётся верно, поскольку тип String boolean result = name instanceof String; System.out.println( result ); } } ```
54
Как в цикле обойти элементы коллекции ?
использовать цикл 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
Как написать шаблонную строку с параметрами ?
String fs; fs = String.format("Значение переменной float = " + "%f, пока значение integer " + "переменная = %d, и string " + "= %s", floatVar, intVar, stringVar); System.out.println(fs);
56
Что делает этот код double[] myList = new double[10]; ?
создает массив из 10 элементов типа double и заполняет его случайными значениями, затем присваивает этот массив переменной myList
57
Как создать массив с конкретными значениями указанного типа ?
double[] myList = {1.9, 2.9, 3.4, 3.5};
58
Как измерить время выполнения кода ?
Получить замер времени в начале и в конце кода, затем вычесть разницу. ``` // Начала отсчета long start = System.currentTimeMillis(); ``` // Код программы. ``` // конец отсчета long timeWorkCode = System.currentTimeMillis() - start; ``` System.out.println("Скорость выполнения программы: " + timeWorkCode + " миллисекунд");
59
Как получить дату из строки произвольного форрмата, например "01.03.2016" ?
Использовать класс SimpleDateFormat и его метд parse() ``` String date1 = "01.03.2016"; SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy"); Date dateOne = format.parse(date1); ```
60
Что такое группа сбора в регулярном выражении ?
Это группа символов,которая распознается как единое целое. В регулярном выражении пишется в виде двух круглых скобок () с шаблоном поиска внутри. Например String str = "Крещение Руси произошло в 988 году! Не так ли?"; String pattern = "(.*)(\\d+)(.*)"; Тут три группы: - до чисел, - числа - после чисел
61
Синтаксис объявления метода в java
``` public static int methodName(int a, int b) { // тело } ``` public static - модификатор доступа int - тип возвращаемого значения methodName - имя метода int a, int b - список параметров с указанием их типа.
62
Что означает void в качестве описания типа возвращаемого значения ?
Метод не возвращает ничего.
63
При таком вызове метода methodName(a, b) значения в переменных a и b передаются в метод по значению или по ссылке ?
По значению. | Даже если внутри метода значения этих переменных будут изменены, после вызова метода значения переменных не изменятся.
64
Что такое перегрузка метода ?
Это создания метода с таким же названием, но с дургим типом возвращаемых данных и другими параметрами. ``` Например: // для 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
Как получить доступ к аргументам вызова программы из командной строки?
аргументы командной строки передаются в виде массива строк в метод main()
66
Что такое this ?
Ключевое слова, используемое для доступа к контексту экземпляра класса (переменные, конструкторы, методы)
67
Как вызвать конструктор с использованием this ?
``` class Student { int age Student() { ``` this(20); } Student(int age) { this.age = age; } }
68
Как получить доступ к переменной экземпляра из метода, у которого есть локальная переменная с таким же именем ?
Использовать this ``` class Student { int age; Student(int age) { this.age = age; } } ```
69
Как объявить метод с переменным количеством параметров одного типа?
При объявлении метода Вы указываете тип, за которым следует многоточие (...) public static void printMax(double... numbers) {} numbers - будет массивом параметров
70
Сколько параметров переменной длины может быть у метода ?
Только один и всегда последний в списке параметров.
71
Для чего нужен метод finalize() ? protected void finalize() { }
Он используется средой выполнения java перед уничтожением объекта. В нем можно расположить код для чистки перед уничтожением объекта сборщиком мусора.
72
Что такое InPutStream ?
поток ввода используется для считывания данных с источника
73
Что такое OutPutStream ?
поток вывода используется для записи данных по месту назначения
74
Какой пакет в java предназначен для работы с потоками ввода/вывода ?
Java.io
75
Какие классы пакета io чаще всего используются для работы с вводом/выводом 8-битовых байтов в/из файлов ?
FileInputStream FileOutputStream
76
Как прочитать содержимое файла по 8-битовым байтам с помощью класса FileInputStream ?
``` FileInputStream fileIn = new FileInputStream("file.txt"); int a = fileIn.read(); fileIn.close(); ```
77
Как записать содержимое в файл по 8-битовым байтам с помощью класса FileOutputStream ?
FileOutputStream fileOut = new FileOutputStream("copied_file.txt"); int a = 123; fileOut.write(a); fileOut.close();
78
Как прочитать содержимое файла по 16-битовым символам юникода с помощью класса FileReader ?
FileReader fileIn = new FileReader ("file.txt"); int a = fileIn.read(); fileIn.close();
79
Как записать содержимое в файл по 8-битовым байтам с помощью класса FileWriter ?
FileWriter fileOut = new FileWriter ("copied_file.txt"); int a = 123; fileOut.write(a); fileOut.close();
80
Какие стандартные потоки реализованы в java?
Стандартный ввод - System.in стандартный вывод - System.out Стандартная ошибка - System.err
81
Что такое "Контролируемое исключение" ?
Это исключение, которое возникает на этапе компиляции. Его программист должен обработать.
82
Что такое "Неконтролируемое исключение" ?
Это исключение в ходе выполнения программы, игнорируется при компиляции.
83
Как перехватить конкретный вид исключения в блоке catch ?
try { }catch(ExceptionType1 e1){ }catch(ExceptionType2 e2){ }
84
Как перехватить несколько видов исключений в одном блоке catch ?
try { }catch(ExceptionType1 | ExceptionType2 ex){ }
85
Как указать, что метод может выбросить исключение конкретных видов ?
Ключевое слово throws после имени метода ``` public void withdraw(double amount) throws RemoteException, InsufficientFundsException { // Реализация метода } ```
86
Как выбросить исключение конкретного вида из метода ?
Оператор throw throw new RemoteException();
87
Как работает конструкция try-with-resources ?
В секцию 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
Как создать собственное контролируемое исключение ?
Нужно создать класс исключения и расширить им класс Exception ``` class MyException extends Exception { } ```
89
Как создать собственное неконтролируемое исключение (на этапе выполнения) ?
Нужно создать класс исключения и расширить им класс RuntimeException ``` class MyException extends RuntimeException { } ```
90
Синтаксис вложенного класса.
``` class Outer_Demo { class Nested_Demo { } } ```
91
Может ли внутренний класс быть private ?
Да
92
``` Как создать экземпляр внутреннего класса class Outer_Demo { class Nested_Demo { } } ? ```
``` Outer_Demo outer = new Outer_Demo(); Outer_Demo.Inner_Demo inner = outer.new Inner_Demo(); ```
93
Можно ли создать класс внутри метода ?
Можно, тогда это будет локальный тип. | Область его видимости такая же как и у локальной переменной.
94
Как передать анонимный класс или интерфейс в метод в качестве аргумента ?
``` interface My_Class{ String Do(); } obj.my_Method(new My_Class() { public void Do() { ..... ..... } }); ```
95
Как объявить статический вложенный класс ?
``` class MyOuter { static class Nested_Demo { } } ```
96
Какие особенности статического вложенного класса ?
- он не имеет доступа к переменным экземпляра - его можно создать не создавая экземпляр внешнего класса ``` 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
Наследуются ли конструкторы подклассами ?
Нет. Конструктор суперкласса можно вызвать отдельно super()
98
Для чего используется super в наследовании ?
- для диффиренциации переменных и методов с одинаковыми именами в суперклассе и подклассе super. myMetod() super. myVar - для вызова констурктора суперкласса super(args)
99
Как наследовать классом свойства и методы интерфейса ?
оператор implements при создании класса public interface Animal { } ``` public class Mammal implements Animal { } ```
100
Как проверить, является ли класс наследником другого класса ?
.оператор 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
Может ли класс наследовать сразу от нескольких классов public class extends Animal, Mammal{} ?
Нет
102
Что такое блок инициализации? Синтаксис?
Это блок кода, который запускается при создании объекта класса, точнее после выполнения метода Super(). Синтаксис class MyClass { { // Блок инициализации System.out.println("Это блок инициализации"); } MyClass(){ System.out.println("Это конструктор"); } } c = new MyClass; ``` // => Это блок инициализации // => Это конструктор ```
103
Что такое статический блок инициализации? Синтаксис?
Это блок кода, который запускается при первом обращении к классу. ``` Синтаксис class MyClass { ``` { // Блок инициализации System.out.println("Это блок инициализации"); } Static { // статический блок инициализации System.out.println("Это статический блок инициализации"); } MyClass(){ System.out.println("Это конструктор"); } } public static void main(String[] args){ c = new MyClass; } ``` // => Это статический блок инициализации // => Это блок инициализации // => Это конструктор ```
104
Для чего используют модификатор transient при объявлении полей класса ?
При сериализации объекта этого класса поле с модификатором transient не будет сериализовано. После десериализации это поле примет значение по-умолчанию.