Java. Part 2. Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями.

Презентация:



Advertisements
Похожие презентации
Синтаксис языка Java. Символы и синтаксис Перевод строчки эквивалентен пробелу Регистр в именах различается.
Advertisements

Операции Условная операция ? : Если истинно, то результатом будет, иначе. Например, int x = a < b ? a : b вычисляет минимум из a и b.
Перегрузка операторов x = a + b результат 1-й операнд2-й операнд оператор По количеству операндов операторы делятся на: унарные (один операнд) бинарные.
Типы данных Инна Исаева. Переменные Переменная - это как ящик, в котором можно хранить данные. Каждая переменная имеет своё имя, она служит для хранения.
Практическое программирование на Java к.ф.-м.н. Козлов Дмитрий Дмитриевич Кафедра АСВК, Лаборатория Вычислительных комплексов.
Лекция 2 Наследование Наследование в Java имеет тот же смысл, что и в С++. Однако наследование в Java осуществляется при помощи ключевого слова extends.
Test 6 Вопрос 1. Как можно уничтожить объект в Java? a)присвоить null всем ссылкам на объект b)вызвать Runtime.getRuntime().gc() c)вызвать метод finalize()
Переменные и основные типы переменных на JAVA Выполнил учитель информатики и ИКТ МБОУ СОШ р.п. Евлашево Горелочкин Н.К.
Язык Java. JSP.. Java. Синтаксис. Перевод строчки эквивалентен пробелу Регистр в именах различается // Комментарии до конца строки /* Многострочные комментарии.
Встроенные классы в Java Макаревич Л. Г.. Разновидности встроенных классов Вложенные (Nested) классы Внутренние (Inner) классы Локальные классы Анонимные.
Тип, имя и значение переменной.. Переменные. В объектно-ориентированных языках программирования, и в частности в языке Visual Basic, переменные играют.
Строки и классы-оболочки. Класс String. Конструкторы String s = new String(); char chars[] = { 'а', 'b', 'с' }; String s = new String(chars); char chars[]
b5_java_s4
1 Классы в Java Ключевое слово class означает: Я говорю тебе, как выглядит новый тип объекта. Класс является базовым элементом объектно-ориентированного.
Лекция 2 Типы данных в Java Основные типы – простой и объектный.
Лекция 3 Принципы объектно- ориентированного программирования.
Типы данных и основы ООП Андрей Дмитриев
Учебный курс Объектно-ориентированный анализ и программирование Лекция 7 Методы как средство реализации операций Лекции читает кандидат технических наук.
Лекция 7 Классы - оболочки Каждому простому типу в Java соответствует класс-оболочка. Классы-оболочки выполняют две основные функции. Первая состоит в.
Гайдар Магдануров Microsoft.
Транксрипт:

Java. Part 2

Спецификаторы доступа public private protected не указан – доступ в пределах пакета Могут использоваться перед классами, методами, полями

Инициализация …. void f() { int i; i++; //не компилируется } …

Инициализация class Test { int i; public Test() { i++; System.out.println(i); }

Инициализация class Test { int n = 3; int i = foo(n); int foo(int num) { return 11*num; }

Инициализация public class StaticTest { static int i; int j, h; static { i = 25; System.out.println("Hello1"); } { j = 8; h = 3; System.out.println("Hello2"); } public static void main(String[] args) { System.out.println("Hello3"); StaticTest t = new StaticTest(); }

final «Это нельзя изменить» Можно использовать для данных, методов, классов Для классов – нельзя иметь наследников Для методов – нельзя изменить в производных классах (private => final)

final поля Константа времени компиляции Значение инициализируемое в процессе работы, но которое нельзя изменить. (Аккуратнее со ссылками!)

final public class BlankFinal { private final int i = 0; public static final int N = 10; private final int j; public BlankFinal(int x) { j = x; }

final class WithFinals { private final void f() { System.out.println("WithFinals.f()"); } private void g() { System.out.println("WithFinals.g()"); } public void foo() { f(); g(); } class OverridingPrivate extends WithFinals { private final void f() { System.out.println("OverridingPrivate.f()"); } private void g() { System.out.println("OverridingPrivate.g()"); } class OverridingPrivate2 extends OverridingPrivate { public final void f() { System.out.println("OverridingPrivate2.f()"); } public void g() { System.out.println("OverridingPrivate2.g()"); } public class FinalTest { public static void main(String[] args) { OverridingPrivate2 op2 = new OverridingPrivate2(); op2.f(); op2.g(); OverridingPrivate op = op2; //! op.f(); //! op.g(); WithFinals wf = op2; //! wf.f(); //! wf.g(); op2.foo(); }

Overload vs Overriding Overload (перегрузка) – использование одного идентификатора для ссылки на разные элементы в одной области действия. Overriding (замещение) – иная реализация метода в подклассе первоначально определившего метод класса

Примитивные типы boolean (1 бит)логический тип char (2 байта)символьный тип byte (1 байт)целочисленные типы short (2 байта) int (4 байта) long (8 байт) float (4 байта)типы с плавающей точкой double (8 байт) В Java существует 8 типов, кроме классов:

boolean Нельзя писать if (5)… операцияобозначение присваиваниеa = true; отрицание!b and (логическое и)a && b a & b or (логическое или)a || b a | b xor (исключающее или)a ^ b

char Хранится в кодировке unicode. c = 'b'; c = '\077'; Где 077 – это обязательно трехзначное число, не большее чем 377 (=255 в десятичной системе счисления) Или же в 16-ричной системе счисления следующим образом: c = '\u12a4'; c = '\n';

float, double ОписаниеВыдаваемое значениеСпециальная константа в Java +infinityFloat.POSITIVE_INFINITY Double.POSITIVE_INFINITY --infinityFloat.NEGATIVE_INFINITY Double.NEGATIVE_INFINITY неопределенность (Not a Number) NaNFloat.NaN Double.NaN

Преобразование типов Все типы условно можно расположить «в порядке увеличения»: byte < short < int < long < float < double int a = 1; float f = 2.2f; f = a; int a = 1; float f = 2.2f; a = (int)f;

Операции сравнения Для всех типов, кроме boolean, определены операции сравнения (для типа boolean можно выполнять проверку на равенство/неравенство) операцияобозначение равенство== неравенство!= больше> меньше< больше или равно>= меньше или равно

Классы обертки Byte, Short, Integer, Long, Float, Double, Boolean, Character (единственный тип, который «переименовали»). Integer x = 1; Boolean a = false; Integer x = new Integer(1);

Some magic… public static void test1() { int a = 1; int b = 1; System.out.println(" "); System.out.println(a>b); System.out.println(a

Some magic… public static void test2() { Integer a = 1; Integer b = 1; System.out.println(" "); System.out.println(a>b); System.out.println(a

Some magic… public static void test3() { Integer a = 1000; Integer b = 1000; System.out.println(" "); System.out.println(a>b); System.out.println(a

Some magic… public static void test4() { Integer a = new Integer(1); Integer b = new Integer(1); System.out.println(" "); System.out.println(a>b); System.out.println(a

В Java есть два способа сравнить объекты на равенство, == и метод equals. == используется для примитивных типов. Для объектов == это исключительно сравнение по ссылке! Для остального надо использовать метод.equals. Кроме того, метод hashCode служит (теоретически) для той же цели. Хорошим тоном считается переопределять его, если вы переопределили equals. Золотое правило сравнения: Если после инициализации неких объектов a и b выражение a.equals(b) вернёт true, то a.hashCode() должен быть равен b.hashCode().

Some magic – 2… class Links2 { public static void foo(Point p) { p.x = 3; } public static void main(String[] args) { Point p = new Point(0,0); foo(p); System.out.println(p.x); }

Some magic – 2… class Links3 { public static void foo(int x) { x = 3; } public static void main(String[] args) { int x = 1; foo(x); System.out.println(x); }

Some magic – 2… class Links4 { public static void foo(Integer x) { x = 3; } public static void main(String[] args) { Integer x = 1; foo(x); System.out.println(x); }

Some magic – 2… public class Links { public static void foo(String str) { str = new String("b"); } public static void main(String[] args) { String s = "a"; foo(s); System.out.println(s); }

Some magic – 2… public class Links { public static void foo(String str) { str = "b"; } public static void main(String[] args) { String s = "a"; foo(s); System.out.println(s); }