java中的基本数据类型
2014-01-20 21:24
288 查看
整形类型:
1. byte (1字节)----------盛1两饭的碗2. short (2字节)---------盛2两饭的碗
3. int (4字节)------------盛4两饭的碗
4. long (8字节)----------盛8两饭的碗
简单记忆:byte是盛1两饭的碗,short是2两的碗,int是4两的碗,long是8两的碗,从这简单记忆中就能明白这几个类型间转换的关系。例如,将1两碗里的饭倒入2两的碗中是没有问题的,而将2两碗的饭倒入1两碗中则会溢出。
浮点类型:
1. float (4字节)2. double (8字节)
字符型:
1. char (2字节)布尔型
1. boolean类型提升&强制类型转换:
/*下面两段代码输出的结果分别是什么*/ /*代码片段一*/ byte b = 5; int x = 3; x = x + b; System.out.println(x); /*代码片段二*/ byte b = 5; b = b + 3; System.out.println(b); /*片段一输入结果为8,因为java中会将小数据类型自动做类型提升,会先将b提升为int然后再与x做运算,所以输出结果为8. 片段二编译不能通过,原因是java中的整数默认为int型,首先会将b提升为int,再对x+3做运算结果还为int, 将int型直接赋值给byte会存在数据丢失这是不允许的,除非显式的加入强制类型转换,否则编译都不能通过。 但是这里有一个问题,byte b = 5;为什么可以编译通过呢? 原因是:java会做一个隐式的类型转换,当数据超出所要赋值的类型时,编译不能通过。*/ /*下面的代码是否有错,为什么?*/ /*代码片段三*/ byte b = 4; byte b1 = 3; byte b2 = 7; b = b1 + b2; /*这段代码编译不同过,因为b1,b2的值不确定,无法确定其值是否会超出byte的范围,所以编译不过。 假如:b1 = 127; b1 + b2 将超出byte的范围*/
short s = 3; 1. s += 4; 2. s = s + 4; /* 1和2两句代码有没有区别,为什么? 这两句代码是有区别的,第2句代码编译不过,存在类型提升,同时其值不能确定是否超过short的取值,而s += 4;java底层会对其结果进行判断. */
/*下面代码中a的输出结果是多少?*/
int a = 3;
a = a++;
System.out.println(a);
/*
a的输出结果为3,这里的运算过程为:
1.首先a在自增前会将a的值放入到临时变量中,然后自增之后赋给a,此时a的值为4;
2. 当等号右边运行完后,会将临时变量的值赋给a,所以结果为3;
过程模拟为:
temp = a;
a += 1;
a = temp;
*/
注:1字节=8bit
相关文章推荐
- java基本数据类型转换
- Java中的基本数据类型转换
- java的基本数据类型
- java基本数据类型传递与引用传递区别详解
- 关于JAVA中的基本数据类型的转换相关问题
- java基本数据类型
- java数据类型(八种基本数据类型+三种引用类型)
- java基本数据类型及类型转换
- Java基本数据类型总结
- java 基本数据类型
- java判断基本数据类型的方法
- Java学习笔记之基本数据类型
- Java基础——基本数据类型的包装类
- java基本数据类型
- Java基本数据类型总结
- Java第一课 Java的一些基本概念,Java的起源、为什么我们要学习Java语言,Java跨平台原理剖析;Java环境变量的配置,初学者常犯的问题,Java语言的基本数据类型和Java的语句。
- JAVA基本数据类型、数据类型转换
- java和C++互调----(传递基本数据类型和对象)
- 基本Java数据类型
- JAVA基本数据类型介绍