Добавил:
ПОИТ 2016-2020 Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Пацей 4 сем / Лекции / СТПI_1_введение

.pdf
Скачиваний:
75
Добавлен:
29.04.2018
Размер:
5.71 Mб
Скачать

6. Вещественные и Math

Имя

Разряднос Диапазон

 

ть

 

double

64

1. 7е-308.. 1. 7е+ 308

float

32

3. 4е-038.. 3. 4е+ 038

import static java.lang.Math.*;

//java.lang.Math

double p= Math.PI; double e= Math.E; e++;

p++;

long rp = Math.round(e); double find = Math.min(p,e);

double randNumber = Math.random(); //[0,1) e=random();

java.math

поддерживают целые числа и числа с фиксированной точкой произвольной длины

Правила автоматического и явного

преобразования

JVM проводит арифметические операции только с int или long для целых ; double и float для вещест.

Авто преобразования

1) byte, short, char -> int (long)

2)long## (int, short,….) ->long

int one =1; short two =2; byte three =3; long five =5; char six =6;

int sum = five+six; // ошибка - слева long int m = two*three; //ok

3)Если double ## float - >double

4)Если int ## double - > double

Явные преобразования

диапазон значений типа левой части не должен быть уже, чем диапазон типа правой.

int operand1 =9;

double operand2 =operand1 + 8.56;

short operand3 = operand2 + 5; //ошибка ожидается double byteoperand4 = (byte)(operand3+67); //ok

6) Составное присваивание

x ##= a

 

x = (тип x)(x ## a)

byte newb =

1;

 

newb

= newb

+ 10;

// Ошибка

newb

+= 10;

 

// Правильно

_______без потери

---------- - с возможным усечением

Оболочечные классы. Упаковка

(boxing) и распаковка (unboxing)

примитивный тип <-> объектный тип class wrappers (java.lang)

Примитивный тип Оболочечный класс

byte

short

char int

longfloat double

boxing

unboxing

Byte

Short

Character

Integer

Long

Float

Double

Значения базовых типов хранятся в стеке и не являются объектами

экземпляр в динамической памяти, в котором хранится значение

По умолчанию null

Number n1 = 1; Переменная базового типа всегда

передается в метод по значению, а переменная класса-оболочки — по ссылке.

 

 

не требуют в явном создании

Доступ

типValue()

соответствующего объекта с

использованием оператора new

 

 

Integer obj1 = 10;

//упаковка

 

int i1 = obj1*2; //распаковка при вычислении выражения

Byte some = 1;

//упаковка

 

obj1 = i1/10;

//упаковка

 

some = 2;

//упаковка

 

1) медленнее

операций с примитивными

типами

 

 

2) требуют больше памяти 3) Увеличивает читабельность кода

Объект класса-оболочки может быть преобразован к базовому типу методом типValue() или обычным

присваиванием.

4) Содержат min max

System.out.println(Byte.MIN_VALUE);

System.out.println(Double.MAX_VALUE);

5) методы классов, могут работать в отсутствии объекта соответствующего типа (именем типа)

System.out.println(Byte.parseByte("2"));

Short.parseShort("23");

Integer.parseInt("12");

Integer.toHexString(23);

Integer.compare(23,34);

Integer.toString(1234);

Integer.bitCount(12);

System.out.println(Integer.rotateRight(11,123));

valueOf(String str), decode(String str), parseТип(String str)

Соседние файлы в папке Лекции