ref: http://www.cnblogs.com/simplefrog/archive/2012/07/15/2592011.html
第一类:逻辑型boolean
第二类:文本型char
char类型占2个字节
第三类:整数型(byte、short、int、long)
short从-32768到32767
int从-2147483648,到2147483647共10位
long从-9223372036854775808到9223372036854775807共19位
第四类:浮点型(float、double)
在数学中0到1有无数个浮点数;而计算机是离散的,所以表示的时候有误差,计算机用精度(小数点后几位来表示正确),比较浮点数时a==0.1是不合适的,应该a-0.1==0;如果a是0.1,则即使有误差 a-0.1==0因为a和0.1都被表示为一个有误差的计算机二进制
ref: http://suky.iteye.com/blog/591600
1.基本类型:存储在栈中,存储速度比较快些
byte,char,short,int,long,float,double,boolean
2.包装类,
Byte(1字节),
character(2字节),
Short(2字节),
Integer(4字节),
Long(8字节),
Float(4字节),
Double(8字节),
Boolean
这些包装类 都在java.lang包里,其中SIZE属性记录二进制位数,MIN_VALUE和MAX_VALUE记录取值范围。存储在堆中,因为使用final修饰,所以无法继承类以及重写任何方法。
3.int型值可以赋给所有数值类型的变量;
long型值可以赋给long、float、double类型的变量;
float型值可以赋给float、double类型的变量;
double型值只能赋给double类型变量。
把一个能表示更大范围或者更高精度的类型,转换为一个范围更小或者精度更低的类型时,
就需要使用强制类型转换。
例如:把一个double型值赋值给一个long类型变量,编译时会报错,即使这个值没有超出long类型的取值范围
long l = 1.0D;
除非使用强制类型转换
long l=(long) 1.0D;
注:
基本数据类型自动转换
byte->short,char -> int -> long
float -> double
int -> float
long -> double
小可转大,大转小会失去精度!!!
4.byte,char,short,int四种基本类型及其包装类(需要Java5.0/1.5以上版本支持)可以用于switch语句,其它类型编译会报错。
注意:enum(枚举类型,Java5.0以上版本可用)可用于swith语句
public class Test {
static enum e{ A,B }
public static void main(String[] args) {
switch (Test.e.A) {
case A:
System.out.println("A");
break;
case B:
System.out.println("B");
break;
}
}
}
结果:A
运算符对基本类型的影响
1.当使用+、-、*、/、%运算符对基本类型进行运算时,遵循如下规则:
两个操作数中,先考虑是否有一个是double类型的,是的话,另一个和结果 将会被转换成double类型。以此考虑float,long,除此之外两个操作数(包括byte、short、int、char)都将会被转换成int类型。
2.当使用+=、-=、*=、/=、%=、运算符对基本类型进行运算时,遵循如下规则:
运算符右边的数值将首先被强制转换成与运算符左边数值相同的类型,然后再执行运算,且运算结果与运算符左边数值类型相同。
面试涉及题目:
short s1=1;s1=s1+1;有什么错?short s1=1;s1+=1;有什么错?
解析:
short s1=1;//正确,int赋值给short
s1=s1+1;//编译错误,因为s1+1 结果int,转换为short,报错
s1=1+1;//正确,1+1是个编译时可以确定的常量,'+'运算在编译时就被执行了,而不是在程序执行的时候,这个语句的效果等同于s1=2
s1+=1;//正确,1首先被强制转换为short型,然后再参与运算,并且结果也是short类型
3.当使用“==”运算符在基本类型和其包装类对象之间比较时,遵循如下规则:
1). 只要两个操作数中有一个是基本类型,就是比较它们的数值是否相等。
2). 否则,就是判断这两个对象的内存地址是否相等,即是否是同一个对象。
测试验证:
int a = 1;
int b = new Integer(1);
Integer c = 1;
Integer d = new Integer(1);
//有一个是基本类型
System.out.println("a==b "+(a==b));
System.out.println("a==c "+(a==c));
System.out.println("a==d "+(a==b));
System.out.println("b==c "+(b==c));
System.out.println("b==d "+(b==d));
//两个都是包装类对象
System.out.println("d==c "+(d==c));
结果:
a==b true
a==c true
a==d true
b==c true
b==d true
d==c false
相关推荐
JAVA中的关键字、标识符、注释 JAVA中的数据类型、变量、运算符、表达式 JAVA类中方法的调用
Java八种基本数据类型详细描述,包括取值范围,默认值,长度,表现形式
Java__基本数据类型.mp4
java_mysql_数据类型对照 编程的时候用的到
java原始数据类型的包装类 java系统自定义原始封装类
资源名称:Java编程基础知识变量与数据类型资源目录:【】11957c6aed0bbd30e284837b53bc3a6f【】2.Java编程基础知识变量与数据类型1.数据类型初阶【】2.Java编程基础知识变量与数据类型10.浮点类型【】2.Java编程...
Java语言程序设计:JAVA_2-基本数据类型、枚举类型和数组.ppt
java实现modbus数据读取和写入,包括读取和写入coilstatus\.holdingRegister等function类型的表数据
java 解析Excel 并判断解析的数据类型__Eclipse工程,纯手工,无复制
javax.sql.rowset.serial 提供实用工具类,允许 SQL 类型与 Java 编程语言数据类型之间的可序列化映射关系。 javax.sql.rowset.spi 第三方供应商在其同步提供者的实现中必须使用的标准类和接口。 javax.swing 提供...
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 Java语言引入泛型的好处是...
Java数据类型和MySql数据类型对应一览
Java数据类型和MySql数据类型对应表
sqlserver数据库类型对应Java中的数据类型
资源名称:八课学会Java编程视频教程资源目录:【】JAVA_第一课:JDK的安装和使用(1)【】JAVA_第七课:数据类型的转换 (1)【】JAVA_第七课:数据类型的转换【】JAVA_第三课:学会使用Eclipse开发【】JAVA_第二课:...
SQL的数据类型与Java数据类型的对应关系,是程序员必备的基础知识,欢迎大家下载。
Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型Java中的基本数据类型...
主要介绍redis五种数据类型在Java中的详细使用 , 注释特别详细, 里面有我邮箱, 不懂的地方随时问我. 非常值得学习. 更多redis资料, 请与我邮箱联系!