Академический Документы
Профессиональный Документы
Культура Документы
ответы на вопросы java
ответы на вопросы java
ПРИЛОЖЕНИЙ»
byte b = 7;
int d = b; // преобразование от byte к int
1
2
long a = 4;
int b = (int) a;
3. Операции языка Java. Условные конструкции.
В языке Java используются следующие условные конструкции: if..else и switch..case
Арифметические операции
int a1 = 2; //010
int b1 = 5;//101
System.out.println(a1&b1); // результат 0
int a2 = 4; //100
int b2 = 5; //101
Операции сдвига
Таким образом, если исходное число, которое надо сдвинуть в ту или другую
строну, делится на два, то фактически получается умножение или деление на два.
Поэтому подобную операцию можно использовать вместо непосредственного
умножения или деления на два, так как операция сдвига на аппаратном уровне
менее дорогостоящая операция в отличие от операции деления или умножения.
Операции сравнения
Операции присваивания
Циклы в Java
Теперь рассмотрим циклы в Java. В этом ЯП их есть несколько типов:
Определение класса
class Book
{
public String name;
public String author;
public int year;
Создание объекта
1. Модификаторы доступа
2. Модификаторы без доступа
И существует три типа модификаторов доступа и три типа модификаторов отсутствия
доступа
1. Доступ к Modifiesrs
o общедоступный
o защищено
По умолчанию
o
Частное
o
2. Модификатор отсутствия доступа
статический
Финал
аннотация
Итак, когда мы говорим об абстрактном классе, к абстрактному классу могут быть
применены только общедоступные модификаторы доступа и модификаторы доступа по
умолчанию.
3,4Тыс. просмотров
Интерфейс описывает только поведение. У него нет состояния. А у
абстрактного класса состояние есть: он описывает и то, и другое.
Абстрактный класс связывает между собой и объединяет классы,
имеющие очень близкую связь. В то же время, один и тот же
интерфейс могут реализовать классы, у которых вообще нет ничего
общего.
Классы могут реализовывать сколько угодно интерфейсов, но
наследоваться можно только от одного класса.
Интерфейс – это контракт, в рамках которого части программы, зачастую написанные
разными людьми, взаимодействуют между собой и со внешними приложениями.
Интерфейсы работают со слоями сервисов, безопасности, DAO и т.д. Это позволяет
создавать модульные конструкции, в которых для изменения одного элемента не
нужно трогать остальные.
void do_something(){
// ...
}
Порождающие
Эти паттерны решают проблемы обеспечения гибкости создания
объектов
Структурные
Поведенческие
или так:
void aMethod(Vector < ?> vect);
class ExceptionDemo {
static void compute(int a) throws MyException {
System.out.println("called computer+a+").");
if (a > 10) throw new MyException(a);
System.out.println("normal exit.");
}
22. Классы-обертки.
1. Маркировка.
2. Обычное удаление.
3. Удаление с уплотнением.
Интерфейсы
Интерфейсы в Java Collection Framework определяют общее поведение и
операции, которые могут выполняться с коллекциями. Сюда входят
добавление или удаление элементов, повторение элементов в
коллекции и многое другое.
Collection
Коллекция (Collection) представляет собой группу объектов, известных
как ее элементы. Это объект, который может содержать ссылки на
другие объекты. Интерфейс Collection является корнем иерархии
коллекций. Это базовый интерфейс для всех коллекций в Java Collection
Framework. Он определяет основные методы, которые должны быть
реализованы во всех коллекциях, такие как add(), remove() и
contains().
List (список) — это упорядоченный набор объектов, каждый элемент
которого занимает определенную позицию в списке. Интерфейс List
расширяет интерфейс Collection и добавляет в него несколько методов
для работы со списками, таких как методы доступа к элементам по их
положению в списке и методы поиска и сортировки списков. List может
содержать повторяющиеся элементы, доступ к этим элементам
можно получить по их положению в списке.
Set в Java Collection Framework — это неупорядоченное множество
уникальных элементов, в котором не допускаются повторяющиеся
элементы. Интерфейс Set расширяет интерфейс Collection и добавляет
в него несколько методов, таких как методы проверки наличия элемента
в множестве (set) и методы добавления и удаления элементов из
множества.
java.util.Queue
Queue (очередь) — это структура данных, которая используется для
хранения элементов в порядке их появления (FIFO). Это означает, что
первый элемент, добавленный в очередь, будет первым удаленным.
Java Collection Framework включает в себя несколько интерфейсов,
которые определяют общее поведение для разных типов коллекций.
Некоторые из них входят в группу интерфейсов java.util.Collection:
java.util.List
java.util.set
java.util.Queue
У каждой коллекции есть своя реализация.
35. Реализации интерфейса List.
36. Реализации интерфейса Set.
37. Реализации интерфейса Queue.
38. Реализации интерфейса Map.
// Создаем Map
Map<String, Integer> map = new HashMap <>();
// Добавляем элементы в Map
map.put("apple", 1);
map.put("banana", 2);
map.put("orange", 3);
// Печать Map
System.out.println("Map: " + map);
// Получаем значение для определенного ключа
int value = map.get( "banana" );
System.out.println("Value for 'banana': " + value);
// Удаляем элемент из Map
map.remove("orange");
// Печать обновленной карты
System.out.println( "Map: " + map);
import java.util.List;
import java.util.ArrayList;
Класс FileOutputStream
Главное назначение класса FileOutputStream — запись байтов в
файл. Ничего сложного :) FileOutputStream является одной из
реализаций абстрактного класса OutputStream. В конструкторе объекты
этого класса принимают либо путь к целевому файлу (в который и нужно
записать байты), либо объект класса File.
Класс FileInputStream
У класса FileInputStream назначение противоположное — чтение
байтов из файла. Так же как FileOutputStream наследует OutputStream,
этот класс происходит от абстрактного класса InputStream.
Буферизированные потоки нужны прежде всего для оптимизации
ввода-вывода. Обращение к источнику данных, например, чтение из
файла, — дорогостоящая в плане производительности операция. И
каждый раз обращаться к файлу для чтения по одному байту
расточительно. Поэтому BufferedInputStream считывает данные не по
одному байту, а блоками и временно хранит их в специальном буфере.
Это позволяет нам оптимизировать работу программы за счет того, что
мы уменьшаем количество обращений к файлу.
Интерфейс Serializable
Сразу надо сказать, что сериализовать можно только те
объекты, которые реализуют интерфейс Serializable. Этот
интерфейс не определяет никаких методов, просто он
служит указателем системе, что объект, реализующий его,
может быть сериализован.
1
ObjectOutputStream(OutputStream out)
Для записи данных ObjectOutputStream использует ряд
методов, среди которых можно выделить следующие:
1
2
3
File(String путь_к_каталогу)
File(String путь_к_каталогу, String имя_файла)
File(File каталог, String имя_файла)
1
2
3
4
5
public static void main(String[] args) {
Thread t = Thread.currentThread(); // получаем главный
поток
System.out.println(t.getName()); // main
}
По умолчанию именем главного потока будет main.
Yield
Метод Thread.yield() загадочный и редко используемый. Существует
много вариаций его описания в интернете. Вплоть до того, что некоторые
пишут про какую-то очередь потоков, в которой поток переместится вниз
с учётом их приоритетов. Кто-то пишет, что поток изменит статус с
running на runnable (хотя разделения на эти статусы нет, и Java их не
различает). Но на самом деле всё куда неизвестнее и в каком-то смысле
проще.
Пул потоков
В Java потоки сопоставляются с потоками системного уровня, которые
являются ресурсами операционной системы. Если мы создаем потоки
бесконтрольно, у нас могут быстро закончиться эти ресурсы.
Операционная система также выполняет переключение контекста между
потоками — для эмуляции параллелизма. Упрощенный взгляд
заключается в том, что чем больше потоков мы создаем, тем меньше
времени каждый поток тратит на выполнение реальной работы.
Шаблон пула потоков помогает экономить ресурсы в многопоточном
приложении и сдерживать параллелизм в определенных
предопределенных пределах.
Когда мы используем пул потоков, мы пишем наш параллельный код в
виде параллельных задач и отправляем их на выполнение
экземпляру пула потоков.Этот экземпляр управляет несколькими
повторно используемыми потоками для выполнения этих задач.
Архитектура[править | править код]
Look and Feel
Архитектура Swing разработана таким образом, что вы можете изменять «look and feel[en]»
(L&F) вашего приложения. «Look» определяет внешний вид компонентов, а «Feel» — их
поведение. Sun’s JRE предоставляет следующие L&F[1]:
Окно JFrame
Каждая GUI-программа запускается в окне и по ходу работы может открывать несколько
дополнительных окон.
В библиотеке Swing описан класс JFrame, представляющий собой окно с рамкой и строкой
заголовка (с кнопками «Свернуть», «Во весь экран» и «Закрыть»). Оно может изменять
размеры и перемещаться по экрану.
об окнах Swing
Панель содержимого
Напрямую в окне элементы управления не размещаются. Для этого служит панель
содержимого, занимающая все пространство окна*. Обратиться к этой панели можно
методом getContentPane() класса JFrame. С помощью метода add(Component
component) можно добавить на нее любой элемент управления.
В примерах этого занятия мы будем использовать только один элемент управления —
кнопку (не вдаваясь в подробности ее устройства). Кнопка описывается классом JButton и
создается конструктором с параметром типа String — надписью.
Добавим кнопку в панель содержимого нашего окна
командами:
JButton newButton
= new JButton();getContentPane().add(newButto
n);
В результате получим окно с кнопкой. Кнопка
занимает всю доступную площадь окна. Такой
эффект полезен не во всех программах, поэтому необходимо изучить различные способы
расположения элементов на панели.
30);button.setLocation(20,20);panel.add(button);button = new JButton("Кнопка
с длинной надписью");button.setSize(120,
40);button.setLocation(70,50);panel.add(button);setContentPane(panel);setSize
(250, 150);}
Мы используем одну и ту же переменную button для обращения к обеим кнопкам (причем,
второй раз ее описывать не нужно). В самом деле, осуществив все необходимые операции с
первой кнопкой и зная, что обращаться к ней нам больше не понадобится, мы используем
«освободившуюся» переменную для манипуляций со второй.
Java
Java
1 Modifier.isAbstract(int modifiers)
2 Modifier.isFinal(int modifiers)
3 Modifier.isInterface(int modifiers)
4 Modifier.isNative(int modifiers)
5 Modifier.isPrivate(int modifiers)
6 Modifier.isProtected(int modifiers)
7 Modifier.isPublic(int modifiers)
8 Modifier.isStatic(int modifiers)
9 Modifier.isStrict(int modifiers)
10 Modifier.isSynchronized(int modifiers)
11 Modifier.isTransient(int modifiers)
12 Modifier.isVolatile(int modifiers)