Пацей 4 сем / Лекции / СТПI_1_введение
.pdf6. Вещественные и 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)