Java 数据类型: 分为引用类型和基本数据类型
1) 基本数据类型: 8种
byte, short, int, long
float, double
char
boolean
2) 整数类型 byte, short, int, long, 都是有符号(补码)整数
byte 8位补码 最大值 0x7f 127 最小值 0x80 -128
short 16位有符号数 0x7fff 32767 0x8000 -32768
int 32位 0x7fffffff 2G-1 2^31-1 21亿 0x80000000 -2G
int的精度是32位,范围是-2^(32-1)~2^(32-1)-1
long 64位 ....
long的精度是64位,范围是-2^(64-1)~2^(64-1)-1
整数字面量(直接量) 默认是int类型, 如果不超出范围, 可以给
小类型变量直接赋值.
使用整数类型(byte, short, int) 要注意取值范围, 超范围运算
java 底层byte,short 按照32位计算
long 类型的字面量使用"L","l" 后缀
3) 浮点数, 小数 (不必掌握 浮点数的存储方式)
IEEE 754
浮点数原理: 10进制浮点数(科学计数法)原理
2356189. = 235618.9 * 10
= 23561.89 * 10^2
= 2356.189 * 10^3
= .2356189 * 10^7
概念: 尾数: .2356189 (精度)
指数: 7 (范围)
基数: 10
3.14 * 100 (范围大)
3.1415926535 (精确)
pi = 3.14
3.1415926535897932384626433
二进制浮点数:
101001010101. = 10100101010.1 * 2
= 1010010101.01 * 2^10
= 101001010.101 * 2^11
= .101001010101 * 2^1100
概念: 尾数(有效尾数): .101001010101
指数: 1100
基数: 2
float: 32位 其中: 1位符号位, 8位指数, 23位尾数
float为单精度浮点型,其精度也就是其尾数,23 位
其表示数值的范围也就是其指数位
-2^(2^(8-1))~2^(2^(8-1))-1
int max = 01111111 11111111 11111111 11111111
float f = 1.111111 11111111 11111111 1 * 2^00011110
double: 64位 其中: 1位符号位, 11位指数, 52位尾数
double为双精度浮点型,其精度也就是其尾数,52 位
其表示数值的范围也就是其指数位
-2^(2^(11-1))~2^(2^(11-1))
浮点数的字面量: 默认是double, D d 后缀是double, f F 是float
在这里需要说的是,经常有提到int,long,float,double这些数据类型之间
的数值范围或精度作比较,所以今天在这里也对此做一个归纳:
(数值范围所表示的是2的次幂数)
数值范围(由小到大):int(+/-(32-1)),long(+/-(64-1)),float(+/-2^(8-1)),double(+/-2^(11-1))
精度(由小到大):float(23),int(31),double(52),long(63)
4) 字符类型 char, 字符是一个16位无符号整数, 是一个二进制数
数值是一个字符的unicode编码值.
unicode 编码: 是全球范围内的编码方法, 编制了英文, 中,日,韩
阿拉伯, 希伯来, ..... 8万+ 字符
其中英文部分与ASCII 兼容, 英文字符和数字是连续编码的.
中: 20013 田:30000
ASCII: 0~128
Java char 的范围 0~65535 不能表示全部unicode 但是可以表示
unicode只能够最常用的部分
*最小值:0, 最大值:65535 = 2^16-1
*字符字面量使用单引号为定界符号:'中' == 20013 == 0x4e2d
字面量也是整数常量!
特殊字符采用转义字符表示:
如: '\n' '\t' '\\' '\b' '\r'
'\'' '\"' '\u4e2d'
char c = '\\';
'X' - 'A' = N
'x' - 'a' = N
X = 'c' - 'a' + 'A'
5) boolean 布尔类型 表达: 真(true)/假(false)
建议使用长变量名定义变量
boolean started = true;
boolean isMan = true; //纯爷们!
isMan = false;
boolean used = true;//二手的
boolean married = false;
if(used){
System.out.println("打八折");
}
不建议 定义没有意义的变量
boolean u = true;//u = you
boolean flag = false;
if(flag){
System.out.println("打八折");
}
Person she;
Person he;
she.kill(he);
Person a;
Person b;
a.s(b);
4. 数据类型转换
char ->
byte -> short -> int -> long -> float -> double
1) 自动类型转换,正方向,小类型到大类型的转换会自动完成
符号位会自动扩展, 负数补1, 正数补0, 保证补码数值不变
注意, 整数到浮点数转换会损失精确度
自动类型转换也叫"隐式类型转换", 是自动发生的, 一般不需要处理
int i = -1;
long l = i;
2) 强制类型转换(显示类型转换), 需求明确处理, 是按照反方向,进行
的转换, 这种转换会溢出, 或者损失精度. 要注意数据的范围
int i = 128+256;// 00000000 00000000 00000001 10000000
byte b = (byte)i;//-128
long l=0xf80000000L;
int c = (int)l;//负数(long->int 为大类型向小类型,需强制转换)
long x=c;//小类型向大类型,隐式转换,不必强转
l = 8;
int d = (int)l;
float pi = (float)3.1415926535;//损失精度
char c = '0';
char x = (char)(c+2);
Long是多少位 java java long支持多少位
转载本文章为转载内容,我们尊重原作者对文章享有的著作权。如有内容错误或侵权问题,欢迎原作者联系我们进行内容更正或删除文章。
提问和评论都可以,用心的回复会被更多人看到
评论
发布评论
相关文章
-
java中long占位符 java long是多少位
Java基本语法配置完Java开发环境,下载完Java开发工具(Eclipse、IDEA)之后,就可以写Java代码,我们先从基础的概念说起。
java中long占位符 java Java 运算符 默认值