Разделы презентаций


Странная джава

Содержание

Привет!Константин ГрошевВедущий программист / LuxoftТимлид, отец, мечтатель

Слайды и текст этой презентации

Слайд 1Странная джава
2018

Странная джава2018

Слайд 2Привет!
Константин Грошев
Ведущий программист / Luxoft
Тимлид, отец, мечтатель

Привет!Константин ГрошевВедущий программист / LuxoftТимлид, отец, мечтатель

Слайд 3Тихая гавань
Все, что будет показано на этом и последующих слайдах

является точкой зрения автора и не является официальной позицией той

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

Слайд 4Что будет происходить дальше
Небольшие задачки
Формат:
Задачка
Обсуждение
Правильный ответ
Пояснение

Что будет происходить дальшеНебольшие задачкиФормат: ЗадачкаОбсуждениеПравильный ответПояснение

Слайд 5Неравное равенство
Все мы одинаково равны,
но некоторые равны равнее

Неравное равенствоВсе мы одинаково равны, но некоторые равны равнее

Слайд 6public class IntegerPuzzle { public static void main(String[] args)

{ Integer a = 12;

Integer b = 12; if (a == b) System.out.println("bingo!"); } }

Вывод:

bingo!

public class IntegerPuzzle {   public static void main(String[] args) {     Integer

Слайд 7Почему?
/** * … * This method will always cache values

in the range -128 to 127, * inclusive, and may

cache other values outside of this range. *… * @since 1.5 */ public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }

Почему?/**  * …  * This method will always cache values in the range -128 to

Слайд 8Не совсем статические типы
Java – это язык со
статической типизацией

Не совсем статические типыJava – это язык со статической типизацией

Слайд 9public class StringPuzzle { public static void main(String[] args)

{ String s = null;

s += 10; System.out.println(s); } }

Вывод:

null10

public class StringPuzzle {   public static void main(String[] args) {     String

Слайд 10Почему?
JLS, 5.1.11. String Conversion:
...Now only reference values need to be considered. If

the reference is null, it is converted to the string

"null" (four ASCII characters n, u, l, l). Otherwise, the conversion is performed as if by an invocation of the toString method of the referenced object with no arguments; but if the result of invoking the toString method is null, then the string "null" is used instead.

JLS, 15.18.1. String Concatenation Operator +
s = new StringBuilder(String.valueOf(s))
.append(String.valueOf(10)).toString();

Почему?JLS, 5.1.11. String Conversion:...Now only reference values need to be considered. If the reference is null, it is converted

Слайд 11Очарованный стрим
Не верь глазам своим

Очарованный стримНе верь глазам своим

Слайд 12public class Twuzzler { public static void main(String[] args)

{ "Hello world!".chars().forEach(System.out::print); } }
Вывод:
721011081081113211911111410810033

public class Twuzzler {   public static void main(String[] args) {

Слайд 13Почему?
/** * Returns a stream of {@code int} zero-extending the

{@code char} values * from this sequence. Any char which

maps to a surrogate code * point is passed through uninterpreted. * *

If the sequence is mutated while the stream is being read, the * result is undefined. * * @return an IntStream of char values from this sequence * @since 1.8 */ public default IntStream chars() {

Почему?/**  * Returns a stream of {@code int} zero-extending the {@code char} values  * from

Слайд 14Непонятный инкремент
Все просто как 2+2!

Непонятный инкрементВсе просто как 2+2!

Слайд 15public class Increment {
public static void main(String[] args)

{
int j = 0;

for (int i = 0; i < 100; i++)
j = j++;
System.out.println(j);
}}

Вывод:

0

public class Increment {  public static void main(String[] args) {    int j =

Слайд 16Почему?
JLS 15.14.2 postfix increment operator
At run time, if evaluation of

the operand expression completes abruptly, then the postfix increment expression

completes abruptly for the same reason and no incrementation occurs. Otherwise, the value 1 is added to the value of the variable and the sum is stored back into the variable. 

int tmp = j;
j = j + 1;
j = tmp;

… и никакой магии!
Почему?JLS 15.14.2 postfix increment operatorAt run time, if evaluation of the operand expression completes abruptly, then the

Слайд 17Нелогичное решение
Лапки у бегемота круглые, чтобы было удобно порхать с

кувшинки на кувшинку

Нелогичное решениеЛапки у бегемота круглые, чтобы было удобно порхать с кувшинки на кувшинку

Слайд 18public class Indecisive { public static void main(String[] args)

{ System.out.println(decision()); } static boolean

decision() { try { return true; } finally { return false; } }}

Вывод:

false

public class Indecisive {   public static void main(String[] args) {     System.out.println(decision());

Слайд 19Почему?
JLS 14.20.2 Execution of try-finally and try-catch-finally

 If execution of the try block completes normally, then

the finally block is executed, and then there is a choice:
If the finally block

completes normally, then the try statement completes normally
 If the finally block completes abruptly for reason S, then the try statement completes abruptly for reason S.
Почему?JLS 14.20.2 Execution of try-finally and try-catch-finally If execution of the try block completes normally, then the finally block is executed, and then there is

Слайд 20Назойливый NPE
Чтобы засунуть жирафа в холодильник мы
просто открываем холодильник

и кладем туда жирафа

Назойливый NPEЧтобы засунуть жирафа в холодильник мы просто открываем холодильник и кладем туда жирафа

Слайд 21public class NullPointerExceptionsPuzzle { public static void main(String[] args)

{ try {

throw new NullPointerException("NullPointerException 1"); } catch (NullPointerException e) { throw new NullPointerException("NullPointerException 2"); } finally { return; } } }

Вывод:

public class NullPointerExceptionsPuzzle {   public static void main(String[] args) {     try

Слайд 22Почему?
JLS 14.20.2 Execution of try-finally and try-catch-finally

If the catch block completes abruptly for reason R, then

the finally block is executed. Then there is a choice:
If the finally block completes

normally, then the try statement completes abruptly for reason R.
If the finally block completes abruptly for reason S, then the try statement completes abruptly for reason S (and reason R is discarded).
Почему?JLS 14.20.2 Execution of try-finally and try-catch-finallyIf the catch block completes abruptly for reason R, then the finally block is executed. Then there is a

Слайд 23Большие проблемы малых чисел
Если то, что вы видите – очевидно,

это не значит,
что так оно и есть. Возможно, вы чего-то

не знаете
Большие проблемы малых чиселЕсли то, что вы видите – очевидно, это не значит,что так оно и есть.

Слайд 24public class BigProblem {
public static void main(String[] args) {

BigInteger firstParam = new BigInteger("2");

BigInteger secondParam = new BigInteger(”2");

BigInteger total = BigInteger.ZERO;
total.add(firstParam);
total.add(secondParam);
System.out.println(total);
}}

Вывод:

0

public class BigProblem {public static void main(String[] args) {    BigInteger firstParam = new BigInteger(

Слайд 25Почему?
BigInteger, String, BigDecimal, а также обертки Integer, Long, Short, Byte,

Character, Boolean, Float, и Double – это immutable типы!

Почему?BigInteger, String, BigDecimal, а также обертки Integer, Long, Short, Byte, Character, Boolean, Float, и Double – это

Слайд 26Хочу знать больше!
JLS для вашей платформы и версии Java
Joshua Bloch,

Neal Gafter. Java Puzzlers. Traps, Pitfalls, and Corner Cases
Joshua Bloch.

Effective Java: Second Edition
 Gayle Laakmann McDowell. Cracking the Coding Interview: 189 Programming Questions and Solutions
Хочу знать больше!JLS для вашей платформы и версии JavaJoshua Bloch, Neal Gafter. Java Puzzlers. Traps, Pitfalls, and

Слайд 27СПАСИБО!
У вас есть вопросы?
Ищите меня в интернете
@kgroshev
mail@groshev.net
www.groshev.net

СПАСИБО!У вас есть вопросы?Ищите меня в интернете@kgroshevmail@groshev.netwww.groshev.net

Обратная связь

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

Email: Нажмите что бы посмотреть 

Что такое TheSlide.ru?

Это сайт презентации, докладов, проектов в PowerPoint. Здесь удобно  хранить и делиться своими презентациями с другими пользователями.


Для правообладателей

Яндекс.Метрика