Автоматическое преобразование типов




Основы

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

Метод — является в основном поведением. Класс может содержать несколько методов. Именно в методах логически записанные данные манипулируют и выполняют все действия. Все имена методов должны начинаться с буквы нижнего регистр ( myMethodName()).

Переменные экземпляра — каждый объект имеет свой уникальный набор переменных экземпляра. Состояние объекта создается значениями, присвоенными этим переменным экземпляра.

Объект — объекты имеют состояние и поведение. Например: собака может иметь состояние — цвет, имя, а также и поведение — кивать, бежать, лаять, кушать. Объект является экземпляром класса.


Конструктор класса

При обсуждении вопроса класса, одной из наиболее важных подтем в Java является конструктор. Каждый класс имеет конструктор. Если мы не напишем его или, например, забудем, компилятор создаст его по умолчанию для этого класса.

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

Пример конструктора приведен ниже:

public class Puppy{ public Puppy(){ } public Puppy(String name){ // Так выглядит конструктор в Java и у него один параметр, name. }}

 


Основы синтаксиса языка Java

· Чувствительность к регистру — Java чувствителен к регистру, то есть идентификатор Hello и hello имеют разный смысл.

 

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

 

· Если несколько слов используются, чтобы сформировать название класса, первая буква каждого внутреннего слова должна быть в верхнем регистре, например, «MyJavaClass».

 

· Название методов — в синтаксисе Java все имена методов должны начинаться с буквы нижнего регистра.

 

· Если несколько слов используются, чтобы сформировать имя метода, то первая буква каждого внутреннего слова должна быть в верхнем регистре, например, «public void myMethodName()».

 

· Название файла программы — наименование файла программы должно точно совпадать с именем класса.

 

· При сохранении файла, Вы должны сохранить его, используя имя класса (помните о чувствительности к регистру) и добавить «.java» в конце имени (если имена не совпадают, Ваша программа не будет компилироваться), например, «MyJavaProgram» — это название класса, тогда файл должен быть сохранен как «MyJavaProgram.java».

 

· public static void main(String args[]) — обработка программы начинается с метода main(), который является обязательной частью каждой программы.

 

· Каждый идентификатор должен начинаться с «A» до «Z» или «a» до «z», «$» или «_».

 

· После первого символа может иметь любую комбинацию символов.

· Ключевое слово не может быть использовано в качестве идентификатора.

· Самое главное — идентификатор в Java чувствителен к регистру.

· Пример правильного написания: age, Age, $salary, _value, __1_value.

· Пример неправильного написания: 123abc, -salary.

Комментарии

// - однострочный

/* многострочный */


Переменные

Типы переменных

Далее в Java мы увидим следующие существующие типы:

· Локальные переменные.

· Переменные класса (статические).

· Переменные экземпляра (динамические).

 

Локальные переменные.

· Локальные переменные объявляются в методах, конструкторах или блоках.

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

· Модификаторы доступа нельзя использовать для локальных переменных.

· Они являются видимыми только в пределах объявленного метода, конструктора или блока.

· Локальные переменные реализуются на уровне стека внутри.

· В Java не существует для локальных переменных значения по умолчанию, так что они должны быть объявлены и начальное значение должны быть присвоено перед первым использованием.

Пример:

«age» — локальная переменная, определяется внутри метода «pupAge()» и области её действия ограничивается только этим методом.

public class Test{ public void pupAge(){ int age = 0; age = age + 7; System.out.println("Возраст щенка: " + age); } public static void main(String args[]){ Test test = new Test(); test.pupAge(); }}

Статические переменные

· Переменные класса, также известные в Java как статические переменные, которые объявляются со статическим ключевым слово в классе, но за пределами метода, конструктора или блока.

· Там будет только одна копия каждой статической переменной в классе, независимо от того, сколько объектов создано из него.

· Статические переменные или переменные класса в Java используются редко, кроме когда объявляются как константы. Константы - переменные, которые объявлены как public/private, final и static. Константы никогда не меняются от первоначального значения.

· В Java статические переменные создаются при запуске программы и уничтожаются, когда выполнение программы остановится.

· Видимость похожа на переменную экземпляра. Однако большинство статических переменных объявляются как public, поскольку они должны быть доступны для пользователей класса.

· Значения по умолчанию такое же, как и у переменных экземпляра. Для чисел по умолчанию равно 0, для данных типа Boolean — false; и для ссылок на объект — null. Значения могут быть присвоены при объявлении или в конструкторе. Кроме того, они могут быть присвоены в специальных блоках статического инициализатора.

· Статические переменные могут быть доступны посредством вызова с именем класса ClassName.VariableName.

· При объявлении переменных класса как public, static, final, имена находятся в верхнем регистре. Если статические переменные такими не являются, синтаксис такой же, как у переменных экземпляра и локальных.

Пример:

import java.io.*; public class Employee{ // salary(зарплата) переменная private static private static double salary; // DEPARTMENT(отдел) — это константа public static final String DEPARTMENT = "Разработка "; public static void main(String args[]){ salary = 1000; System.out.println(DEPARTMENT+"средняя зарплата: "+salary); }}

Динамические переменные

· Переменные экземпляра объявляются в классе, но за пределами метода, конструктора или какого-либо блока.

· Когда для объекта в стеке выделяется пространство, создается слот для каждого значения переменной экземпляра.

· В Java переменные экземпляра создаются тогда, когда объект создан с помощью ключевого слова «new» и разрушаются тогда, когда объект уничтожается.

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

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

· Модификаторы доступа могут быть предоставлены для переменных экземпляра.

· Переменные экземпляра в Java являются видимыми для всех методов, конструкторов и блоков в классе. Как правило рекомендуется сделать их private (уровень доступа). Однако можно сделать их видимыми для подклассов этих переменных с помощью модификаторов доступа.

· Переменные экземпляра имеют значения по умолчанию. Для чисел по умолчанию равно 0, для логических — false, для ссылок на объект — null. Значения могут быть присвоены при объявлении или в конструкторе.

· Переменные экземпляра в Java могут быть доступны непосредственно путем вызова имени переменной внутри класса. Однако в статических методах и различных класса (когда к переменным экземпляра дана доступность) должны быть вызваны используя полное имя — ObjectReference.VariableName.

Пример:

import java.io.*; public class Employee{ // Переменная экземпляра открыта для любого дочернего класса. public String name; // Переменная salary видна только в Employee. private double salary; // Имя переменной присваивается в конструкторе. public Employee (String empName){ name = empName; } // Переменной salary присваивается значение. public void setSalary(double empSal){ salary = empSal; } // Этот метод выводит на экран данные сотрудников. public void printEmp(){ System.out.println("имя: " + name); System.out.println("зарплата:" + salary); } public static void main(String args[]){ Employee empOne = new Employee("Олег"); empOne.setSalary(1000); empOne.printEmp(); }}

 

Типы данных

В Java локальные переменные не имеют значения по умолчанию. Это означает что при простом объявлении переменной у неё не будет значения.

Тип byte

· Тип данных byte является 8-разрядным знаковым целым числом.

· Минимальная величина равна -128 (-27).

· Максимальное значение равно 127 (включительно) (27-1).

· byte предназначен для экономии места в больших массивах, главным образом вместо целых чисел, поскольку byte в четыре раза меньше, чем int.

· По умолчанию – 0.

 

Пример:

byte a = 100;byte b = -50;

 

Тип short

· Тип данных short является 16-разрядным знаковым целым числом.

· Минимальное значение равно -32768 (-215).

· Максимальная величина равна 32 767 (включительно) (215-1).

· Тип short в Java может также использоваться для экономии памяти как byte. Размер short в 2 раза меньше, чем int.

· По умолчанию — 0.

 

Пример:

short s = 10000;short r = -20000;

Тип int

· В языке Java тип данных int является 32-разрядным знаковым целым числом.

· Минимальный размер int — 2 147 483 648 (-231).

· Максимальная величина равна 2,147,483,647 (включительно)(231-1).

· Тип int обычно используется для целых значений. Если нет озабоченности по поводу памяти.

· По умолчанию равно 0.

 

Пример:

int a = 100000;int b =-200000;

Тип long

· Тип данных long является 64-разрядным знаковым целым числом.

· Минимальное значение равно — 9,223,372,036,854,775,808 (-263).

· Максимальная величина — 9,223,372,036,854,775,807 (включительно). (263-1).

· В Java применяется, когда требуется более широкий диапазон, чем int.

· По умолчанию — 0L.

 

Пример:

long a = 100000L;long b =-200000L;

Тип float

· Тип данных float является c одинарной точностью 32-битный IEEE 754 с плавающей точкой.

· Тип float используется главным образом для сохранения памяти в больших массивах чисел с плавающей точкой.

· Тип float никогда не должен применяется для точного значения, например, валюты.

· По умолчанию — 0.0f.

 

Пример:

float f1 = 234.5f;

Тип double

· Тип данных double является c двойной точностью 64-битный IEEE 754 с плавающей точкой.

· Обычно используется для десятичных значений.

· Тип double никогда не должен применяется для точного значения, например, валюты.

· По умолчанию — 0.0d.

 

Пример:

double d1 = 123.4;

Тип boolean

· Тип данных boolean представляет собой один бит информации.

· Существует только два возможных значения: true и false.

· Предназначен для простых признаков, которые позволяют отслеживать условия true или false.

· По умолчанию — false.

 

Пример:

boolean one = true;

Тип char

· Тип данных char является одним 16-разрядным символом Юникода.

· Минимальная величина равна «\u0000» (или 0).

· Максимальная величина равна «\uffff» (или 65535 включительно).

· В Java char нужен для хранения любого символа.

 

Пример:

char letterA ='A';

 

Преобразование типов

В Java существует 2 типа преобразований - картинка Вам в помощь:

Автоматическое преобразование типов

Код №1 - если Вы запустите это код на своем компьютере, в консоли будет выведено число 15

class Test {

 

public static void main(String[] args) {

byte a = 15;

byte b = a;

System.out.println(b);}

}

Код №2 - если Вы запустите это код на своем компьютере, в консоли будет выведено число 15

 

class Test {

public static void main(String[] args) {

byte a = 15;

int b = a;

System.out.println(b);}

}

И-и-и? Вы думаете, что раз в консоль было выведено одно и то же число, и код №1 отличается от кода №2 всего лишь типом переменной b, то между ними нет никакой разницы? Это не так.

В коде №2 присутствует автоматическое преобразование типов, а в коде №1 - нет:

Хотя число, в принципе, одно и то же, но теперь оно находится в б о льшем контейнере, который занимает больше места на диске. При этом, JVM выполняет автоматические преобразования за Вас. Она знает, что int больше чем byte.

 

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

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

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

Поэтому, вы должны «прямо сказать», что ситуация под контролем:

class Test {

public static void main(String[] args) {

int a=0;

long b=15;

a = (int) b;}

}

 

Тут мы дописали (int) перед b. Если бы переменная a была, к примеру, типа byte, в скобках бы стояло (byte). Общая формула выглядит так:

Она говорит "сделай из (большего) значения b переменную нужного мне (целевого) типа int ".



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2019-05-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: