JAVA基础之原始类型变量
2015-12-27 15:53
246 查看
整数类型·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位的字符集。如何实现的把二进制数显示到屏幕上变成我们所熟知的字符的?其实他是通过字符集的解析规律把二进制数变成一个个有规律的像素点然后再在屏幕上显示出来。
相关文章推荐
- Struts2之文件上传(单文件/多文件)
- Echache整合Spring缓存实例讲解
- Echache整合Spring缓存实例讲解
- Could not find bundle: org.eclipse.equinox.console
- Echache整合Spring缓存实例讲解
- Struts拦截器
- Spring Boot 静态资源处理
- Struts异常
- springBoot jpa 多数据源的动态切换
- 【Java并发编程实战】----- AQS(三):阻塞、唤醒:LockSupport
- JavaHL(JNI) Not Available
- jdbc中java与mysql数据类型的映射
- eclipse推荐的插件
- Java多线程之CountDownLatch
- JAVA IO的那些事
- java web基础 --- session
- Java NIO2:缓冲区
- Spring Security 4学习
- 利用泛型抽取Dao层,加事务注解问题(java.lang.Class cannot be cast to java.lang.reflect.ParameterizedType)
- Spring MVC的路径匹配