Вы находитесь на странице: 1из 4

import java.io.

File;
import java.io.FileWriter;
import java.io.IOException;

public class PrimitiveDataTypes {

public static void main(String[] args) {


int num = 0xFFFF_FFFF;
byte btNum = (byte)num;
byte bt = (byte)0x00FF_FFFF;
long lng = 0xFFFF_FFFF_FFFFL;
float flt = 3.14F;
double dbl = 3.14;
int i = (int)lng;
char ch = ' ';
System.out.println(lng);
System.out.println(flt);
System.out.println(dbl);
System.out.println(i);
System.out.println(bt);

byte bt1 = 8;
byte bt2 = 8;
byte bt3 = (byte)(bt1 & bt2);
byte sum = (byte)((bt1 + bt2)/2);
System.out.println("sum (byte) ="+sum);

byte a = 120;
// byte a = 1200; -- не влазит, требуется приведение типов из инта в
байт
byte b = a; // присваивание -- возведение до инта не происходит,
приведение не требуется
byte c = (byte)(a*2 + b); // вычисление -- происходит возведение до
инта, требуется приведение типов из инта в байт
bt1+=bt2; // при сокращенной записи приведение типов не требуется, как
и при операциях ++ и --
bt1 = (byte)(bt1 + bt2); // вычисление -- даже если оно полностью
повторяет смысл сокращенной записи, требуется явное приведение типов

short d = 0x7FFF;
// short d = 1000000; //не влазит, требуется приведение типов из инта в
шорт
short e = a; // шорт больше байта -- приведение типов при присваивании
не требуется
b = (byte)d; // байт меньше шорта -- невозможно присвоить значение
short значению byte без явного приведения типов
short f = (short)(e + b); // вычисление -- происходит возведение до
инта, требуется приведение до short или byte (в этом случае возможна потеря данных)

// тип по умолчанию для литералов, при вычислениях происходит


возведение типа до инт, а значит, никаких дополнительных действий не требуется
int g = 1000000;
g = e; // short
g = b; // byte
g = a + b/c + e - f;
// g = 1000000000000000; -- не влазит, литерал превысил макс значение
для инта; в остальных случаях литералы были больше, чем byte и short, но по-факту
помещались в int
g = (int)1000000000000000L; // использование литерала L (long) --
литерал больше макс значения инта, но корректен для значения типа long,
присваивание с приведением лонга до инта с потерей данных
// переменная g содержит в себе максимальное значение int для данной
системы
// вычисление пройдет без ошибок и предупреждений со стороны
компиллятора или исполняющей среды, но результат вычислений будет НЕВЕРНЫМ
// так как он больше диапазона значений int
g = Integer.MAX_VALUE;
g = g*46;

long h = 100000; // литерал типа int присваивается переменной типа long


-- лонг больше инта, а значение литерала не выходит за диапазон значений инта
h = 1_000_000_000_000_000_000L; // значение литерала вне диапазона для
int, необходимо явное указание литерала типа long "L" или "l"
long I = h;

h = e; // short
h = b; // byte
h = g; // int
// так как в выражении присутствует переменная I типа long, то
происходит возведение до лонга
// а так как лонг самый большой целочисленный тип, то дополнительных
действий не требуется
h = e + b + g + I;
// переменная j содержит в себе максимальное значение long для данной
системы
// вычисление пройдет без ошибок и предупреждений со стороны
компиллятора или исполняющей среды, но результат вычислений будет НЕВЕРНЫМ
// так как он больше диапазона значений long
long j = Long.MAX_VALUE;
h = j*I;
float jj = 1000L;
//при присваивании лонга флоату могут быть сильные потери точности
float jh = j;
double fff = 0xFFFFFFFFFFFL;

HexShort hs = new HexShort();


hs.showShort();
System.out.println(fff);
System.out.println(jj);
System.out.println(jh);
}
}

class HexShort {
public void showShort() {
short shrt = Short.MIN_VALUE;
int i = Short.MIN_VALUE;
int total = 0;
boolean check = false;
File fl = new File("C:\\\\Users\\"+
//имя Вашего пользователя в Windows без пробелов и плюсов
+"\\Desktop\\IntRange.txt");
try {
check = fl.createNewFile();
if (check) System.out.println("New file was successfully
created!");
else System.out.println("File is already exist!");
}
catch (IOException e){System.out.println(e);}

System.out.println("Min Short = "+ shrt +


" " + "as HEX = 0x" + Integer.toHexString((int)shrt) + "\n"
+
"Max Short = " + Short.MAX_VALUE + " as HEX = 0x"
+Integer.toHexString((int)Short.MAX_VALUE));

try (FileWriter fw = new FileWriter(fl)){


while (i <= Short.MAX_VALUE)
{
fw.append("Short = "+ shrt +
" " + "as HEX = " +
Integer.toHexString((int)shrt) + " iteration number " + i + " " + " Hex counter " +
Integer.toHexString(total)+"\n");
++total;
++shrt;
++i;
}
}
catch (IOException e) {System.out.println(e);}
}

//DON'T DO THAT!!!
public void showInt()
{
int num = Integer.MIN_VALUE;
int i = Integer.MIN_VALUE;
int total = 0;
boolean check = false;
File fl = new File("C:\\\\Users\\"+
//имя Вашего пользователя в Windows без пробелов и плюсов
+"\\Desktop\\IntRange.txt");
try {
check = fl.createNewFile();
if (check) System.out.println("New file was successfully
created!");
else System.out.println("File is already exist!");
}
catch (IOException e){System.out.println(e);}

System.out.println("Min int = "+ num +


" " + "as HEX = 0x" + Integer.toHexString(num) + "\n" +
"Max int = " + Integer.MAX_VALUE + " as HEX = 0x"
+Integer.toHexString(Integer.MAX_VALUE));

try (FileWriter fw = new FileWriter(fl)){


while (i <= Integer.MAX_VALUE)
{
fw.append("Int = "+ num +
" " + "as HEX = " + Integer.toHexString(num) +
" iteration number " + i + " " + " Hex counter " + Integer.toHexString(total)+"\
n");
++total;
++num;
++i;
}
}
catch (IOException e) {System.out.println(e);}
}
}

Вам также может понравиться