Основы Java
Сергей Немчинский, foxmindEd,
2016
Переменные, циклы, условные операторы
или как вообще писать программу
Hello World!
class HelloWorld {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
Переменные
Что такое переменная
 Тип переменной
 Примитивные типы
 Ссылочные типы
 Описание переменной
тип имя [ = значение];
 Присвоение значения
Примитивные типы
Целочисленные типы

Тип Размер (бит) Диапазон
byte 8 бит от -128 до 127
short 16 бит от -32768 до 32767
char 16 бит от 0 до 65535
int 32 бит
от -2147483648 до
2147483647
long 64 бит
от -9223372036854775808
до 9223372036854775807
Целочисленные типы
public class IntegralTypes {
public static void main(String[] args) {
byte b = 228;
// Вот тут будет ошибка, т.к. у нас диапазон от -128 до 127!
short s = 1337;
int i = 1488;
long l = 2147483648L;
// Постфикс l или L обозначает литералы типа long
System.out.println(i);
System.out.println(b);
System.out.println(s);
System.out.println(l);
}
}
Целочисленные типы
public class Characters {
public static void main(String[] args) {
char a = 'a', b, c = 'c';
b = (char) ((a + c) / 2);
// Можно складывать, вычитать, делить и умножать
// Но из-за особенностей арифметики Java результат
// приходится приводить к типу char явно
System.out.println(b); // Выведет символ 'b'
}
}
Типы с плавающей точкой
Тип Размер (бит) Диапазон
float 32 от -1.4e-45f до 3.4e+38f
double 64 от -4.9e-324 до 1.7е+308
Типы с плавающей точкой
public class FloatingPointTypes {
public static void main(String[] args) {
double a, b = 4.12;
a = 22.1 + b;
float pi = 3.14f;
// При использовании типа float
// требуется указывать суффикс f или F
// так как дробные литералы типа
// double
float anotherPi = (float) 3.14;
// Можно привести явно
double c = 27;
double d = pi * c;
System.out.println(d);
}
}
Логический тип
Тип Размер (бит) Значение
boolean
1 (в массивах), 32 (не в
массивах используется
int)
true (истина) или false
(ложь)
Ссылочные данные
public class Strings {
public static void main(String[] args) {
String a = "Hello", b = "World";
System.out.println(a + " " + b);
// Здесь + означает объединение (конкатенацию) строк
// Пробел не вставляется автоматически
// Строки конкатенируются слева направо, надо помнить это когда соединяешь строку и примитив
String c = 2 + 2 + ""; // "4"
String d = "" + 2 + 2; // "22"
d = "" + (2 + 2); // а теперь d тоже "4"
String foo = "a string";
String bar = "a string";
// bar будет указывать на тот же объект что и foo
String baz = new String("a string");
// Чтобы гарантированно создать новую строку надо вызвать конструктор
System.out.println("foo == bar ? " + (foo == bar));
// == сравнивает ссылки на объекты
System.out.println("foo равен bar ? " + (foo.equals(bar)));
// Метод equals служит для проверки двух объектов на равенство
System.out.println("foo == baz ? " + (foo == baz));
System.out.println("foo равен baz ? " + (foo.equals(baz)));
}
}
Обертки
Тип Класс-обертка
byte Byte
short Short
int Integer
long Long
char Character
float Float
double Double
Обертки
int i;
Integer boxed; // Обычное создание объекта
boxed = new Integer(i); // Фабричный метод boxed =
Integer.valueOf(i);
// Автоматическая упаковка, компилятор
// просто вставит вызов Integer.valueOf
boxed = i;
Переменные
 Инициализация переменных
 Константы, модификатор final
Операции
 Арифметические операции
 Инкремент и декремент
 Операции отношения
 Логические операции
 Поразрядные операции
 Класс Math
 Приоритет операций
Арифметические операции
int a1 = 3 + 4; // результат равен 7
int a2 = 10 - 7; //результат равен 3
int a3 = 10 * 5; //результат равен 50
double a4 = 14.0 / 5.0; //результат равен 2.8
double a5 = 14.0 % 5.0; //результат равен 4
int b1 = 5;
int c1 = ++b1; // c1=6; b1=6
int b2 = 5;
int c2 = b2++; // c2=5; b2=6
int b3 = 5;
int c3 = --b3; // c3=4; b3=4
int b4 = 5;
int c4 = b4--; // c4=5; b4=4
Логические (побитовые) операции
 & логическое умножение
 | логическое сложение
 ^ исключающее ИЛИ
 ~ отрицание
 << сдвиг слево
 >> сдвиг вправо
Операции сравнения
 == равенство
 != неравенство
 < меньше
 > больше
 <= меньше или равно
 => больше или равно
|| логическое ИЛИ
 && логическое И
Операции сравнения
boolean a1 = (5 > 6) || (4 < 6);
// 5 > 6 - false, 4 < 6 - true, поэтому возвращается true
boolean a2 = (5 > 6) || (4 > 6);
// 5 > 6 - false, 4 > 6 - false, поэтому возвращается false
boolean a3 = (5 > 6) && (4 < 6);
// 5 > 6 - false, 4 < 6 - true, поэтому возвращается false
boolean a4 = (50 > 6) && (4 / 2 < 3);
// 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается true
boolean a5 = (5 > 6) ^ (4 < 6);
// 5 > 6 - false, 4 < 6 - true, поэтому возвращается true
boolean a6 = (50 > 6) ^ (4 / 2 < 3);
// 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается false
Управляющие операции
 Оператор if
class Test {
public static void main(String[] args){
if(true){
System.out.println("Тест прошёл успешно.");
}
}
}
Управляющие операции
 Оператор else
class AnotherTest {
public static void main(String[] args){
if(false){
System.out.println("Тест прошёл не очень успешно.");
} else {
System.out.println("Тест прошёл успешно.");
}
}
}
Управляющие операции
 Оператор switch
class SwitchTest {
public static void main(String[] args) {
int i=2;
switch(i) {
case 1:
System.out.println("Тест работает.");
break;
case 2:
System.out.println("Тест добрый.");
break;
case 3:
System.out.println("Тест поможет вам.");
break;
}
}
}
Управляющие операции
 Ключевое слово break
 Ключевое слово deafult
class DefaultTest {
public static void main(String[] args) {
int i = 152;
switch(i) {
case 1:
System.out.println("Тест работает");
break;
case 2:
System.out.println("Тест добрый");
break;
case 3:
System.out.println("Тест поможет вам");
break;
default:
System.out.println("Тест интересный");
break;
}
}
}
Область видимости
 Блоки
 Локальные переменные
 Область видимости
 Тернарный оператор
Циклы
 Понятие цикла
 Условие выхода
 Индекс цикла
 Оператор break
 Оператор continue
 Оператор return
Цикл while
public class Цикл {
public static void main (String [] args){
int i = 0;
while (i < 10){
System.out.print (i++);
}
}
}
Цикл do while
public class Цикл {
public static void main (String [] args ){
int i = 0;
do{
System.out.print (++i);
} while (i < 10);
}
}
Цикл for
public class Цикл {
public static void main (String [] args ){
for (int i = 0; i < 10; ++i){
System.out.print ("Ku-Ku");
//Обратите внимание на метод print
// В отличие от println метод print не
// переводит курсор на новую строку
}
}
}
Цикл for-each
public class ForeachArray {
public static void main(String args[]) {
String[] data = {"Toronto","Stockholm"};
for (String s : data) {
System.out.println(s);
}
}
}
Массивы
 Понятие массива
 Объявление
 Создание и инициализация
 Размер массива
 Многомерные массивы
Массивы
// declares an array of integers
int[] anArray;
// create an array of integers
anArray = new int[10];
anArray[0] = 100; // initialize first element
anArray[1] = 200; // initialize second element
anArray[2] = 300; // and so forth
int[] anArray = { 100, 200, 300, 400, 500, 600, 700,
800, 900, 1000 };
Массивы
class MultiDimArrayDemo {
public static void main(String[] args) {
String[][] names = {
{"Mr. ", "Mrs. ", "Ms. "},
{"Smith", "Jones«
} }; // Mr. Smith
System.out.println(names[0][0] +
names[1][0]); // Ms. Jones
System.out.println(names[0][2] + names[1][1]);
}
}
Массивы
class ArrayCopyDemo {
public static void main(String[] args) {
char[] copyFrom = {
'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd'
};
char[] copyTo = new char[7];
System.arraycopy(copyFrom, 2, copyTo, 0, 7);
System.out.println(new String(copyTo));
}
}
Методы
 Понятие метода
 Сигнатура
 Тело метода
 Вызов метода
 Параметры
 Возвращение значения
 Перегрузка методов
 Рекурсия
 Произвольное количество параметров
Методы
 Modifiers—such as public, private, and others you will learn about
later.
 The return type—the data type of the value returned by the
method, or void if the method does not return a value.
 The method name—the rules for field names apply to method
names as well, but the convention is a little different.
 The parameter list in parenthesis—a comma-delimited list of input
parameters, preceded by their data types, enclosed by parentheses,
(). If there are no parameters, you must use empty parentheses.
 An exception list—to be discussed later.
 The method body, enclosed between braces—the method's code,
including the declaration of local variables, goes here.
Методы
public double calculateAnswer(double wingSpan,
int numberOfEngines,
double length,
double grossTons) {
//do the calculation here
}
Методы
public class DataArtist {
...
public void draw(String s) {
...
}
public void draw(int i) {
...
}
public void draw(double f) {
...
}
public void draw(int i, double f) {
...
}
}
Методы
public double computePayment(
double loanAmt,
double rate,
double futureValue,
int numPeriods) {
double interest = rate / 100.0;
double partial1 = Math.pow((1 + interest), -
numPeriods);
double denominator = (1 - partial1) / interest;
double answer = (-loanAmt / denominator) -
((futureValue * partial1) / denominator);
return answer;
}
Методы
public Polygon polygonFrom(Point... corners) {
int numberOfSides = corners.length;
double squareOfSide1, lengthOfSide1;
squareOfSide1 = (corners[1].x - corners[0].x) *
(corners[1].x - corners[0].x) +
(corners[1].y - corners[0].y) *
(corners[1].y - corners[0].y);
lengthOfSide1 = Math.sqrt(squareOfSide1);
// more method body code follows that creates and returns a
// polygon connecting the Points
}
Ваши вопросы
http://foxmindEd.com

основы Java переменные, циклы

  • 1.
    Основы Java Сергей Немчинский,foxmindEd, 2016 Переменные, циклы, условные операторы или как вообще писать программу
  • 3.
    Hello World! class HelloWorld{ public static void main(String[] args) { System.out.println("Hello World!"); } }
  • 4.
    Переменные Что такое переменная Тип переменной  Примитивные типы  Ссылочные типы  Описание переменной тип имя [ = значение];  Присвоение значения
  • 5.
    Примитивные типы Целочисленные типы  ТипРазмер (бит) Диапазон byte 8 бит от -128 до 127 short 16 бит от -32768 до 32767 char 16 бит от 0 до 65535 int 32 бит от -2147483648 до 2147483647 long 64 бит от -9223372036854775808 до 9223372036854775807
  • 6.
    Целочисленные типы public classIntegralTypes { public static void main(String[] args) { byte b = 228; // Вот тут будет ошибка, т.к. у нас диапазон от -128 до 127! short s = 1337; int i = 1488; long l = 2147483648L; // Постфикс l или L обозначает литералы типа long System.out.println(i); System.out.println(b); System.out.println(s); System.out.println(l); } }
  • 7.
    Целочисленные типы public classCharacters { public static void main(String[] args) { char a = 'a', b, c = 'c'; b = (char) ((a + c) / 2); // Можно складывать, вычитать, делить и умножать // Но из-за особенностей арифметики Java результат // приходится приводить к типу char явно System.out.println(b); // Выведет символ 'b' } }
  • 8.
    Типы с плавающейточкой Тип Размер (бит) Диапазон float 32 от -1.4e-45f до 3.4e+38f double 64 от -4.9e-324 до 1.7е+308
  • 9.
    Типы с плавающейточкой public class FloatingPointTypes { public static void main(String[] args) { double a, b = 4.12; a = 22.1 + b; float pi = 3.14f; // При использовании типа float // требуется указывать суффикс f или F // так как дробные литералы типа // double float anotherPi = (float) 3.14; // Можно привести явно double c = 27; double d = pi * c; System.out.println(d); } }
  • 10.
    Логический тип Тип Размер(бит) Значение boolean 1 (в массивах), 32 (не в массивах используется int) true (истина) или false (ложь)
  • 11.
    Ссылочные данные public classStrings { public static void main(String[] args) { String a = "Hello", b = "World"; System.out.println(a + " " + b); // Здесь + означает объединение (конкатенацию) строк // Пробел не вставляется автоматически // Строки конкатенируются слева направо, надо помнить это когда соединяешь строку и примитив String c = 2 + 2 + ""; // "4" String d = "" + 2 + 2; // "22" d = "" + (2 + 2); // а теперь d тоже "4" String foo = "a string"; String bar = "a string"; // bar будет указывать на тот же объект что и foo String baz = new String("a string"); // Чтобы гарантированно создать новую строку надо вызвать конструктор System.out.println("foo == bar ? " + (foo == bar)); // == сравнивает ссылки на объекты System.out.println("foo равен bar ? " + (foo.equals(bar))); // Метод equals служит для проверки двух объектов на равенство System.out.println("foo == baz ? " + (foo == baz)); System.out.println("foo равен baz ? " + (foo.equals(baz))); } }
  • 12.
    Обертки Тип Класс-обертка byte Byte shortShort int Integer long Long char Character float Float double Double
  • 13.
    Обертки int i; Integer boxed;// Обычное создание объекта boxed = new Integer(i); // Фабричный метод boxed = Integer.valueOf(i); // Автоматическая упаковка, компилятор // просто вставит вызов Integer.valueOf boxed = i;
  • 14.
  • 15.
    Операции  Арифметические операции Инкремент и декремент  Операции отношения  Логические операции  Поразрядные операции  Класс Math  Приоритет операций
  • 16.
    Арифметические операции int a1= 3 + 4; // результат равен 7 int a2 = 10 - 7; //результат равен 3 int a3 = 10 * 5; //результат равен 50 double a4 = 14.0 / 5.0; //результат равен 2.8 double a5 = 14.0 % 5.0; //результат равен 4 int b1 = 5; int c1 = ++b1; // c1=6; b1=6 int b2 = 5; int c2 = b2++; // c2=5; b2=6 int b3 = 5; int c3 = --b3; // c3=4; b3=4 int b4 = 5; int c4 = b4--; // c4=5; b4=4
  • 17.
    Логические (побитовые) операции & логическое умножение  | логическое сложение  ^ исключающее ИЛИ  ~ отрицание  << сдвиг слево  >> сдвиг вправо
  • 18.
    Операции сравнения  ==равенство  != неравенство  < меньше  > больше  <= меньше или равно  => больше или равно || логическое ИЛИ  && логическое И
  • 19.
    Операции сравнения boolean a1= (5 > 6) || (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается true boolean a2 = (5 > 6) || (4 > 6); // 5 > 6 - false, 4 > 6 - false, поэтому возвращается false boolean a3 = (5 > 6) && (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается false boolean a4 = (50 > 6) && (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается true boolean a5 = (5 > 6) ^ (4 < 6); // 5 > 6 - false, 4 < 6 - true, поэтому возвращается true boolean a6 = (50 > 6) ^ (4 / 2 < 3); // 50 > 6 - true, 4/2 < 3 - true, поэтому возвращается false
  • 20.
    Управляющие операции  Операторif class Test { public static void main(String[] args){ if(true){ System.out.println("Тест прошёл успешно."); } } }
  • 21.
    Управляющие операции  Операторelse class AnotherTest { public static void main(String[] args){ if(false){ System.out.println("Тест прошёл не очень успешно."); } else { System.out.println("Тест прошёл успешно."); } } }
  • 22.
    Управляющие операции  Операторswitch class SwitchTest { public static void main(String[] args) { int i=2; switch(i) { case 1: System.out.println("Тест работает."); break; case 2: System.out.println("Тест добрый."); break; case 3: System.out.println("Тест поможет вам."); break; } } }
  • 23.
    Управляющие операции  Ключевоеслово break  Ключевое слово deafult class DefaultTest { public static void main(String[] args) { int i = 152; switch(i) { case 1: System.out.println("Тест работает"); break; case 2: System.out.println("Тест добрый"); break; case 3: System.out.println("Тест поможет вам"); break; default: System.out.println("Тест интересный"); break; } } }
  • 24.
    Область видимости  Блоки Локальные переменные  Область видимости  Тернарный оператор
  • 25.
    Циклы  Понятие цикла Условие выхода  Индекс цикла  Оператор break  Оператор continue  Оператор return
  • 26.
    Цикл while public classЦикл { public static void main (String [] args){ int i = 0; while (i < 10){ System.out.print (i++); } } }
  • 27.
    Цикл do while publicclass Цикл { public static void main (String [] args ){ int i = 0; do{ System.out.print (++i); } while (i < 10); } }
  • 28.
    Цикл for public classЦикл { public static void main (String [] args ){ for (int i = 0; i < 10; ++i){ System.out.print ("Ku-Ku"); //Обратите внимание на метод print // В отличие от println метод print не // переводит курсор на новую строку } } }
  • 29.
    Цикл for-each public classForeachArray { public static void main(String args[]) { String[] data = {"Toronto","Stockholm"}; for (String s : data) { System.out.println(s); } } }
  • 30.
    Массивы  Понятие массива Объявление  Создание и инициализация  Размер массива  Многомерные массивы
  • 31.
    Массивы // declares anarray of integers int[] anArray; // create an array of integers anArray = new int[10]; anArray[0] = 100; // initialize first element anArray[1] = 200; // initialize second element anArray[2] = 300; // and so forth int[] anArray = { 100, 200, 300, 400, 500, 600, 700, 800, 900, 1000 };
  • 32.
    Массивы class MultiDimArrayDemo { publicstatic void main(String[] args) { String[][] names = { {"Mr. ", "Mrs. ", "Ms. "}, {"Smith", "Jones« } }; // Mr. Smith System.out.println(names[0][0] + names[1][0]); // Ms. Jones System.out.println(names[0][2] + names[1][1]); } }
  • 33.
    Массивы class ArrayCopyDemo { publicstatic void main(String[] args) { char[] copyFrom = { 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' }; char[] copyTo = new char[7]; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo)); } }
  • 34.
    Методы  Понятие метода Сигнатура  Тело метода  Вызов метода  Параметры  Возвращение значения  Перегрузка методов  Рекурсия  Произвольное количество параметров
  • 35.
    Методы  Modifiers—such aspublic, private, and others you will learn about later.  The return type—the data type of the value returned by the method, or void if the method does not return a value.  The method name—the rules for field names apply to method names as well, but the convention is a little different.  The parameter list in parenthesis—a comma-delimited list of input parameters, preceded by their data types, enclosed by parentheses, (). If there are no parameters, you must use empty parentheses.  An exception list—to be discussed later.  The method body, enclosed between braces—the method's code, including the declaration of local variables, goes here.
  • 36.
    Методы public double calculateAnswer(doublewingSpan, int numberOfEngines, double length, double grossTons) { //do the calculation here }
  • 37.
    Методы public class DataArtist{ ... public void draw(String s) { ... } public void draw(int i) { ... } public void draw(double f) { ... } public void draw(int i, double f) { ... } }
  • 38.
    Методы public double computePayment( doubleloanAmt, double rate, double futureValue, int numPeriods) { double interest = rate / 100.0; double partial1 = Math.pow((1 + interest), - numPeriods); double denominator = (1 - partial1) / interest; double answer = (-loanAmt / denominator) - ((futureValue * partial1) / denominator); return answer; }
  • 39.
    Методы public Polygon polygonFrom(Point...corners) { int numberOfSides = corners.length; double squareOfSide1, lengthOfSide1; squareOfSide1 = (corners[1].x - corners[0].x) * (corners[1].x - corners[0].x) + (corners[1].y - corners[0].y) * (corners[1].y - corners[0].y); lengthOfSide1 = Math.sqrt(squareOfSide1); // more method body code follows that creates and returns a // polygon connecting the Points }
  • 40.