Вы достигли нового уровня

Уровень 4

Я - лучший

1 Лучшее – враг хорошего

Быть лучше – это значит быть лучше других, превосходить их и отличаться от них. Вы не можете делать то же, что и все, чтобы стать лучшим. Вам нужен свой путь.

Вы не можете быть лучшим во всем: пока вы изучаете все, кто-то специализируется на чем-то одном. Лучший способ стать лучшим - это выбрать одну очень узкую специальность и стать в ней специалистом мирового уровня.

Если вы занимаетесь в балете с пяти лет по 8 часов в день, всегда найдется тот, кто занимается с трех лет и по 10 часов в день. К пятнадцати годам его опыт будет превосходить ваш на 5000 часов. А ведь есть еще и гении, на каждый час которого вам нужно заниматься три. И лучшие в мире преподаватели, а вы, например, самоучка.

Единственный способ стать лучшим, не имея своего уникального пути – это работать больше всех, быть талантливым, иметь хороших преподавателей и богатых родителей. Хотя – это уже не совсем «как все», да?

Но даже самая быстрая и трудолюбивая в мире лошадь не обгонит автомобиль. Вам нужна своя стратегия, свой уникальный план, чтобы стать лучшим, не жертвуя при этом всем.

2 Лучшим стать непросто

Всегда найдется кто-то, кто начал раньше вас. У кого-то богатые родители, кто-то учился в самом лучшем в мире университете. Кого-то родители взяли к себе на работу. Ничего страшного. Бывает. Это называется – разные стартовые условия. Но таких людей – меньшинство, в мире полно людей, которые сами добились успеха, благодаря своему нестандартному мышлению, трудолюбию и способности постоянно учиться всему новому.

Жизнь напоминает игру в карты. Любой выиграет, если ему раздали одни козыри, профессионал выигрывает не зависимо от розданных карт. Он сводит их влияние к минимуму своим мастерством.

Никто не понимает этого так хорошо, как профессиональные спортсмены. У многих из них есть всего несколько лет, чтобы реализовать свой шанс и достичь успеха.

3 Всегда есть тот, кто готов работать больше, чем вы

Таких людей много. Среди них есть трудоголики, перфекционисты и люди, просто влюбленные в свою работу. Да, многие из них жертвуют семьей, друзьями, и готовы работать по 80 часов в неделю. Работа и есть их жизнь. Это путь не для нас. Но они отлично способны вытеснить вас на карьерную обочину. Вы не готовы проводить 6 месяцев в году в командировках, чтобы получить повышение, а они – готовы.

Средний китайский школьник усерднее европейского, а сотрудник в Китае готов выполнять вашу работу за четверть вашей зарплаты.

Много работать – не путь к успеху, но работать мало – путь к поражению.

4 Культурная среда

Мало где в мире принято много и честно работать. Если в колледже вы много учитесь, пропадаете в библиотеке и сами сдаете все экзамены, то вы – заучка. А если «весь семестр гулял, но сдал» или другим способом «победил систему», то вы – молодец. На дороге под названием «работай больше» слишком большая конкуренция (дорожная пробка, если хотите), этот способ больше не работает. Вам нужно искать другой путь.

Сложно стремиться к успеху, когда само общество ненавидит успешных и богатых. Ненавидит и завидует. Бедные люди, дорвавшись до денег, начинают выставлять свое богатство на показ. Действительно богатые люди ведут себя скромнее: Билл Гейтс может ходить в футболке за $10, потому что и в ней и без нее он – Билл Гейтс.

Между тем именно бизнесмены создают рабочие места и двигают экономику вперед. Заработная плата наемных сотрудников – это результат конкуренции бизнеса за лучшие кадры. Чем больше бизнесов в стране, тем выше в ней будут зарплаты.

Надо любить свою жизнь и свое время. Деньги – это всего лишь инструмент, который делает вас финансово независимым. А если вы финансово независимы, то вы можете делать, что хотите и не делать, то чего не хотите.

Поосторожнее с «жертвами», когда будете становиться лучшим. Не жертвуйте действительно важными вещами: семьей, друзьями, здоровьем, любимой работой. Быть финансово успешным в 50 лет и не иметь семьи, друзей, здоровья, не любить работу – это не успех, это провал.



Обзор зарплат по Москве Зарплаты в Киеве

Решил стать программистом - купи подписку. Вся мощь проекта JavaRush к твоим услугам.

1. Области действия переменных

- Профессор всё свою линию гнёт. Все они, старые лекторишки, такие. Всё, что он может рассказать, ты можешь прочесть в книгах. Запомни, ещё ни один человек не научился плавать, прослушав с десяток лекций по этому поводу. Лекции помогают, когда ты 100% в теме и знаешь сам чуть меньше этого профессора.

- Ну, от лекций профессора же есть польза.

- Ага... вернее, мы надеемся, что она есть. Чем больше точек зрения на один и тот же материал ты услышишь, тем больше задумаешься, а как же дела обстоят на самом деле. Услышав только одну точку зрения, ты либо веришь ей, либо нет. Ладно, давай перейдём к делу.

- Давай рассмотрим картинку, которую я уже давал тебе ранее:

1 Переменная, объявленная в методе, существует/видна с начала объявления до конца метода.

2 Переменная, объявленная в блоке кода, существует до конца этого блока кода.

3 Переменные - аргументы метода - существуют до конца выхода из метода.

4 Переменные класса/объекта существуют все время жизни содержащего их объекта. Их видимость регулируется специальными модификаторами доступа.

5 Статические переменные классов существуют все время работы программы. Их видимость также определяется модификаторами доступа.

- Да, помню эту картинку.

- Вот и отлично. Давай напомню тебе некоторые моменты.

- Все переменные, объявленные внутри методов, существуют/видны с начала их объявления до конца метода (пример: 1).

- Если переменная определена/объявлена в каком-то блоке кода, то она существует до конца этого блока кода (пример: 2).

- Если переменная является аргументом функции, то она существует/видна во всем теле данного метода (пример: 3) .

- Если переменная является переменной класса (пример: 4), то она привязана к конкретному объекту и существует все время, пока существует объект данного класса. Если нет ни одного объекта, то нет и ни одной копии переменной. К переменной можно обращаться (переменная видна) из всех методов класса, независимо от того, объявлены они до неё или после неё. Для каждого объекта создаётся своя, независимая от других объектов, переменная. Доступ к переменной невозможен из статических методов.

- Если переменная объявлена статической – помечена ключевым словом static, то она существует все время, когда существует её класс. Обычно JVM загружает класс в память при первом его использовании, тогда же и инициализируются статические переменные.

- В примере выше у нас объявлен класс Cat, у которого есть 4 переменные: a,b,s – обычные, а count – статическая. Если создать несколько объектов такого класса (например, 3 шт.), то каждый из них будет содержать свою собственную копию обычных переменных класса. Статическая же переменная – общая на всех. Формально она даже не находится внутри этих объектов, т.к. существует даже тогда, когда ни одного объекта класса Cat создано не было.

- Вот что произойдет, если мы объявим переменную s статической:

- Ага. Вроде понятно.

- А можно объявить одинаковые переменные?

- В методе - нет. Все переменные, объявленные внутри метода, должны иметь уникальные имена. Аргументы метода также считаются его переменными.

- А как насчёт переменных класса?

- Переменные класса тоже должны быть уникальными в рамках каждого конкретного класса.

Но есть исключение – имена переменных метода и переменных класса могут совпадать.

- А если мы в коде изменяем переменную, а таких переменных две, какая будет изменяться?

- Если в методе видны (доступны) несколько переменных, например, переменная класса и переменная метода, то тогда обращение произойдет к переменной метода.

Пример с двумя переменными count
1
2
3
4
5
6
7
8
9
10
11
12
13
class Main
{
    public int count = 0;     //объявили переменную класса

    public void run()
    {
        count = 15;           //обращение к переменной класса
        int count = 10;       //объявили локальную переменную метода
        count ++;             //обращение к переменной метода
    }
}

- В этом коде объявлены две переменных count. В строке 4 объявлена переменная класса, а в строке 9 – переменная метода.

- Когда метод run будет исполняться, то произойдет вот что:

- В строке 8 мы обращаемся к переменной класса и присваиваем ей значение 15

- В строке 9 объявляется (создается) новая переменная метода – count. Она закрывает собой переменную класса. Любой дальнейший код в методе будет видеть (обращаться) именно к переменной метода.

- Понятно.

- Переменная метода закрывает собой переменную класса. Т.е. обращение будет происходить к переменной метода. Но к переменной класса тоже можно обратиться, только более сложным способом.

Статическая переменная класса Обычная переменная класса
ClassName.variableName

Примеры:
Cat.catsCount
this.variableName

Примеры:
this.catsCount

- А что ещё за статические методы и статические переменные?

- Статические методы и переменные привязаны не к объектам класса, а непосредственно к самому классу. Т.е. если мы создадим 10 объектов класса Variables из примера в самом начале уровня, у нас будет 10 переменных classVariable (по одной на каждый объект) и всего одна общая переменная TEXT.

- У меня тут вопрос.

- А чем отличаются статические и нестатические методы?

- Давай рассмотрим, как работает обычный нестатический метод:

Как выглядит код Что происходит на самом деле
Cat cat = new Cat();
String name = cat.getName();
cat.setAge(17);
cat.setChildren(cat1, cat2, cat3);
Cat cat = new Cat();
String name = Cat.getName(cat);
Cat.setAge(cat,17);
Cat.setChildren(cat, cat1, cat2, cat3);

- При вызове метода в виде «объект» точка «имя метода», на самом деле вызывается метод класса, в который первым аргументом передаётся тот самый объект. Внутри метода он получает имя this. Именно с ним и его данными происходят все действия.

- Нифига себе. Так вот как, оказывается, оно все работает!

- А вот как работает статический метод:

Как выглядит код Что происходит на самом деле
Cat cat1 = new Cat();
Cat cat2 = new Cat();
int catCount = Cat.getAllCatsCount();
Cat cat1 = new Cat();
Cat cat2 = new Cat();
int catCount = Cat.getAllCatsCount(null);

- При вызове статического метода, никакого объекта внутрь не передаётся. Т.е. this равен null, поэтому статический метод не имеет доступа к нестатическим переменным и методам (ему нечего передать в такие методы в качестве this).

- Хм. Вроде понятно. Хотя как-то поверхностно.

- А вот и дядя Диего…

2. Задачи на видимость переменных

- Привет, Амиго.

- Привет, Диего.

- Я вот тут принёс тебе пару задачек на видимость переменных

Пример Описание
1
class Cat
{
  private String name;
  public void setName(String name)
  {
     //написать тут ваш код
  }
}
Реализовать метод setName, чтобы с его помощью можно было устанавливать значение переменной private String name равное переданному параметру String name.
2
class Cat
{
  private static int catsCount = 0;
  public static void addNewCat()
  {
     //написать тут ваш код
  }
}
Реализовать метод addNewCat, чтобы при его вызове (т.е. добавлении нового кота), количество котов увеличивалось на 1. За количество котов отвечает переменная catsCount.
3
class Cat
{
  private static int catsCount = 0;
  public static setCatsCount(int catsCount)
  {
     //написать тут ваш код
  }
}
Реализовать метод setCatsCount так, чтобы с его помощью можно было устанавливать значение переменной catsCount равное переданному параметру.
4
class Cat
{
  private String fullName;
  public void setName(String firstName, String lastName)
  {
   String fullName = firstName + lastName;
   //написать тут ваш код
  }
}
Реализовать метод setName, чтобы с его помощью можно было устанавливать значение переменной private String fullName равное значению локальной переменной String fullName.
5
Cat cat1 = new Cat();
   //написать тут ваш код
Cat cat2 = new Cat();
   //написать тут ваш код
System.out.println("Cats count is " + Cat.count);
Написать код, который бы подсчитывал количество созданных котов (count) и на экран выдавалось правильно их количество.

3. Команда и блок команд

- Сейчас я расскажу тебе, что такое команда и блок команд. Все очень просто. Тело метода состоит из команд. Каждая команда оканчивается точкой с запятой.

Примеры команд:
1 String s = "Name";
2 System.out.println(1234);
3 return a + b * c;
4 throw new RuntimeException();
5 ;

- Блок команд состоит из нескольких команд, объединённых вместе фигурными скобками. Тело метода является блоком команд.

Примеры:
1 {}
2
{
    throw new RuntimeException();
}
3
{
    return null;
}
4
{
    System.out.println(23);
    System.out.println(1);
    System.out.println(14);
}

- Почти для всех ситуаций справедливо правило: там, где можно написать одну команду, можно написать и блок команд. Мы увидим это в примерах для задач ниже.

4. Условные операторы

- Привет, Амиго. Сегодня мы разберём условные операторы.

- От программ было бы мало толку, если бы они делали абсолютно одно и то же независимо от того, как меняются внешние обстоятельства. Программе нужно уметь подстраиваться под обстоятельства, и делать одни действия в одних случаях и другие – в других. В Java это реализовано с помощью «условного оператора» - специального ключевого слова, которое позволяет выполнять разные блоки команд в зависимости от правдивости условия.

- Он состоит из трех частей: «условия», «команды 1» и «команды 2». Если условие верно (истинно), тогда выполняется «команда 1», иначе выполняется «команда 2». Команды никогда не выполняются одновременно. Общий вид этого оператора таков:

Код условного оператора
if (условие)
    команда_1;
else
    команда_2;

- Как интересно. Думаю, с таким оператором программировать гораздо интереснее.

- Ага. Вот тебе парочка примеров:

Код Пояснение
if (a < b)
    System.out.println("А меньше Б");
else
    System.out.println("Б меньше А");
Если a меньше b, то выполнится первая команда, в противном случае – вторая. Команды никогда не выполнятся одновременно.
if (a < b)
{
    System.out.println("А меньше Б");
    System.out.println("Б больше А");
}
else
{
     System.out.println("Б меньше А");
     System.out.println("А больше Б");
}
Вместо одной команды можно подставить блок команд. В остальном - то же самое.
if (a < b)
{
    a = 0;
}
else
{
}
Блок else можно не писать, если он пустой.

Данные три примера абсолютно эквиваленты.

Можно не писать скобочки, если нужно выполнить только одну команду. Если у нас несколько команд, то скобочки писать обязательно.
if (a < b)
{
    a = 0;
}
if (a < b)
    a = 0;

5. Билаабо

- Привет, Амиго. У нас на планете мы пользуемся более продвинутым Паскалем. Вот как это все выглядело бы на Паскале.

Pascal Java
If a < b Then
    WriteLn ('a меньше b');
if (a < b)
    System.out.println("a меньше b");
If a < b Then
    WriteLn('a меньше b')
Else 
    WriteLn('a больше b');
if (a < b)
    System.out.println("a меньше b");
else
    System.out.println("a больше b");
If a < b Then
    Begin
        WriteLn('a меньше b');
        WriteLn('a меньше b');
    End
Else 
    Begin
        WriteLn('a больше b');
        WriteLn('a больше b');
    End;
End;
if (a < b)
{
    System.out.println("a меньше b");
    System.out.println("a меньше b");
}
else
{
    System.out.println("a больше b");
    System.out.println("a больше b");
}
If a < b And a < c Then
    WriteLn('a минимальное из a, b, c');
if (a < b && a < c)
    System.out.println("a минимальное из a, b, c");
If a < b Or a < c Then
    WriteLn('a или меньше b, или меньше c');
if (a < b || a < c)
    System.out.println("a или меньше b, или меньше c");
If Not (a < b) Then
    WriteLn('b меньше либо равно a')
Else
    WriteLn('b больше a');
if ( !(a < b) )
    System.out.println("b меньше либо равно a");
else
    System.out.println("b больше a");
If a < b Then
    Begin
        If a < c Then 
            WriteLn('a – это минимум')
        Else 
            WriteLn('c – это минимум');
    End
Else
    Begin
        If b < c Then 
            WriteLn('b – это минимум')
        Else 
            WriteLn('c – это минимум');
    End;
if (a < b)
{
    if (a < c)
        System.out.println("a – это минимум");
    else
        System.out.println("c – это минимум");
}
else
{
    if (b < c)
        System.out.println("b – это минимум");
    else
        System.out.println("c – это минимум");
}
If a <= b And a <= c Then
    WriteLn('a – это минимум')
Else If b <= a And b <= c Then
    WriteLn('b – это минимум')
Else If c <= a And c <= b Then
    WriteLn('c – это минимум');
if (a <= b && a <= c)
    System.out.println("a – это минимум");
else   if (b <= a && b <= c)
    System.out.println("b – это минимум");
else   if (c <= a && c <= b)
    System.out.println("c – это минимум");

6. Задачи на условные операторы

- Хочу рассказать тебе немного о сравнении переменных в Java.

- Самые простые операторы сравнения ты уже знаешь – это меньше (<) и больше (>).

- Ага.

- Так же есть «равно»(==) и «не равно»(!=). А еще «меньше либо равно»(<=) и «больше либо равно»(>=).

- О, это уже интереснее.

- Обрати внимание, что операторов «=<» и «=>» в Java нет!

- Знак «=» используется для операции присваивания, поэтому для равенства используют «==» - два знака равно. Для того, чтобы проверить, что переменные не равны, используют «!=»

- Ясно.

- При сравнении двух переменных в Java с использованием оператора «==», происходит сравнение того, что эти переменные в себе содержат.

- Т.е. для переменных примитивных типов происходит сравнение значений.

- Для переменных ссылочных типов происходит сравнение ссылок. Т.е. если объекты идентичны внутри, но ссылки на них разные, сравнение покажет, что они неравны: результатом сравнения будет false(ложь). Сравнение ссылок будет true(истина), только если обе ссылки указывают на один и тот же объект.

- Для сравнения объектов по их внутреннему содержанию используют специальный метод equals. Этот метод (и все методы класса Object) добавляется компилятором в твой класс, даже если ты их не объявляешь. Поясняю на примерах:

Код Пояснение
int a = 5;
int b = 5;
System.out.println(a == b);
Происходит сравнение примитивных типов.
На экран будет выведено true.
Cat cat1 = new Cat("Vaska");
Cat cat2 = cat1;
System.out.println(cat1 == cat2);
Происходит сравнение ссылок.
На экран будет выведено true.
Обе переменных хранят ссылки на один и тот же объект.
String s = new String("Mama");
String s2 = s;
System.out.println(s == s2);
Происходит сравнение ссылок.
На экран будет выведено true.
Обе переменных хранят ссылки на один и тот же объект.
Cat cat1 = new Cat("Vaska");
Cat cat2 = new Cat("Vaska");
System.out.println(cat1 == cat2);
Происходит сравнение ссылок.
На экран будет выведено false.
Переменные хранят ссылки на два идентичных объекта Cat, но не на один и тот же.
String s = new String("Mama");
String s2 = new String("Mama");
System.out.println(s == s2);
Происходит сравнение ссылок.
На экран будет выведено false.
Переменные хранят ссылки на два идентичных объекта String, но не на один и тот же.
Cat cat1 = new Cat("Vaska");
Cat cat2 = new Cat("Vaska");
System.out.println(cat1.equals(cat2));
Происходит сравнение объектов.
На экран будет выведено true.
Переменные хранят ссылки на два идентичных объекта Cat
String s = new String("Mama");
String s2 = new String("Mama");
System.out.println(s.equals(s2));
Происходит сравнение объектов.
На экран будет выведено true.
Переменные хранят ссылки на два идентичных объекта String

- И, кстати, чуть не забыл, вот тебе несколько заданий:

Задачи
Задача 1. Минимум двух чисел

Ввести с клавиатуры два числа, и вывести на экран минимальное из них.
Задача 2. Максимум четырех чисел

Ввести с клавиатуры четыре числа, и вывести максимальное из них.
Задача 3. Сортировка трех чисел

Ввести с клавиатуры три числа, и вывести их в порядке убывания.
Задача 4. Сравнить имена

Ввести с клавиатуры два имени, и если имена одинаковые, вывести сообщение «Имена идентичны».
Если имена разные, но их длины равны – вывести сообщение – «Длины имен равны».
Задача 5. 18+

Ввести с клавиатуры имя и возраст. Если возраст меньше 18 вывести надпись «Подрасти еще»
Задача 6. И 18-ти достаточно

Ввести с клавиатуры имя и возраст.
Если возраст больше 20 вывести надпись «И 18-ти достаточно»

7. Тип boolean

- Привет, Амиго. Хочу рассказать тебе о новом типе данных. Это тип boolean. Переменные этого типа могут принимать всего два значения – true (истина/правда) и false (ложь).

- А как его использовать?

- Этот тип неявно используется во многих местах. Так же, как и результат любого сложения – число, то и результат любого сравнения – истина или ложь – тип boolean. Примеры:

Код Пояснение
boolean m; Два данных выражения эквивалентны. Значение переменой типа boolean по умолчанию false («ложь»).
boolean m = false;
if (a > b) 
    System.out.println(a);
В переменную m будет записан результат сравнения – true или false. Условие выполняется, если переданное в него выражение истинно – true.
boolean m = (a > b);
if (m) 
    System.out.println(a);
boolean m = (a > b);
if (m == true) 
    System.out.println(a);
Не нужно сравнивать логическую переменную (типа boolean) c true или false.
Результат сравнения сам будет иметь тип boolean, и в точности будет совпадать со значением сравниваемой переменой:
true == true – истина. Результат выражения – true.
true == false – ложь. Результат сравнения – false.
boolean m = (a > b);
if (m) 
    System.out.println(a);

- Еще примеры:

Код Пояснение
public boolean isALessThenB (int a, int b)
{
    if (a < b)
        return true;
    else 
        return false;
}
Данный метод проверяет, что число А меньше числа Б.

Показаны четыре эквивалентных записи сравнения. Внизу самая компактная и корректная. Всегда старайся использовать компактную запись.
public boolean isALessThenB (int a, int b)
{
    boolean m = (a < b);
    if (m)
        return true;
    else 
        return false;
}
public boolean isALessThenB (int a, int b)
{
    boolean m = (a < b);
    return m;
}
public boolean  isALessThenB (int a, int b)
{
    return a < b;
}

- А что мне делать, если я хочу записать, выражение 0<a<b ?

- Ну, выражений, которые включают три оператора, в Java нет, поэтому тут нужно воспользоваться такой конструкцией: (0<a) И (a<b)

- Так и писать И?

- Подожди, сейчас все объясню.

- В Java есть три логических оператора: AND (и), OR (или) и NOT (не). С помощью них можно строить условия различной сложности. Эти операторы можно применять только к выражению, имеющему тип boolean. Т.е. (a+1) AND (3) написать нельзя, а (a>1)AND (a<3) – можно.

- Оператор NOT – унарный – его действие распространяется только на выражение справа от него. Он больше похож на знак «минус» перед отрицательным числом, чем на знак умножить

- С переменными типа boolean (логический тип) можно выполнять различные операции.

- А какие?

- Вот сейчас мы их и рассмотрим:

Логический oператор Обозначение в Java Выражение Результат
AND (и) && true && true true
true && false false
false && true false
false && false false
OR (или) || true || true true
true || false true
false || true true
false || false false
NOT(не) ! ! true false
! false true
Распространённые комбинации и выражения m && !m false
m || !m true
! (a && b) !a || !b
! (a || b) !a && !b

- А можно побольше примеров?

- Конечно:

Запись в Java Логическая запись Пояснение
(a<3) && (a>0) (a < 3) AND (a>0) a<3 и a>0
(a>10)|| (a<100) (a>10) OR (a<100) a>10 или a<100
(a<b)&& (!(c<=d)) (a<b) AND (NOT (c<=d)) a<b и (не (c<=d))

8. Циклы

- Привет.

- Привет, Элли!

- Настало… время изучать циклы! Циклы такая же простая штука, как и условия, только интересней. С помощью цикла можно выполнить какую-нибудь команду или блок команд несколько раз. Общий вид цикла такой:

Цикл
while(условие типа boolean) 
    команда;
while(условие типа boolean) 
    блок команд в фигурных скобках

- Все очень просто. Команда или блок команд выполняются снова и снова, пока условие цикла истинно – равно true. Сначала проверяется условие, затем выполняется тело цикла (блок команд), затем снова проверяется условие и снова выполняется тело цикла. И так до тех пор, пока условие не станет ложным.

- А если оно всегда истинно или всегда ложно?

- Если оно всегда истинно, программа никогда не прекратит работать и будет всегда выполнять цикл. А если всегда ложно, то тело цикла не выполнится ни разу.

Примеры.

Код Вывод на экран
int i = 3;
while (i >= 0)
{
    System.out.println(i);
    i--;    //уменьшение i на 1
}
3
2
1
0
int i = 0;
while (i < 3)
{
    System.out.println(i);
    i++;   //увеличение i на 1
}
0
1
2
boolean isExit = false;
while (!isExit)
{
    String s = buffer.readLine();
    isExit = s.equals("exit");
}
Программа будет вводить строки с клавиатуры, пока не будет введена строка "exit".
while (true) 
    System.out.println("C");
Программа будет вечно печатать на экран букву C.
while (true) 
{
    String s = buffer.readLine();
    if (s.equals("exit")) 
        break;
}
Программа будет вводить строки с клавиатуры, пока не будет введена строка "exit".

- Вроде и не сложно. После условий. Уже хочется попробовать.

9. Билаабо

- Привет друг. Билаабо сейчас расскажет, как это все выглядело бы на Паскале.

Pascal Java
i := 3;
While i >= 0 Do
Begin 
    WriteLn(i);
    i := i - 1;
End;
int i = 3;
while (i >= 0)
{
    System.out.println(i);
    i--;
}
i := 0;
While i < 3 Do
Begin 
    WriteLn(i);
    i := i + 1;
End;
int i = 0;
while (i < 3)
{
    System.out.println(i);
    i++;
}
isExit := False;
While Not isExit Do
Begin
    ReadLn(s);
    isExit :=  (s = 'exit');
End;
boolean isExit = false;
while (!isExit)
{
    String s = buffer.readLine();
    isExit = s.equals("exit");
}
While True Do
    WriteLn('C');
while (true)
    System.out.println('C');
While True Do
Begin
    ReadLn(s);
    If  s = 'exit' Then 
        Break;
End;
while (true) 
{
    String s = buffer.readLine();
    if (s.equals("exit")) 
        break;    
}

- Ну, сравнение с Паскалем полезно тем, кто его знает.

- А ты что - не знаешь? Это ж самый любимый язык на моей планете!

- Ладно, ладно. Верю, что это классный язык. И если бы я его уже знал, это бы мне помогло.

10. Задачи на циклы

- Привет, Амиго!

- Я слышал, ты циклы выучил. Подкину-ка я тебе ещё пару задачек.

Задачи на циклы
1. 10 чисел

Вывести на экран числа от 1 до 10, используя цикл while.
2. 10 чисел наоборот

Вывести на экран числа от 10 до 1, используя цикл while.
3. Хорошего не бывает много

Ввести с клавиатуры строку и число N.
Вывести на экран строку N раз, используя цикл while.

Пример ввода:
абв
2
Пример вывода:
абв
абв
4. S-квадрат

Вывести на экран квадрат из 10х10 букв S используя цикл while.
Буквы в каждой строке не разделять.
5. Таблица умноження

Вывести на экран таблицу умножения 10х10 используя цикл while.
Числа разделить пробелом.

Example output:
12345678910
2468101214161820
36912151821242730
...

11. Цикл For

- Хочу рассказать тебе ещё об одном цикле. Это цикл называется for. Это ещё одна запись цикла while, просто более компактная и удобная [для программистов]. Примеры:

while for
int i = 3;
while (i >= 0)
{
    System.out.println(i);
    i--;
}
for (int i = 3; i >= 0; i--)
{
    System.out.println(i);
}
int i = 0;
while (i < 3)
{
    System.out.println(i);
    i++;
}
for (int i = 0; i < 3; i++)
{
    System.out.println(i);
}
boolean isExit = false;
while (!isExit)
{
    String s = buffer.readLine();
    isExit = s.equals("exit");
}
for (boolean isExit = false; !isExit; )
{
    String s = buffer.readLine();
    isExit = s.equals("exit");
}
while (true)
    System.out.println("C");
for (; true; )
    System.out.println("C");
while (true)
{
    String s = buffer.readLine();
    if (s.equals("exit"))
        break;    
}
for (; true; )
{
    String s = buffer.readLine();
    if (s.equals("exit"))
        break;    
}

- Эээ?

- Данные циклы эквиваленты. Если while содержит в скобках одно условие, то for – три. Но при компиляции for превращается в такой же цикл, как и while.

- Первое выражение в цикле for (выделено зеленым) выполняется один раз до цикла.

- Второе выражение выполняется каждый раз перед исполнением тела цикла – аналогично условию в цикле while.

- Третье – каждый раз после исполнения тела цикла.

- А зачем нужен ещё один цикл. С while все прекрасно понятно.

- Это сделано для удобства программистов. Циклы встречаются в программировании очень часто, и удобно, когда в одной строчке собрана информация о стартовом значении переменой, условии её изменения и команда, которая её меняет.

12. Сравнение с паскалем

- Амиго, ты не поверишь, но в Паскале есть цикл For. Он вообще есть практически во всех языках программирования. Только в Паскале он гораздо понятнее. Вот, смотри:

Pascal Java
For i := 1 to 10 do
Begin
    Writeln(i);
End;
for (int i = 1; i <= 10; i++)
{
    System.out.println(i);
}
For i := 1 to 10 do step 2
Begin
    Writeln(i);
End;
for (int i = 1; i <= 10; i= i + 2)
{
    System.out.println(i);
}
For i := 10 downto 0 do step 2
Begin
    Writeln(i);
End;
for (int i = 10; i >= 0; i= i - 2)
{
    System.out.println(i);
}

13. Задачи на for

- Сегодня мой счастливый день. Я придумал для тебя 5 новых задач. Креативность так и прёт. Удачи тебе мой друг. Она тебе понадобится…

Задачи на отработку For
1. Четные числа

Используя цикл for вывести на экран чётные числа от 1 до 100 включительно.
Через пробел либо с новой строки.
2. Рисуем прямоугольник

Ввести с клавиатуры два числа m и n.
Используя цикл for вывести на экран прямоугольник размером m на n из восьмёрок.

Пример: m=2, n=4
8888
8888
3. Рисуем треугольник

Используя цикл for вывести на экран прямоугольный треугольник из восьмёрок со сторонами 10 и 10.

Пример:
8
88
888
...
4. Рисуем линии

Используя цикл for вывести на экран:
- горизонтальную линию из 10 восьмёрок
- вертикальную линию из 10 восьмёрок.
5. Все любят Мамбу

Ввести с клавиатуры имя и, используя цикл for 10 раз, вывести: [*имя* любит меня.]

Пример текста:
Света любит меня.
Света любит меня.

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

- Привет, Амиго. Как успехи?

- Отлично, профессор Нудлс. Уже выучили циклы for и while.

- Это же великолепно. Так и знал, что профессор Нудлс – лучший преподаватель в мире. Вместе мы посрамим всех недалёких, которые утверждают, что надо начинать с практики. Ты – моё живое доказательство, насколько это может быть живым для робота. Пройди по ссылке, и там ты найдешь что-то полезное для себя:

Дополнительные материалы по 4-му уровню

15. Хулио

- Привет, Амиго! Я был должен тебе сегодня что-то прочитать, но давай сначала посмотрим немного телевизор, а потом приступим?

Оригинал видео на YouTube

16. Джон

- Здорово, боец!

- Здравия желаю, капитан Бобров!

- У меня для тебя шикарная новость. Вот тебе задания для закрепления полученных навыков. Выполняй их каждый день, и твои навыки будут расти с неимоверной скоростью. Они специально разработаны для выполнения их в Intellij IDEA.

Дополнительные задания для выполнения в Intellij Idea
1. Я никогда не буду работать за копейки

Используя цикл вывести на экран сто раз надпись:
«Я никогда не буду работать за копейки. Амиго»
2. Среднее такое среднее

Ввести с клавиатуры три числа, вывести на экран среднее из них, т.е. не самое большое и не самое маленькое.
3. Посчитать сумму чисел

Вводить с клавиатуры числа и считать их сумму. Если пользователь ввел -1, вывести на экран сумму и завершить программу. -1 должно учитываться в сумме.
4. Меня зовут 'Вася'...

Ввести с клавиатуры строку name.
Ввести с клавиатуры дату рождения (три числа): y, m, d.
Вывести на экран текст:
«Меня зовут name
Я родился d.m.y»

Пример:
Меня зовут Вася
Я родился 15.2.1988