Понедельник, 25 Ноября 2024, 19:19

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 7
  • 1
  • 2
  • 3
  • 6
  • 7
  • »
Курс:"Hello World или изучаем : Java. Синтаксис.Ч.2."
AlfeДата: Среда, 03 Февраля 2016, 23:01 | Сообщение # 1
старожил
Сейчас нет на сайте

  • Ссылка на прошлую часть Тыц


№1(5). Переменные и типы данных в Java.
Переменная - то, без чего не обойдется ни единый день программиста. Каждая переменная в каждом Языке Программирования имеет: Тип, битность (Какие и сколько ячеек оперативной памяти она сожрёт), свое значение, свое название (Хотя названия имеют и методы и классы... Вобщем всё). О первых трёх параметрах поподробнее через пару строк. Переменные на то так и называются, что их значение можно менять по ходу работы. В Java переменные делятся на 3 типа : Целочисленные, дробные и логические. Также чтобы с переменными работать надо пройти 2 этапа: Инициализация и Присваивание.

Инициализация : Мы просто называем тип переменной и ее имя. Вот так.
Код
int chislo ;
.
Присваивание : Ну, проинициализировали мы переменную, надо же еще ей дать значение, ведь так? А это делается так.
После Инициализации мы берем уже существующую переменную и даем ей значение. Вот так
Код
chislo=12;


А теперь про их самих.

Код
//Целочисленные

byte;//1байт, диапазон чисел от -128 до 127.
short;//2байта, -32768 - 32767.
int//Самый часто используемый тип кстати. 4 байта, диапазон чисел от -2147483648 до 2147483647.
long//8байтов. Диапазон чисел от -9223372036854775808 до 9223372036854775807

//Дробные.

float//4байта. Диапазон чисел от ~1,4*10-[size=8]45[/size] до ~3,4*10[size=8]38[/size]//
Присваивание происходит как обычно, но вконце числа "f" (Без кавычек).

double//удобен при sin() cos() sqrt() т.к возвращает double. 8 байтов. Диапазон  ~4,9*10-[size=8]324[/size] до ~1,8*10-[size=8]308[/size]

//Логические

boolean// Принимает true или false (Правда, ложь)1байт.

//Также есть  символьный тип одной переменной.
char//2 байта. Символ Unicode.
[/size][/size][/size][/size]


Поговорим о переменой String. Она не является примитивным типом, тем не менее наиболее распространенa в Java.
String предназначен для хранения строк текста. Ведь вы видели
Код
public static void main (String[] args)
Так там часть String[] это именно массив СТРОК.

Например. 2 примера со String
Код
//Создаем String

String symb = "I";
String symb2 = "Love";
String symb3 = "GcUp";

System.out.println(symb + symb2 + symb3);

Вывод программы :ILoveGcUp.

Теперь о том как нельзя называть переменные : Лучше их называть с маленькой буквы и ближе к английским словам. В названии можно использовать символы Unicode (буквы, цифры, знак "_"). Можно еще приписать "$", но так никто не делает. Это просто технически возможно.
В следующем уроке мы поговорим о классах и методах.

№6(2). Классы и методы.

И так. Для начала создадим проект в Eclipse. Нажимаем File-Файл-New(Новый)-Java Project ( Проект Java). Называем его. Раскрываес папку с проектом, кликаем ПКМ по "src" New(Новый)-Class(Класс), называем его... Hedgehog никаких галок не ставим. Жмем Finish (Готово).

Рассмотрим сигнатуру класса.
Код
public class Hedgehog


public - модификатор доступа, допустим к этому классу мы можем обращаться и вне этого класса.
class - ну.. Это же класс.
Hedgehog - Название.

{} - тело класса.

Присвоим же атрибуты нашему ежу. Если вы посещали прошлую тему на последнем уроке, вы знаете как устроен класс, что такое методы, атрибуты. Атрибутами класса могут быть...
Имя ежа (Ручной ёж то).
Кол-во иголок.
Окраска.
Вес.

Рассмотрим код.
Код

private int weight//вес
private String col//Окрас
private String name//Имя
private int igle// Колво игл.


Рассмотрим сигнатурку:
private - тоже модификатор доступа, но обратен public, извне изменить... Не получится.
int,String - типы.

Методы класса
Пусть наш ёж... Ходит...Шурша...
Разговаривает по своему...
Дрыхнит...

Код

//Ёж шуршит.
public void walk() {

System.out.print("Shush....Sh..Shu..Sh...\n");

}

Сигнатура
public - мы уже знаем.
void - метод.
() - параметры... Которых пока что нет.
{}т-тело метода.
\n - то, что написанное после будет перенесено на другую строку

System.out.print() - метод к выводу сообщения. Написанное в нём должно быть в "" . Аналогично предыдущему методу опишем еще несколько.

Код
public  void sleep() {

System.out.print("Zzz,Heeedg,zzz!...\n");

}


Сигнатуру объяснять не буду. Тут понятно всё.

Опишем метод speak.

Код
public String speak (String words)
{
String phrase = phrase + "...Fr..frr...rr"\n";
return phrase;
}

Наш класс выглядит так.
Код

public class Hedgehog {

private int weight;
private String col;
private int igle;
private String name;

public static void walk()
{
System.out.print("Shush..Sh.Shush..\n");

}

public void sleep()
System.out.print("Zzz..Heedg...Zz!..\n")

}

public String speak(String words)

String phrase =  words + "....Fr..Frr...Frrr!...\n;
return phrase;

}

}


Дальше рассмотрим обращение.
Создадим новый класс уже ставя галку "public static void main (String[] args)".
Удаляем генерируемый коммент.

И если уж заговорили про public static void main (String[] args), то приведу его сигнатуру.

public - модификатор доступа, при помощи него вы сможете изменять значение метода из других классов.
static - модификатор позволяющий нам обращаться к членам класса без создания экземпляра класса.
void - ключевое слово метода. Не возвращает каких либо значений.
(String[] args) - массив строк и аргументов в методе.
Также стоить упомянуть, что public static void main (String[] args) - главнейший метод. Входная точка программы. Без него просто не существует ни одного кода.

Теперь меж фигурными скобками напишем
Код

Hedgehog ourhedgehog = new Hedgehog();
ourhedgehog.walk();
ourhedgehog.sleep();

String say = ourhedgehod.speak("Ffrr");
System.out.prinln(say);
ctrl+F11 и смотрим что вывело в консоли <img src="http://s18.ucoz.net/sm/1/smile.gif" border="0" align="absmiddle" alt="smile" /> Поподробнее урок разберу в видео :)

Хочу сказать - различия между public и private, что? Зачем? А вот допустим мы пишем код. Есть отлично отлаженный механизм, а если кто-то глянет на наш ну просто ИЗУМИТЕЛЬНЕЙШИЙ код, а у нас все переменные public, он их из своего так сказать уже класса унаследует ваш класс и поизменяет нафиг всё. И сломает... Ну, знакомиться человек с программированием. Не знал что ваш код трогать - опасно для здоровья, посему те вещи которые вам важны, функции, методы, заносим в private. И если кто Ваш класс унаследует - врядли что сломает.


№7(3). Модификаторы доступа.
Модификаторы доступа. Зачем они вообще нужны? Ну, вообще использовать модификаторы доступа когда ты делаешь кододин и его точно никто не заполучит и не изменит, дело непринципиальное,  но вот допустим ты работаешь в команде программистов, написал код, не хочешь чтобы его изменяли, ведь никто не знает, к каким  последствиям приведет изменение механизма. Так вот. Какие же есть модификаторы доступа:

private
default
protected
public.
Я расположил классы в порядке сверху вниз начиная с самого защищенного.

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

Код
class NewTutor {
private void MyTut()
{
System.out.println("Модификаторы доступа!");
}

}


Таким образом создав новый класс и даже сделав его наследником класса NewTutoral к методу MyTut мы не подберемся.

default - или package-private. Пакетный тип. Члены класса видны только лишь внутри пакета. Определяется так.
Код
  public class {

void Method()
{

}

}

Как вы видите ничего магического мы не писали. Тем не менее void Method() стал default и доступен только лишь из текущего пакета (У вас в проекте ведь есть пакет smile ? )

Так. Protected - члены класса видны внутри пакета и класса-наследника.

Создадим класс... Tutorial. Дадим ему ... public..А вот внутри напишем

Код
protected void MyTutorial()

{
System.out.println(" Все с моими уроками хорошо!");
}

Создаем класс. Tutorial2.Тоже public.Ставим теперь галку public static void main (String[] args)

и в строке класса пишем
Код
extends Tutorual

И у нас выходит
Код
public class Tutorial2 extends Tutorial {
publc static void main (String[] args)
{

}
}

Теперь внутри нашего класса пишем.
Код

Tutorial2  tutor = new Tutorial2();
tutor.MyTutorial();


Класс Tutorial2 выглядит так.
Код
public class Tutorial2 extends Tutorial {
public static void main (String[] args)
{
Tutorial2 tutor = new Tutorial2();
tutor.MyTutorial();
}
}


Обращаю ваше внимание на 2 поаледних строки. Тут мы создали объект экземпляр нашего класса и передали ему метод первого класса.
public - все доступно всему миру. Даже объяснять нечего. Если перед методом, переменной, полем и т.д стоит public, то она доступна откуда угодно.
Допущаем
Код

public class MeTut {

public static void main (String[] args)
{
public void PrintTut()
System.out.println("Конец урока!");
}
}


Таким образом PrintTut можно получить откуда угодно.

Модификатор доступа у кострукторов, методов и полей может быть любой, а вот у класса и их блоках... Тут не все просто. Класс может быть public, default. Причем в одном файле может находиться лишь 1 класс public. У блока только лишь всего модификатор - default.

№8(4) Классы, классы, много классов.
В этом уроке мы рассмотрим сразу несколько вещей связанных с классами и одну вещь из ООП. Также экземпяр класса, методы. И так, что же такое класс? В этом нам поможет абстрактная картинка : Представим
Машина -> Грузовик. Машина это класс(Или суперкласс если мы коснемся наследования), Грузовик подкласс. Теперь про наследование. Это одна из вещей ООП.
В Java представляется словом extends. Пример
Код
public class Truck extends Car
Если дословно, то, Публичный класс Truck унаследован от Car. Например это поможет когда у нас стоит в классе Car на каком либо методе модификатор protected. Кстати да, чтобы унаследовать класс Вы должны создать класс родитель (Как это делается Вы знаете) и еще 1 класс в роли наследника. Методы - то, что лежит в классах, в методах можно определить... Характеристики Грузовика, что бы в дальнейшем при создании экземпляра класса, эти наши характеристики получить.
Экземпляр класса - представим. Мы написали какой то отрезок кода в каком то методе и этот метод со всем внутри лежащим надо передать и наследнику, но лень перелопачивать код. Для этого мы в наследнике в нашем случае классе Truck пишем.
Код
Car mycar = newCar();

Щас объясню. Мы проинециализировали класс Car (Назвали его имя), дали переменную, чтобы удобнее было методы класса Car вызывать. А использовав ключивое слово new мы этот экземпляр класса записали в стек. А теперь, как вызывать методы из класса Car?
Очень просто
Код
mycar.НазваниеМетода();


Если чтото не понятно, пишите.

№8(5). Оператор ветвления if.
Оператор if (если) создан для того чтобы выполнять необходимое условие, только если условие равно true. Ведь именно булеву переменную равную true передает условие if... Пример.

Код
if (5*8 == 40) {

System.out.println("Пять умноженая на восемь равно сорока. ")

}



Так же есть оператор if со словом else. Он делает то же что и if, но else (иначе) выполняет второе действие если оператору передался false.
Код
if (4*6 == 20) {

System.out.println("Четыре умноженное на шесть равно двадцати")

}
else {
System.out.println ("Равенство не верно!!!")

}


№9(6). Цикл for и одномерный массив.
И так. Поговорим с Вами про циклы. Что же такое цикл? Это оператор который при выполнении условия делает действие. Код с ним попозже. В мире Java есть циклы : for,while, do...while. Поговорим про for. Этот цикл работает так. В "()" мы записываем какое либо условие, а в "{}" действие. Допустим.
Код
for (jnt i = 5; i < 5; i++)  {

System.out.println("Hello World!")
}
.
Ну, про циклы я рассказал кратко. Чтобы пост не расстягать. Теперь про одномерные массивы. Почему именно одномерные? А потому, что массивы существуют еще и многомерные, т.е если одномерный массив это одна строка, то многомерный это обработка столбца и строк. Допустим, есть числа от 0 до 5. Нам их надо вывести в хаотичном порядке. Это делает массив. Тут нам то и цикл пригождается. Ну, чтобы вывести все по отдельности.

Код
int[] l =  {2 , 7 , 6, 3 , 9};
for (int x = 5; x < 5; x++)
{
System.out.println(l[x]);

}
System.out.println();

Объясняю. Ну, int мы все знаем. [] - квадратные скобки как раз и обозначают массив. В {} мы записывали какие числа надо выводить чтоб массив все пролистал.
В цикле мы объявляем переменную int x даем ей ровно такое значение ( я выдал), сколько у нас есть цифер, затем сделали неравенство. Типа если x < 5 то прибавляем х на еденичку. И потом в методе вывода значения на экран мы выдали имя переменной l
и имя массива. Объясняю так коротко, т.к грань поста подходит к концу.Весь код.

Код
class Push {

public static void main(String[] args)
{
int[] l = {2, 7, 8, 6, 5};
for(int x=0;x<5;x++)
{
System.out.println(l[x]);
}

}
}

}


Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin


Сообщение отредактировал Alfe - Среда, 10 Февраля 2016, 22:30
SaiteiДата: Четверг, 04 Февраля 2016, 14:40 | Сообщение # 2
старожил
Сейчас нет на сайте
Цитата Alfe ()
После Инициализации мы берем уже существующую переменную и даем ей значение. Вот так
Код
int chislo=12;

Вы не различаете
int some = 12;
и some = 12?
AlfeДата: Четверг, 04 Февраля 2016, 15:05 | Сообщение # 3
старожил
Сейчас нет на сайте
Saitei, поправил. Просто этот ненавистный Т9 (Пишу с телефа) Поправил по тому модулю что я писал в тот раз.

Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
FlyOfFlyДата: Четверг, 04 Февраля 2016, 15:12 | Сообщение # 4
заслуженный участник
Сейчас нет на сайте
Код
Лучше их называть с маленькой буквы и ближе к английским словам. В названии можно использовать символы Unicode (буквы, цифры, знак "_"). Можно еще приписать "$", но так никто не делает. Это просто технически возможно.

ты забыл, что нельзя использовать Русские буквы и начинать с цифр
ЭргалонДата: Четверг, 04 Февраля 2016, 16:23 | Сообщение # 5
Вездесущий
Сейчас нет на сайте
Объясни, зачем делать приватные и зачем делать публичные переменные(ну и про другие модификаторы). И обычно, перед именем приватной переменной ставят _ подчеркивание

Кубариум
Rise of the dark lords


Сообщение отредактировал Эргалон - Четверг, 04 Февраля 2016, 16:32
SaiteiДата: Четверг, 04 Февраля 2016, 16:48 | Сообщение # 6
старожил
Сейчас нет на сайте
Цитата Эргалон ()
И обычно, перед именем приватной переменной ставят _ подчеркивание

Это уже coding style, совсем другая степь smile
AlfeДата: Четверг, 04 Февраля 2016, 17:08 | Сообщение # 7
старожил
Сейчас нет на сайте
FlyOfFly, помимо того что я забыл некоторые правила именования - всё хорошо?

Добавлено (04 февраля 2016, 17:08)
---------------------------------------------
Эргалон, я же объяснял, приватные переменные нельзя изменить вне класса в котором они инициализированы. Публичные можно изменять из других классов. Я же не соовсем все буду объяснять, у людей свой мозг есть, дотумкивают пущай, когда им нужно private, a когда public.


Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin


Сообщение отредактировал Alfe - Четверг, 04 Февраля 2016, 17:09
ЭргалонДата: Четверг, 04 Февраля 2016, 17:11 | Сообщение # 8
Вездесущий
Сейчас нет на сайте
Alfe, Зачем мне например не изменять внутри класса? Ты об этом не писал. Какая разница что переменная будет публичная, а что приватная. Почему бы мне все переменные не сделать публичные? Я исходя из твоей статьи не вижу разницы.

Кубариум
Rise of the dark lords


Сообщение отредактировал Эргалон - Четверг, 04 Февраля 2016, 17:14
AlfeДата: Четверг, 04 Февраля 2016, 17:20 | Сообщение # 9
старожил
Сейчас нет на сайте
Эргалон,
Цитата
Какая разница что переменная будет публичная, что переменная

о_О.
Уровней модификаторов много. default,protected,private,public. Сабж урока - классы и методы, а не уровни доступа. Я раскрыл только малую суть тех модификаторов которые были представлены. Просто объяснил что они делают.


Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
ЭргалонДата: Четверг, 04 Февраля 2016, 17:28 | Сообщение # 10
Вездесущий
Сейчас нет на сайте
Alfe, Вопрос был сформирован, исходя из статьи. Если ты занимаешься такими вещами, весь твой код, который ты выкладываешь, должен быть у тебя как на ладони и ответить на такие простые вещи, тебе не должно составить труда. Но ты в очередной раз увернулся от вопроса. Я могу делать все переменные публичными, меня парит делать какие-то приватными, это нудно и неудобно. Я просто не буду обращаться к ним, из других классов и всё. Так что теоретически, они остаются приватными.

Кубариум
Rise of the dark lords


Сообщение отредактировал Эргалон - Четверг, 04 Февраля 2016, 17:29
GudleifrДата: Четверг, 04 Февраля 2016, 17:36 | Сообщение # 11
почти ветеран
Сейчас нет на сайте
Эргалон, перестаньте его кормить.

P.S. Ну, положим, я совершенно не терплю Java... И тихо тащусь... Но что сюда совсем не заходят Java-знатоки, чтобы покончить с этим цирком раз и навсегда? Или они, в отличие от меня слишком хорошо воспитаны? Проблема, ведь, не в том, что объяснение может автора обидеть, а в том, что, оставленный без научения в этой куче собственного дерьма, он может начать размножаться... А этого добра на Форуме и так хватает.


Быдлокодеры любят повторять: "логика, убивающая мозг",- когда их пытаются заставить программировать.

Сообщение отредактировал Gudleifr - Четверг, 04 Февраля 2016, 17:36
AlfeДата: Четверг, 04 Февраля 2016, 17:50 | Сообщение # 12
старожил
Сейчас нет на сайте
Эргалон, ну объяснил как то...

Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
ArromanFoxДата: Четверг, 04 Февраля 2016, 18:26 | Сообщение # 13
почетный гость
Сейчас нет на сайте
Эргалон, у меня создается впечатление, что это нужно только для совместной разработки большого проекта в команде, чтобы защитить переменные, используемые в классах, изменение значения которых может непредсказуемо сказаться на выполнении метода. Это так?

Alfe, насчет модификаторов доступа надо действительно больше рассказать, а то получается, что private в небольших проектах действительно лишний геморрой.
А ещё хотелось бы узнать, что там с глобальными и локальными переменными, и делятся ли они вообще так в Яве, или нет?
Но если урок не об этом, то следовало бы конечно пока воздержаться от использования "private" и один урок посвятить модификаторам, а там уже и использовать в качестве примера.


Наблюдатель

Сообщение отредактировал ArromanFox - Четверг, 04 Февраля 2016, 19:22
HyperLeapДата: Четверг, 04 Февраля 2016, 19:37 | Сообщение # 14
был не раз
Сейчас нет на сайте
Очерк - не о чем. Изложено скучно, не ясно, видно что писал - ламер. Прежде чем писать подобные статейки стоило бы ознакомится с материалом поподробнее. Так, если уж упоминать о чем-либо пишите подробно что и как, зачем это здесь нужно и что с этим делать.
Мой вам совет, пока есть время - не тратьте его на подобную писанину, лучше почитайте больше информации, посмотрите лекции на худой конец. Хватит плодить себе подобных.

ArromanFox, private нужен, например, для реализации шаблона синглтон. Где экземпляры класса можем создавать только мы и никто другой. Для подробной информации по этой теме советую почитать статьи на скипи.ру или квизфул.нет
wcptДата: Четверг, 04 Февраля 2016, 20:55 | Сообщение # 15
постоянный участник
Сейчас нет на сайте
Цитата HyperLeap ()
private нужен, например, для реализации шаблона синглтон

вот блин, засада! А зачем же нужен шаблон синглтон??? cry


Сообщение отредактировал wcpt - Четверг, 04 Февраля 2016, 20:55
AlfeДата: Четверг, 04 Февраля 2016, 21:38 | Сообщение # 16
старожил
Сейчас нет на сайте
Добавил очерк - не устраивает ХОТЯ! Я изложил почти также как в одной статье!

Добавлено (04 февраля 2016, 21:38)
---------------------------------------------
ArromanFox, Эргалон задал вопрос - я ответил как умел. Хотя хотел сразу же после этого написать. "Модификаторы доступа переменных". А на глобальные и локальные переменные. Java так не делит. Тут вопрос как раз о степени видимости этой переменной. Т.е можно ли ей оперировать откуда либо еще кроме текущего класса. В этом нам и поможет модификатор public.


Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
HyperLeapДата: Четверг, 04 Февраля 2016, 21:39 | Сообщение # 17
был не раз
Сейчас нет на сайте
wcpt, я же привел сайты на которых все описано. Ну ладно, вот прямая ссылка.
Alfe, прекращай это, пока не стало слишком поздно.
AlfeДата: Четверг, 04 Февраля 2016, 21:43 | Сообщение # 18
старожил
Сейчас нет на сайте
ArromanFox, а private был в уроке study-java. Да оно и не мудрено. Вот дадим мы этот код кому нибудь другому с условием "Не лезь в мой код, просто сделай его родителем и все." чтобы он сделал его родителем для своего дочернего класса. А мы не хотим чтобы он полез туда куда ему ненадо. В данном случае в "Характеристики" ежа из своего класса. Для этого private и пригодился smile

Добавлено (04 февраля 2016, 21:43)
---------------------------------------------
HyperLeap, скоро будет юбилейный 10-ый раз когда я это скажу - нет. Слишком поздно не станет.


Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
HyperLeapДата: Четверг, 04 Февраля 2016, 21:44 | Сообщение # 19
был не раз
Сейчас нет на сайте
Боже, какой же это цирк.
AlfeДата: Четверг, 04 Февраля 2016, 21:51 | Сообщение # 20
старожил
Сейчас нет на сайте
HyperLeap, Где?

Группа нашей команды. Там есть интересная рубрика... иногда игры выходят

Моя первая игpa - Crazy Penguin
  • Страница 1 из 7
  • 1
  • 2
  • 3
  • 6
  • 7
  • »
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг