Java中的基本数据类型
来源:互联网 发布:淘宝怎么批量上架宝贝 编辑:程序博客网 时间:2024/06/15 22:20
1、数据类型
2、数据类型的转换:
①默认转换(从小精度到大精度)
●byte,short,char—>int—>long—>float—>double
注意:
long:8字节
float:4字节
为何默认转换却把long转成float呢?
原因如下:
A.它们底层的存储结构不同
B.float表示的数据范围比long的范围要大
long: 2^63 - 1
float: 3.4*10^38 > 2*10^38 > 2*8^38 = 2*2^3^38 = 2*2^114 >2^63-1
●byte,short,char相互之间补转换,他们参与运算首先转换为int类型
如图:
②强制转换(从大精度到小精度)
目标类型 变量名=(目标类型)(被转换的数据);
③boolean类型不能转换为其他的数据类型
④面试题:
题一:
byte b1=3,b2=4,b;
b=b1+b2;
b=3+4;
哪句是编译失败的呢?为什么呢?
答案:
b=b1+b2 编译报错
b=3+4 编译通过
因为b1、b2是byte类型的值,两个byte值相加的时候系统会先把b1、b2的值转换成int类型,然后再实现加法运算。这样得到的结果依旧是int型,在赋值给b的时候就会出现报错,这里会丢失精度。
而3+4中,3和4都是常量,常量的加法是先计算出结果,然后看结果是否在byte的范围内,如果在就不报错,如果不再就不报错。因此这里并不会报错。
题二:
byte b = 130;有没有问题?如果我想让赋值正确,可以怎么做?结果是多少呢?
答案:有问题,会出现编译出错。因为byte的范围是-128~127,130超出了这个范围,所以会报错。
想让赋值正确就必须使用强制类型转换,及 byte b = (byte) 130 ;
输出结果:-126
分析原因:
A:要知道在计算机中运算都是以补码进行的,因此首先要知道130的二进制表示。因为130是整型常量,因此使用4位二进制数表示,即
00000000 00000000 00000000 10000010
因为130是正数,因此其原码反码补码相同。
B:强制转换要做截取操作,截成byte类型,即一个八进制位:
10000010
这个结果是补码,是一个负数。
C:已知补码求原码:
符号位 数值位
补码: 1 0000010
反码: 1 0000001
原码: 1 1111110
由上可得:b = -126
3、字符数据和字符串参与运算
由以下代码即可看出端倪:
System.out.println("hello"+'a'+1); //helloa1System.out.println('a'+1+"hello"); //98helloSystem.out.println("5+5="+5+5); //5+5=55System.out.println(5+5+"=5+5"); //10=5+5
从代码和结果可以看出,字符串数据和其他数据做+,结果是字符串类型。这里的+不是加法运算,而是字符串连接符。
面试题:Java语言中的字符char可以存储一个中文汉字吗?为什么?
答:可以,因为java语言中字符占两个字节。
注:Java语言采用的是Unicode编码
- java中的基本数据类型
- java中的基本数据类型
- java中的基本数据类型
- Java中的基本数据类型
- java中的基本数据类型
- java中的基本数据类型
- java中的基本数据类型
- Java中的基本数据类型
- Java中的基本数据类型
- Java中的基本数据类型
- java中的基本数据类型
- Java中的基本数据类型
- Java中的基本数据类型
- java 中的基本数据类型
- Java中的基本数据类型
- Java中的基本数据类型
- java中的基本数据类型
- Java中的基本数据类型
- EditText 监听-----TextWatcher
- “费米悖论”
- 第四章: 类和接口
- Python小技巧 2:列表项的推导式和过滤操作
- Hdu 5890 Eighty seven
- Java中的基本数据类型
- 一些有趣的东西
- git 最常用命令
- Oracle wmsys.wm_concat()函数-把指定的列的值一个个用逗号链接起来
- leetcode 46: permutations
- Monkey
- 重启系统后oracle突然变慢问题解决
- C++11新特性
- 滑动冲突问题