JAVA基础之原始类型变量

来源:互联网 发布:node 压力测试工具 编辑:程序博客网 时间:2024/05/27 09:44

整数类型

·byte:8位 1个字节  无符号大小为-2^8~2^8-1 有符号大小为-2^7~2^7-1

·short:16位 2个字节 无符号大小为-2^16~2^16-1 有符号大小为-2^15~2^15-1

·int:32位4个字节 无符号大小为-2^32~2^32-1 有符号大小为-2^31~2^31-1

·long:64位8个字节 无符号大小为-2^64~2^64-1有符号大小为-2^63~2^63-1

浮点类型

·float::32位4个字节

·double:64位8个字节

字符类型

·char:16位2个字节

布尔类型

·boolean:1位


为什么取值范围中负数要比整数多一个数?

这是因为+0和-0的缘故 0000000为正零 10000000为负零 只存在一个零 所以把零归结到了负数的范围中  了这样负数就是正好2^相应的位数 正数为2^相应位数减一。这么做也是为了呼应补码的原理 补码正数正好   就是原码本身 而负数则是符号位不变其他位取反后加一。


 变量之间是如何转化的?

同类变量之间转化遵循大范围的接小范围的,小范围的接大范围的要强制转换但是有可能丢失精度。

不同类型变量之间转化遵循高精度接低精度,低精度的接高精度的需要强制转换同样可能丢失精度。


public static void main(String[] args){    //大范围接小范围(可以)    int a =1;    long b = a;    //小范围接大范围(不可以)    long c = 1;    int d = c; }
public static void main(String[] args){    //高精度接低精度(可以)    int a = 1;    float b = a;    //低精度接高精度(不可以)    float c = 3;    int d = c;}

   无法转换的情况可以通过强制转换来实现 但是可能会丢失精度 看具体的数有没有超过要转换的范围

JAVA使用的字符集是ASCII么?

很明显不是的ascii是8位字符集里面存的数至多也就512个这显然是存不下JAVA的字符的举个例子char类型里面可以存中文,中文是占两个字节的按照ascii来看的话就明显存不下 因为他是一个字节的大小。JAVA中实际上是使用的Unicode字符集的这是一种16位的字符集。

如何实现的把二进制数显示到屏幕上变成我们所熟知的字符的?

其实他是通过字符集的解析规律把二进制数变成一个个有规律的像素点然后再在屏幕上显示出来。








2 0