Essential Flashcards
Чувствителен ли Java к регистру идентификаторов ?
Например, идентификатор Hello и hello интерпретируются одинаково или нет ?
Не одинаково. Java регистрочуствителен
Как правильно называть классы ?
- Первая буква в верхнем регистре
- Каждое слово в названии начинается с буквы в верхнем регистре.
например, «MyJavaClass».
Как правильно называть методы ?
- Первая буква в нижнем регистре
- Начиная со второго, каждое слово в названии метода должно начинаться с буквы в верхнем регистре
например, «public void myMethodName()».
Как должен называться файл с java кодом, чтобы программа скомпилировалась верно ?
Имя файла должно совпадать с именем класса
например, «MyJavaProgram» — это название класса, тогда файл должен быть сохранен как «MyJavaProgram.java».
С чего начинается обработка и выполнение java программы ?
public static void main(String args[]) — обработка программы начинается с метода main(), который является обязательной частью каждой программы.
Как объявить перечисление ?
создать переменную типа 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); } }
Какие существуют типы переменных ?
Локальные
Переменные класса (статические)
Переменные экземпляра (динамические)
Как задать однострочный комментарий ?
// комментарий
Как задать многострочный комментарий ?
/*это
- многострочный
- / комментарий
Какая строка считается пустой ?
строка, содержащая комментарии и только пробелы.
Что такое локальная переменная ?
переменные, определенные внутри методов, конструкторов или блоков.
Они будут объявлены и инициализированы в методе, и будут уничтожены, когда метод завершится.
Что такое переменная экземпляра ?
Переменная на уровне класса, она инициализируется при создании экземпляра класса и доступна внутри любого метода класса.
Что такое переменная класса ?
это статичная переменная класса. Инициализируется при создании класса
public static int myVar;
и доступна через точку от имени класса
MyClass.myVar
При создании экземпляров класса переменная класса не пересоздается, а используется ее единственный экземпляр, созданный при создании класса.
Что такое конструктор класса ?
Это метод класса, который называется также как и сам класс. Их может быть несколько.
Конструктор вызывается при создании экземпляра класса.
Сколько публичных классов public class может быть в исходном файле программы ?
только один
Сколько не публичных классов может быть в исходном файле программы ?
много
Как импортировать в текущий модуль все классы расположенные в каталоге «java_installation/java/io» ?
import java.io*;
Что такое тип данных byte
является 8-разрядным знаковым целым числом
может иметь значение от -128 (-2^7) до 127(2^7 -1)
по-умолчанию = 0
занимает в 4 раза меньше памяти чем int
используется для экономии памяти в массивах
Что такое тип данных short ?
является 16-разрядным знаковым целым числом
может иметь значение от -32768 (2^15) до 32767 (2^15 - 1)
по-умолчанию = 0
занимает в 2 раза меньше памяти чем int
используется для экономии памяти
Что такое тип данных int ?
является 32-разрядным знаковым целым числом
может иметь значение от -2 147 483 648 (2^31) до 2 147 483 647 (2^31 - 1)
по-умолчанию = 0
Что такое тип данных long ?
является 64-разрядным знаковым целым числом
может иметь значение от -9,223,372,036,854,775,808 (2^63) до 9,223,372,036,854,775,807 (2^63 - 1)
По умолчанию — 0L
Что такое тип данных float ?
является c одинарной точностью 32-битный IEEE 754 с плавающей точкой
используется главным образом для сохранения памяти в больших массивах чисел с плавающей точкой.
По умолчанию — 0.0f.
никогда не должен применяется для точного значения, например, валюты
Что такое тип данных float ?
является c двойной точностью 64-битный IEEE 754 с плавающей точкой
По умолчанию — 0.0d
Обычно используется для десятичных значений.
Никогда не должен применяется для точного значения, например, валюты
Что такое тип данных boolean ?
один бит информации
true или false
по умолчанию false
Что такое тип данных char ?
является одним 16-разрядным символом Юникода
Минимальная величина равна «\u0000» (или 0).
Максимальная величина равна «\uffff» (или 65535 включительно).
В Java char нужен для хранения любого символа
Синтаксис объявления переменной ?
тип данных переменная [ = значение], [переменная [= значение], …] ;
например:
int a, b, c;
int x=1, y=2;
Может ли локальная переменная иметь модификатор доступа ?
Нет
Имеет ли локальная переменная значение по умолчанию ?
Нет
Значение ей нужно присвоить при инициализации
Может ли переменная экземпляра иметь модификатор доступа ?
Да
Имеет ли переменная экземпляра значение по умолчанию ?
Да
для числовых 0
для булевых false
для ссылочных null
Для чего используется модификатор доступа private ?
устанавливает уровень доступа к переменным, методам и конструкторам, которые должны быть видны только внутри класса, в котором они объявлены.
Можно ли использовать модификатор доступа private для классов и интерфейсов ?
Нельзя.
Для чего используется модификатор доступа public ?
устанавливает уровень доступа к классам, методам, конструкторам и переменным таким образом, чтобы они были доступны из любого места “вселенной” java.
Правда, сначала их нужно импортировать в модуль .
Наследуются ли подклассам публичные методы и переменные класса-родителя ?
Да
Для чего используется модификатор доступа protected ?
используется когда нужно переменные, методы и конструкторы открыть только подклассам.
Какое правило наследования доступа для методов с модификатором public ?
Методы, объявленные как public в суперклассе, также должны быть public во всех подклассах
Какое правило наследования доступа для методов с модификатором protected ?
Методы, объявленные как protected в суперклассе, должны либо быть либо protected, либо public в подклассах; они не могут быть private
Какое правило наследования доступа для методов с модификатором private?
Методы, объявленные как private для всех не наследуются
Могут ли методы static использовать переменные экземпляра ?
Нет. Все данные методы static получают из параметров.
Для чего используется модификатор final ?
используется для завершения реализации классов, методов и переменных
Можно ли инициализировать переменную final повторно ?
Нет.
Можно ли изменять состояние объекта, ссылка на который присвоена в переменную final ?
Да.
Может ли подкласс переопределить метод final суперкласса ?
Нет.
Как меняется поведение класса с модификатором final ?
Ни один подкласс не может наследовать от такого класса ни один метод или переменную.
Как меняется поведение класса с модификатором abstract ?
От такого класса нельзя создать экземпляр.
Он может быть только расширен.
Может ли класс одновременно быть abstract и final ?
Нет. Класс final не может быть расширен.
Может ли не abstract класс содержать abstract методы ?
Нет.
Какие особенности метода abstract ?
Метод abstract является методом, объявленным с любой реализацией. Тело метода (реализация) обеспечивается подклассом
public abstract class SuperClass{ abstract void m(); //абстрактный метод }
class SubClass extends SuperClass{ // реализует абстрактный метод void m(){ ......... } }
Может ли abstract метод быть final или strict ?
Нет
Для чего используется модификатор synchronized ?
Ключевое слово synchronized используется для указания того, что метод может быть доступен только одному потоку одновременно.
В Java модификатор synchronized может быть применен с любым из четырех модификаторов уровня доступа
public synchronized void showDetails(){
…….
}
Для чего используется модификатор 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 } }
Для чего используется оператор instanceof ?
для определения, является ли ссылочный объект экземпляром какого-то класса (типа)
Каков синтаксис оператора instanceof ?
(Переменная ссылочного объекта) instanceof (класс/тип интерфейса)
public class Test {
public static void main(String args[]){ String name = "Олег"; // Следующее вернётся верно, поскольку тип String boolean result = name instanceof String; System.out.println( result ); } }
Как в цикле обойти элементы коллекции ?
использовать цикл 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(","); } } }
Как написать шаблонную строку с параметрами ?
String fs;
fs = String.format(“Значение переменной float = “ +
“%f, пока значение integer “ +
“переменная = %d, и string “ +
“= %s”, floatVar, intVar, stringVar);
System.out.println(fs);
Что делает этот код
double[] myList = new double[10];
?
создает массив из 10 элементов типа double и заполняет его случайными значениями, затем присваивает этот массив переменной myList
Как создать массив с конкретными значениями указанного типа ?
double[] myList = {1.9, 2.9, 3.4, 3.5};
Как измерить время выполнения кода ?
Получить замер времени в начале и в конце кода, затем вычесть разницу.
// Начала отсчета long start = System.currentTimeMillis();
// Код программы.
// конец отсчета long timeWorkCode = System.currentTimeMillis() - start;
System.out.println("Скорость выполнения программы: " + timeWorkCode + " миллисекунд");
Как получить дату из строки произвольного форрмата, например “01.03.2016” ?
Использовать класс SimpleDateFormat и его метд parse()
String date1 = "01.03.2016"; SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy"); Date dateOne = format.parse(date1);
Что такое группа сбора в регулярном выражении ?
Это группа символов,которая распознается как единое целое.
В регулярном выражении пишется в виде двух круглых скобок () с шаблоном поиска внутри.
Например
String str = “Крещение Руси произошло в 988 году! Не так ли?”;
String pattern = “(.)(\d+)(.)”;
Тут три группы:
- до чисел,
- числа
- после чисел
Синтаксис объявления метода в java
public static int methodName(int a, int b) { // тело }
public static - модификатор доступа
int - тип возвращаемого значения
methodName - имя метода
int a, int b - список параметров с указанием их типа.
Что означает void в качестве описания типа возвращаемого значения ?
Метод не возвращает ничего.
При таком вызове метода
methodName(a, b)
значения в переменных a и b передаются в метод по значению или по ссылке ?
По значению.
Даже если внутри метода значения этих переменных будут изменены, после вызова метода значения переменных не изменятся.
Что такое перегрузка метода ?
Это создания метода с таким же названием, но с дургим типом возвращаемых данных и другими параметрами.
Например: // для 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; }
Как получить доступ к аргументам вызова программы из командной строки?
аргументы командной строки передаются в виде массива строк в метод main()
Что такое this ?
Ключевое слова, используемое для доступа к контексту экземпляра класса (переменные, конструкторы, методы)
Как вызвать конструктор с использованием this ?
class Student { int age Student() {
this(20);
}
Student(int age) {
this.age = age;
}
}
Как получить доступ к переменной экземпляра из метода, у которого есть локальная переменная с таким же именем ?
Использовать this
class Student { int age; Student(int age) { this.age = age; } }
Как объявить метод с переменным количеством параметров одного типа?
При объявлении метода Вы указываете тип, за которым следует многоточие (…)
public static void printMax(double… numbers) {}
numbers - будет массивом параметров
Сколько параметров переменной длины может быть у метода ?
Только один и всегда последний в списке параметров.
Для чего нужен метод finalize() ?
protected void finalize() {
}
Он используется средой выполнения java перед уничтожением объекта.
В нем можно расположить код для чистки перед уничтожением объекта сборщиком мусора.
Что такое InPutStream ?
поток ввода используется для считывания данных с источника
Что такое OutPutStream ?
поток вывода используется для записи данных по месту назначения
Какой пакет в java предназначен для работы с потоками ввода/вывода ?
Java.io
Какие классы пакета io чаще всего используются для работы с вводом/выводом 8-битовых байтов в/из файлов ?
FileInputStream
FileOutputStream
Как прочитать содержимое файла по 8-битовым байтам с помощью класса FileInputStream ?
FileInputStream fileIn = new FileInputStream("file.txt"); int a = fileIn.read(); fileIn.close();
Как записать содержимое в файл по 8-битовым байтам с помощью класса FileOutputStream ?
FileOutputStream fileOut = new FileOutputStream(“copied_file.txt”);
int a = 123;
fileOut.write(a);
fileOut.close();
Как прочитать содержимое файла по 16-битовым символам юникода с помощью класса FileReader ?
FileReader fileIn = new FileReader (“file.txt”);
int a = fileIn.read();
fileIn.close();
Как записать содержимое в файл по 8-битовым байтам с помощью класса FileWriter ?
FileWriter fileOut = new FileWriter (“copied_file.txt”);
int a = 123;
fileOut.write(a);
fileOut.close();
Какие стандартные потоки реализованы в java?
Стандартный ввод - System.in
стандартный вывод - System.out
Стандартная ошибка - System.err
Что такое “Контролируемое исключение” ?
Это исключение, которое возникает на этапе компиляции. Его программист должен обработать.
Что такое “Неконтролируемое исключение” ?
Это исключение в ходе выполнения программы, игнорируется при компиляции.
Как перехватить конкретный вид исключения в блоке catch ?
try {
}catch(ExceptionType1 e1){
}catch(ExceptionType2 e2){
}
Как перехватить несколько видов исключений в одном блоке catch ?
try {
}catch(ExceptionType1 | ExceptionType2 ex){
}
Как указать, что метод может выбросить исключение конкретных видов ?
Ключевое слово throws после имени метода
public void withdraw(double amount) throws RemoteException, InsufficientFundsException { // Реализация метода }
Как выбросить исключение конкретного вида из метода ?
Оператор throw
throw new RemoteException();
Как работает конструкция 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(); }
Как создать собственное контролируемое исключение ?
Нужно создать класс исключения и расширить им класс Exception
class MyException extends Exception { }
Как создать собственное неконтролируемое исключение (на этапе выполнения) ?
Нужно создать класс исключения и расширить им класс RuntimeException
class MyException extends RuntimeException { }
Синтаксис вложенного класса.
class Outer_Demo { class Nested_Demo { } }
Может ли внутренний класс быть private ?
Да
Как создать экземпляр внутреннего класса class Outer_Demo { class Nested_Demo { } } ?
Outer_Demo outer = new Outer_Demo(); Outer_Demo.Inner_Demo inner = outer.new Inner_Demo();
Можно ли создать класс внутри метода ?
Можно, тогда это будет локальный тип.
Область его видимости такая же как и у локальной переменной.
Как передать анонимный класс или интерфейс в метод в качестве аргумента ?
interface My_Class{ String Do(); } obj.my_Method(new My_Class() { public void Do() { ..... ..... } });
Как объявить статический вложенный класс ?
class MyOuter { static class Nested_Demo { } }
Какие особенности статического вложенного класса ?
- он не имеет доступа к переменным экземпляра
- его можно создать не создавая экземпляр внешнего класса
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();
}
}
Наследуются ли конструкторы подклассами ?
Нет.
Конструктор суперкласса можно вызвать отдельно
super()
Для чего используется super в наследовании ?
- для диффиренциации переменных и методов с одинаковыми именами в суперклассе и подклассе
super. myMetod()
super. myVar - для вызова констурктора суперкласса
super(args)
Как наследовать классом свойства и методы интерфейса ?
оператор implements при создании класса
public interface Animal {
}
public class Mammal implements Animal { }
Как проверить, является ли класс наследником другого класса ?
.оператор 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); } }
Может ли класс наследовать сразу от нескольких классов
public class extends Animal, Mammal{}
?
Нет
Что такое блок инициализации? Синтаксис?
Это блок кода, который запускается при создании объекта класса, точнее после выполнения метода Super().
Синтаксис
class MyClass {
{ // Блок инициализации System.out.println("Это блок инициализации"); } MyClass(){ System.out.println("Это конструктор"); } }
c = new MyClass;
// => Это блок инициализации // => Это конструктор
Что такое статический блок инициализации? Синтаксис?
Это блок кода, который запускается при первом обращении к классу.
Синтаксис class MyClass {
{ // Блок инициализации System.out.println("Это блок инициализации"); } Static { // статический блок инициализации System.out.println("Это статический блок инициализации"); } MyClass(){ System.out.println("Это конструктор"); } }
public static void main(String[] args){
c = new MyClass;
}
// => Это статический блок инициализации // => Это блок инициализации // => Это конструктор
Для чего используют модификатор transient при объявлении полей класса ?
При сериализации объекта этого класса поле с модификатором transient не будет сериализовано.
После десериализации это поле примет значение по-умолчанию.