diff options
-rw-r--r-- | ru-ru/java-ru.html.markdown | 28 | ||||
-rw-r--r-- | ru-ru/learnjava-ru.html.markdown | 507 |
2 files changed, 14 insertions, 521 deletions
diff --git a/ru-ru/java-ru.html.markdown b/ru-ru/java-ru.html.markdown index 182f2df1..460086e3 100644 --- a/ru-ru/java-ru.html.markdown +++ b/ru-ru/java-ru.html.markdown @@ -425,42 +425,42 @@ class PennyFarthing extends Bicycle { // Интерфейсы // Синтаксис определения интерфейса: // <модификатор доступа> interface <имя> extends <базовый интерфейс> { -// // Константы -// // Определение методов. +// // Константы +// // Определение методов. //} // Пример - Еда: public interface Edible { // Любой класс, реализующий этот интерфейс, должен реализовать этот метод. - public void eat(); + public void eat(); } public interface Digestible { - public void digest(); + public void digest(); } // Сейчас мы можем создать класс, реализующий оба эти интерфейса. public class Fruit implements Edible, Digestible { - public void eat() { - //... - } + public void eat() { + //... + } - public void digest() { - //... - } + public void digest() { + //... + } } // В Java Вы можете наследоватьтолько один класс, однако можете реализовывать // несколько интерфейсов. Например: public class ExampleClass extends ExampleClassParent implements InterfaceOne, InterfaceTwo { - public void InterfaceOneMethod() { + public void InterfaceOneMethod() { - } + } - public void InterfaceTwoMethod() { + public void InterfaceTwoMethod() { - } + } } ``` diff --git a/ru-ru/learnjava-ru.html.markdown b/ru-ru/learnjava-ru.html.markdown deleted file mode 100644 index 0bb6393c..00000000 --- a/ru-ru/learnjava-ru.html.markdown +++ /dev/null @@ -1,507 +0,0 @@ ---- - -language: java -contributors: - - ["Jake Prather", "http://github.com/JakeHP"] - - ["Madison Dickson", "http://github.com/mix3d"] -translators: - - ["Sergey Gaykov", "https://github.com/gaykov"] -filename: LearnJava.java - ---- - -Java - это объектно ориентированный язык программирования общего назначения, -основанный на классах и поддерживающий параллельное программирование. -[Подробнее читайте здесь.](http://docs.oracle.com/javase/tutorial/java/index.html) - -```java -// Однострочные комментарии начинаются с //. -/* -Многострочные комментарии -выглядят так. -*/ -/** -JavaDoc-комментарии выглядят так. Они используются для описания класса -и его членов. -*/ - -// Импорт класса ArrayList из пакета java.util. -import java.util.ArrayList; -// Импорт всех классов из пакета java.security. -import java.security.*; - -// Каждый .java файл содержит один публичный класс, имя которого совпадает с -// именем файла. -public class LearnJava { - - // Программа должна содержать метод main, который является точкой входа. - public static void main (String[] args) { - - // System.out.println используется для печати строк. - System.out.println("Hello World!"); - System.out.println( - "Integer: " + 10 + - " Double: " + 3.14 + - " Boolean: " + true); - - // Чтобы напечатать что-либо не заканчивая переводом строки - // используется System.out.print. - System.out.print("Hello "); - System.out.print("World"); - - - /////////////////////////////////////// - // Типы и Переменные - /////////////////////////////////////// - - // Переменные объявляются с использованием <тип> <имя> - // Byte - 8-битное целое число. - // (-128 <= byte <= 127) - byte fooByte = 100; - - // Short - 16-битное целое число. - // (-32,768 <= short <= 32,767) - short fooShort = 10000; - - // Integer - 32-битное целое число. - // (-2,147,483,648 <= int <= 2,147,483,647) - int fooInt = 1; - - // Long - 64-битное целое число. - // (-9,223,372,036,854,775,808 <= long <= 9,223,372,036,854,775,807) - long fooLong = 100000L; - // L используется для указания на то, что переменная имеет тип long; - // По умолчанию, числа без L являются integer. - - // Замечание: в Java нет беззнаковых типов. - - // Float - 32-битное IEEE 754 число с плавающей запятой с одинарной степенью точности. - float fooFloat = 234.5f; - // f используется для указания на то, что переменная имеет тип float; - // иначе, число являлось бы double. - - // Double - 64-битное IEEE 754 число с плавающей запятой с двойной степенью точности. - double fooDouble = 123.4; - - // Boolean - true или false - boolean fooBoolean = true; - boolean barBoolean = false; - - // Char - Простой 16-битный символ Unicode. - char fooChar = 'A'; - - // Переменным final не может быть присвоен другой объект. - final int HOURS_I_WORK_PER_WEEK = 9001; - - // Строки. - String fooString = "My String Is Here!"; - - // \n - это экранированный символ, который означает начало новой строки. - String barString = "Printing on a new line?\nNo Problem!"; - // \t - это экранированный символ, который добавляет символ табуляции. - String bazString = "Do you want to add a tab?\tNo Problem!"; - System.out.println(fooString); - System.out.println(barString); - System.out.println(bazString); - - // Массивы - // Размер массива должен быть указан при объявлении. - // Объявлять массив можно в следующих форматах: - //<тип данных> [] <имя> = new <тип данных>[<размер массива>]; - //<тип данных> <имя>[] = new <тип данных>[<размер массива>]; - int [] intArray = new int[10]; - String [] stringArray = new String[1]; - boolean boolArray [] = new boolean[100]; - - // Другой способ объявления и инициализации массива: - int [] y = {9000, 1000, 1337}; - String names [] = {"Bob", "John", "Fred", "Juan Pedro"}; - boolean bools[] = new boolean[] {true, false, false}; - - // Индексация массива - доступ к элементу. - System.out.println("intArray @ 0: " + intArray[0]); - - // Массивы изменяемы и индекс в них начинается с 0. - intArray[1] = 1; - System.out.println("intArray @ 1: " + intArray[1]); // => 1 - - // Дополнительно. - // ArrayLists - похож на массив, но предлагает больше возможностей, - // его размер изменяемый. - // LinkedLists - реализация двусвязного списка. Все операции - // выполняются так, как ожидается от двусвязного - // списка. - // Maps - набор объектов, в которых присутствует связь - // ключ-значение. В Map ключ не может дублироваться. - // Каждый ключ связан только с одним значением. - // HashMaps - этот класс использует хэш-таблицу для реализации - // интерфейса Map. Это позволяет сохранить постоянной - // скорость выполнения базовых операций, таких как - // добавление и удаление элементов, вне зависимости - // от размера множества. - - /////////////////////////////////////// - // Операторы - /////////////////////////////////////// - System.out.println("\n->Операторы"); - - int i1 = 1, i2 = 2; // Сокращение для множественного объявления. - - // Арифметика в Java проста. - System.out.println("1+2 = " + (i1 + i2)); // => 3 - System.out.println("2-1 = " + (i2 - i1)); // => 1 - System.out.println("2*1 = " + (i2 * i1)); // => 2 - System.out.println("1/2 = " + (i1 / i2)); // => 0 (0.5 округлено) - - // Остаток от деления - System.out.println("11%3 = "+(11 % 3)); // => 2 - - // Операторы сравнения. - System.out.println("3 == 2? " + (3 == 2)); // => false - System.out.println("3 != 2? " + (3 != 2)); // => true - System.out.println("3 > 2? " + (3 > 2)); // => true - System.out.println("3 < 2? " + (3 < 2)); // => false - System.out.println("2 <= 2? " + (2 <= 2)); // => true - System.out.println("2 >= 2? " + (2 >= 2)); // => true - - // Побитовые операторы! - /* - ~ Унарное побитовое дополнение. - << Знаковый сдвиг влево. - >> Знаковый сдвиг вправо. - >>> Беззнаковый сдвиг вправо. - & Побитовое И. - ^ Побитовое исключающее ИЛИ. - | Побитовое ИЛИ. - */ - - // Операторы инкремента. - int i = 0; - System.out.println("\n->Inc/Dec-rementation"); - // Операторы ++ и -- увеличивают и уменьшают значение на 1 соответственно. - // Если они находятся перед переменной, сначала происходит - // увеличение/уменьшение, затем операция, если после, - // то сначала выполняется операция, затем увеличение/уменьшение. - System.out.println(i++); //i = 1, напечатает 0 (пре-инкремент) - System.out.println(++i); //i = 2, напечатает 2 (пре-инкремент) - System.out.println(i--); //i = 1, напечатает 2 (пост-декремент) - System.out.println(--i); //i = 0, напечатает 0 (пре-декремент) - - /////////////////////////////////////// - // Контролирующие операторы. - /////////////////////////////////////// - System.out.println("\n->Контролирующие операторы"); - - // Оператор if такой же, как и в С. - int j = 10; - if (j == 10){ - System.out.println("Я напечатаюсь!"); - } else if (j > 10) { - System.out.println("Я нет."); - } else { - System.out.println("И я тоже нет."); - } - - // Цикл while. - int fooWhile = 0; - while(fooWhile < 100) - { - // System.out.println(fooWhile); - // Увеличить счетчик. - // Будет пройдено 100 итераций, fooWhile 0,1,2...99 - fooWhile++; - } - System.out.println("Значение fooWhile: " + fooWhile); - - // Цикл Do While. - int fooDoWhile = 0; - do - { - // System.out.println(fooDoWhile); - // Увеличить счетчик. - // Будет пройдено 100 итераций, fooDoWhile 0->99 - fooDoWhile++; - } while(fooDoWhile < 100); - System.out.println("Значение fooDoWhile: " + fooDoWhile); - - // Цикл for. - int fooFor; - // Структура цикла for => for(<начальное_состояние>; <условие>; <шаг>) - for(fooFor=0; fooFor<10; fooFor++){ - // System.out.println(fooFor); - // Пройдет 10 итераций., fooFor 0->9 - } - System.out.println("Значение fooFor: " + fooFor); - - // Цикл For Each - // Автоматический проход через массив или список объектов. - int[] fooList = {1,2,3,4,5,6,7,8,9}; - // Структура цикла for each => for(<объект> : <объект_массив>) - // читается как: для каждого объекта в массиве - // заметка: тип объекта должен совпадать с типом массива. - - for( int bar : fooList ){ - System.out.println(bar); - //Пройдет 9 итераций и напечатает 1-9 на новых строках. - } - - // Switch Case - // switch работает с типами byte, short, char и int. - // Также он работает с перечислениями, - // классом String и с некоторыми классами-обертками над - // примитивными типами: Character, Byte, Short и Integer. - int month = 3; - String monthString; - switch (month){ - case 1: - monthString = "Январь"; - break; - case 2: - monthString = "Февраль"; - break; - case 3: - monthString = "Март"; - break; - default: - monthString = "Другой месяц"; - break; - } - System.out.println("Результат Switch Case: " + monthString); - - // Сокращенный синтаксис условного оператора. - // Вы можете использовать этот синтаксис для быстрого присвоения - // или логических переходов. - // Читается так: "Если (условие) истинно, использовать <значение 1>, - // в ином случае, использовать <значение 2>" - int foo = 5; - String bar = (foo < 10) ? "A" : "B"; - System.out.println(bar); // Напечатает А, потому что условие истинно - - - /////////////////////////////////////// - // Преобразование и приведение типов данных. - /////////////////////////////////////// - - // Преобразование данных. - - // Преобразование строки в число. - Integer.parseInt("123"); // Вернет числовое представление "123". - - // Преобразование числа в строку - Integer.toString(123); // Вернет строковое представление 123. - - // Для других преобразований смотрите следующие классы: - // Double - // Long - // String - - // Приведение типов - // Вы так же можете приводить типы в Java. - // Подробнее об этом можно узнать по ссылке: - // http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html - - - /////////////////////////////////////// - // Классы и Функции - /////////////////////////////////////// - - System.out.println("\n->Классы и Функции"); - - // (Класс Bicycle определен ниже) - - // Для создания экземпляра класса используется new. - Bicycle trek = new Bicycle(); - - // Вызов методов объекта. - trek.speedUp(3); // Вы должны всегда использовать сеттеры и геттеры. - trek.setCadence(100); - - // toString возвращает строковое представление объекта. - System.out.println("trek info: " + trek.toString()); - - } // Конец метода main. -} // Конец класса LearnJava. - - -// Вы можете включать другие, не публичные классы в .java файл. - - -// Синтаксис объявления класса: -// <public/private/protected> class <имя класса>{ -// // Поля с данными, конструкторы, функции, все внутри. -// // Функции называют методами в Java. -// } - -class Bicycle { - - // Поля/Переменные класса Bicycle. - public int cadence;// Публичные(public): Доступны из любого места. - private int speed; // Приватные(private): Доступны только внутри класса. - protected int gear;// Защищенные(protected): Доступ из класса и наследников. - String name; // по умолчанию: Доступны только внутри пакета. - - // Конструкторы - способ создания класса. - // Это конструктор: - public Bicycle() { - gear = 1; - cadence = 50; - speed = 5; - name = "Bontrager"; - } - - // Это конструктор, который принимает аргументы: - public Bicycle(int startCadence, int startSpeed, int startGear, String name) { - this.gear = startGear; - this.cadence = startCadence; - this.speed = startSpeed; - this.name = name; - } - - // Синтаксис функций: - // <public/private/protected> <тип возвращаемого значения> <имя>(<аргументы>) - - // Классы в Java часто реализуют сеттеры и геттеры для своих полей. - - // Синтаксис определения метода: - // <модификатор> <тип возвращаемого значения> <имя>(<аргументы>) - public int getCadence() { - return cadence; - } - - // void-методы не возвращают значений. - public void setCadence(int newValue) { - cadence = newValue; - } - - public void setGear(int newValue) { - gear = newValue; - } - - public void speedUp(int increment) { - speed += increment; - } - - public void slowDown(int decrement) { - speed -= decrement; - } - - public void setName(String newName) { - name = newName; - } - - public String getName() { - return name; - } - - //Метод для отображения значений атрибутов объекта. - @Override - public String toString() { - return "gear: " + gear + - " cadence: " + cadence + - " speed: " + speed + - " name: " + name; - } -} // конец класса Bicycle. - -// PennyFarthing - это класс, наследованный от Bicycle -class PennyFarthing extends Bicycle { - // (Penny Farthings - это такие велосипеды с большим передним колесом, - // у них нет передач.) - - public PennyFarthing(int startCadence, int startSpeed){ - // Вызов конструктора родительского класса. - super(startCadence, startSpeed, 0, "PennyFarthing"); - } - - // Вы должны пометить метод, который переопределяете, при помощи @аннотации - // Чтобы узнать о том, что такое аннотации и зачем они нужны, почитайте: - // http://docs.oracle.com/javase/tutorial/java/annotations/ - @Override - public void setGear(int gear) { - gear = 0; - } - -} - -// Интерфейсы -// Синтаксис определения интерфейса: -// <модификатор доступа> interface <имя> extends <базовый интерфейс> { -// // Константы -// // Определение методов. -//} - -// Пример - Еда: -public interface Edible { - // Любой класс, реализующий этот интерфейс, должен реализовать этот метод. - public void eat(); -} - -public interface Digestible { - public void digest(); -} - - -// Сейчас мы можем создать класс, реализующий оба эти интерфейса. -public class Fruit implements Edible, Digestible { - public void eat() { - //... - } - - public void digest() { - //... - } -} - -// В Java Вы можете наследоватьтолько один класс, однако можете реализовывать -// несколько интерфейсов. Например: -public class ExampleClass extends ExampleClassParent implements InterfaceOne, InterfaceTwo { - public void InterfaceOneMethod() { - - } - - public void InterfaceTwoMethod() { - - } -} - -``` - -## Почитать еще - -Здесь приведены ссылки только для того, чтобы получить общее представление о Java. Гуглите, чтобы найти какие-либо конкретные примеры. - -**Официальные руководства Oracle**: - -* [Java Tutorial Trail from Sun / Oracle](http://docs.oracle.com/javase/tutorial/index.html) - -* [Модификаторы доступа в Java](http://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html) - -* [Концепции объектно-ориентированного программирования](http://docs.oracle.com/javase/tutorial/java/concepts/index.html): - * [Наследование](http://docs.oracle.com/javase/tutorial/java/IandI/subclasses.html) - * [Полиморфизм](http://docs.oracle.com/javase/tutorial/java/IandI/polymorphism.html) - * [Абстракция](http://docs.oracle.com/javase/tutorial/java/IandI/abstract.html) - -* [Исключения](http://docs.oracle.com/javase/tutorial/essential/exceptions/index.html) - -* [Интерфейсы](http://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html) - -* [Generics](http://docs.oracle.com/javase/tutorial/java/generics/index.html) - -* [Java Code Conventions](http://www.oracle.com/technetwork/java/codeconv-138413.html) - -**Уроки онлайн** - -* [Learneroo.com - Изучение Java](http://www.learneroo.com) - -* [Codingbat.com](http://codingbat.com/java) - - -**Книги**: - -* [Head First Java](http://www.headfirstlabs.com/books/hfjava/) - -* [Objects First with Java](http://www.amazon.com/Objects-First-Java-Practical-Introduction/dp/0132492660) - -* [Java The Complete Reference](http://www.amazon.com/gp/product/0071606300) - - |