Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Заочники 2020-2021 / java_zaoch_sem_1

.pdf
Скачиваний:
80
Добавлен:
15.06.2021
Размер:
264.96 Кб
Скачать

условиянужноперенестиконец.Дляэтогоиспользуетсяцикл do while.

Например,

do {

n++;

} while (n < 10);

Циклы for – оченьраспространеннаяязыковаяконструкция.Вней

количествоповторений контролипеременной,игрольающейуется

счетчиобновлянакаитждой.Напримермойр,ции

for (int i = 0; i < 10; i++) {

System.out.println(i);

}

 

Первыйэлемоп раторант

for обычновыполняинициализациюсчетчика,

второйформулируетусловие

выпотецикла,ненияатретийопределяет

способобновлениясчетчика.

 

Длятого,чтобыпрерватьвыполнениецикла,следуетвоспользоваться

ключесловомым

break.

for (int i = 0; i < 10; i++) {

System.out.println(i); if (i > 5) {

break;

}

}

11

Объекты,

лассы

 

ЯзыкJava

являетсяполностьюобъектно

-ориентирязыкованным

программиров.Поэтомуосновевсехпрограмм, ннаиэтомсанныхя

 

языке,являютсяклассы.

 

 

Далееприведенпримерсозданияпростогокласса

User.

public class User { private String login;

private String passHash;

public User(String login, String passHash) { this.login = login;

this.passHash = passHash;

}

public String getLogin() { return login;

}

public void setLogin(String login) { this.login = login;

}

public String getPassHash() { return passHash;

}

public void setPassHash(String passHash) { this.passHash = passHash;

}

}

12

Создклначинаетсясниестрочкиа

 

 

public class User

 

 

,гдеpublic (

модификатор доступадлякласса,будутрассмотрпозднеены

),

ключевоес

ловоclass

закоторымследуетназвкласса. ние

 

В Java существуетсоглашение(полностьюкотм рымжнознакомитьсяпо

ссылке http://www.oracle.com/technetwork/java/codeconventions-150003.pdf),

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

camel case»При.этомназвание

 

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

 

 

маленькой.

 

 

 

 

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

 

 

конструктором.

Например,

 

 

User user = new User(“my_login”, “pass_hash”);

 

Врезультатебудетсоздан

 

экземпляркласса

User,укотоперогоеменная

 

login равна«

my_login»,аpassHashравен«

pass_hash»Вданном. приестьере

 

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

 

 

количествоконструкторов.Есклассеявноинеуказаниодного

 

 

конструктора, неговсеравноестьодинстурктор

– конструкторпо

умолчан.Напр, имерю

User user = new User(); Т.е.констукторпоумолчанию

 

– конструкторбезпараметров.

 

 

Дляобъявленияк

 

онструктосуществуетследующиепр.оваила

 

 

public User(String login, String passHash) {

 

 

…}

 

 

 

 

Вначалеидет

модификатор доступа (вданномслучpublic),з названиетем

 

классаивскобквходныепараметрыдляинициализации.

 

 

Поляэкземпложнобъсяравить

помощьюключеслоfinalваого

.Такое

поледолжнобытьпроинициализприсозданиобъектов. ировано

 

После

инициализацтакегоп значенлянельбудетизменить.я

 

 

private final String login;

 

 

13

Ещеоднимключесло,котвомымиспроежноприобъяльзовать

лении

объекта,является

static. Поле,иммодификаторющее

static,существует

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

 

 

private static int nextId;

 

Статическиепеременныеиспользуютсякрайнередко.Еслииспользуются

 

static переменные,это,скореевсего,гово

ритопроблемахв

проектиркласс.Авотиспользованиеании

static конвстречаетант

постоянно.

 

 

private static double PI = 3.14;

 

Конст,какпр,аименуютсянтывилоиспользуябуквытолько

верхнего

регистра.

 

 

Деструкторовязыке

Java н.Те..удалятьобъе

ктпослетого,каконнужен

нетнеобходимости

– онбудаленавтоматическиетсборщикоммусора.

 

Пакеты

Язык Java позволяетобъедиклассынаборы, ятьазываемыепакетами

 

(package). Пакетыоблегчаюторганизациюрабп тызволяютотдели ь

 

классы,созданные

 

однимразработчиком, классов,разработанныхдругим.

Встандартнойпоставке

 

Java можновстрследующиепакетытить: java.lang,

java.итutil,.д.Стандартныепакетыjavaязыка.net

 

Java представляютсобой

иерархичныеструктуры.Подобнокаталнадискегам

 

ом,пьютераакеты

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

 

иерархиямjava,Такжепакjavaxиспотыд.уникальностиьзуютсяимен

 

классов.Напри,еслипомеклассститьр

 

User впакет ru.miet, тополноеимя

классабудет

ru.miet.User. Сточкизрения

Java классы ru.miet.User и

com.miet.User дваабсолютноразныхклассаиконфликтаимбудет.

Импортированиеклассов

Классможетиспользвсеклассыизобсвапактивьсенногота общедоклаиздругихспакетовсытупные.

14

Доступкк лассамиздругихпакетовможнополучитьдвумяспос.В бами -

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

Например:

ru.miet.User user = new ru.miet.User();

Очевидно,чтоэтотспособслишкутомителен.Болеепростой

 

распространенныйспособпредусматриваприменениключевогот

слова

import. Всамомначалеклассаобъявляем.

 

import ru.miet.User;

 

Идалеевкодеможнопростописать:

 

User user = new User();

 

Чтобывручнуюнепрописыватьвсе

import в Eclipse есть комбинацияклавиш

Ctrl + Shift + O, котпораязволиттоматическипрописатьвсен достающие import.

15

Наследование

Классы,суперклассыиподклассы

Наследование Java осуществляетсяпомощьюключесло аого

extends.

Напр,опклассишемр

Administrator, которыйбудетрасширятькл

ассUser.

public class Administrator extends User {

 

 

 

}

 

 

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

 

класс Administratorподклассомили

дочерним.Дочернийклассшире«»

 

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

 

 

инкапсулируютсявдочерний,такжевдочернийклассможнодобавить

 

 

носвые.ойства

 

 

Класс Object

Вязыке

Java всеобънеобрявктынаымследуютсязоклассам

Object.

Этотклассявляетсяродительскимдляабсолютновсехкласс.Поэтомув в

 

каждомклассеесть

следующиеметод

 

public int hashCode()

public boolean equals()

public void wait()

public void notify()

public String toString()

Этотсписокнепол.П ознакомитьсядробнсовсееможнотодами

тут http://docs.oracle.com/javase/8/docs/api/index.html?java/lang/Object.html.

Подробнееразбетолькоизвсехемметодов.

16

hashCode() и equals()

Методequals()

проверяетэквивалентнылидваобъекта.Вклассе

Object

данный методпроверяеттолькоодн

– ссылаютсялиобеп ременныйна

одинтотжеобъект.

 

 

hashCode() – генерирует хэш-коддляобъекта.Дляабсолютноодинак вых

двухобъектов

хэш-коддолженсовпадать.Еслижехэш

одыбъектов

рав,этонзначитыечтообъект

 

ыбудутравны.Эобъясняется

коллизиейхэш

-функций.

 

Дваобъектав

Java нельзясравниватьчерез«==»,.к.прииспользовании

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

toString()

Метод toString() позволяет преобвстрразъект.Эбываетоватькучасто полезно.На,привывконсольмерможнодеуказатьпросто

System.out.println(user);

Метод toString() вызоветсяавтоматически.

Разумеетсякаждыйизэ ихрехметпереопределитьдовжновсвоем кла.Вссе гдалиэтонадодел?Зависитоттьконкретнойзадачи.В

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

Переопределениеметодов

Принаследованииможнопереопределитьметодродительског

окласса.При

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

 

public class User() {

 

public void printName() {

 

System.out.println(“I’m user.”)

 

}

 

}

 

17

public class Admin extends User { @Override

public void printName() { System.out.println(“I’m admin.”)

}

}

Длятого,чтобызапретитьпереопреметонужновоспользоватьсяделение ключесловомым final. public class User() {

public final void printName() { System.out.println(“I’m user.”)

}

}

Точнотакжеможзапретитьнаследованиеоткласса.

public final class User() { public void printName() {

System.out.println(“I’m user.”)

}

}

Абстрклассыктные

Чтсоабсбыздаклтрь,необходимоактныйссобъявитьегокак

abstract.

public abstract class User {

 

}

 

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

 

Такжеможносоздаабсметодрактныйь.

 

public abstract String getName();

 

Такойметсоднеожетидолженржатьлабыть

обязательно

переопределенвдочернемклассе.

 

18

Модификаторыдоступа

ВсеговJava

сущчемодификатораствуеттыредоступа:

 

Областьвидимо

стиограниченаклассом(

private).

Областьвидимостинеограничена(

public).

Областьвидимостиограниченапакетвсемидклассами

(protected).

• Областьвидимостиограниченапакетом

(поумолчанию)Никакого.

модификаторауказыватьненадо.

 

Интерфейсы

ИнтерфейсывJava

неявляютсяклассами.Онипредставляютсобой

 

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

 

public interface Comparable {

 

int compareTo(Object other);

 

}

 

 

Интерфейсобъявляетсяпомощьюключесловаого

 

interface исодержитв

себесписо кметодов.Реализацииметодбытьнеможет.Такжевв

 

интещеможнорфейсахразмещатькакие

-либостатическиеконстанты.

Реализацияинтерфейсаосуществляетсяследующимобразом:

 

public class User implements Comparable {

 

public int compareTo(Object other) {

 

// … тутреализацияметода

 

}

 

 

}

 

 

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

 

сколькоугодноинтерфейсов.

 

 

Приобъявленииметодовинтерф,какправило, указываютсяейсе

 

модификаторыдоступа,потомучто

-умолчаниюявляются

public.

Дляреализацииинтерфейсанеобязательноявнымобрасоздаватьклассом.

Comparable c = new Comparable() {

19

public int compareTo(Object other) {

// … тутреализацияметода

}

 

}

 

Вданномслучае

new Comparable(){…} называетанонимнымкла. сясом

Enum

В Java,какивбольшинствеязыковпрограммирования,существует

 

возмсозтипжностьдаперечислениенных« »Например. ,

 

 

public enum DAYS {

 

 

sunday, monday, wednesday

 

}

 

 

Воспользоватьсякаким

-либозначениемможноследующимобразом:

 

DAYS d = DAYS.monday;

 

Объектипа enum’a можносравниватьчерезоператор«==»

.

Collections

В Java большоеколичестворазныхколлекций:ма, пс,стеки,выски

очереди,наборы.Всеколлекциив Java реализуютинтерфейс java.util.Collection.Подробнеенемможнопрочитатьтут http://docs.oracle.com/javase/8/docs/api/index.html?java/util/Collection.html

Всеегореализацииимеютопредсп .Рассмотримленнуюцификусамые популярные:

java.util.ArrayList – посвоейсутиобычныймассиввозможностью динамическименятьдлину.

java.util.LinkedList – классп.ическийсок

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

Рассмотримпримериспользования LinkedList. List<Long> list = new LinkedList<Long>();

20

Соседние файлы в папке Заочники 2020-2021