您的位置:首页 > 编程语言 > Java开发

JAVA整型和浮点型基本数据类型的一些小姿势

2018-07-07 15:15 369 查看
我们都知道java有8大基本数据类型,分别是4个整数型byte,short,int,long,2个浮点类型float,double,1个布尔型boolean和一个字符型char。

小姿势1:当我们在java中输入一个整数常量时,默认的类型是int/Integer,而输入一个小数时默认类型是double/Double。是int还是Integer(double还是Double)取决于变量是基本数据类型还是封装类型。

证明:首先有这么些代码,我们在7行打上断点然后点击小虫子进行调试。



在调试框的变量栏中我们可以看到如下图所示,证明标题:



小姿势2:4种整数类型的取值范围如下



小姿势3:为Byte(byte),Short(short)类型赋值时如果没有超过其取值范围则编译通过,否则会出现类型错误。而为Integer(int)类型赋值如果输入的数数字大于int类型的取值类型会出现整型数字过大错误。





小姿势3:使用数字3对所有基本数字类型和其封装类进行赋值时,只有Long,Float,Double需要类型转换。



小姿势4:直接使用数字赋值和使用valueOf()函数赋值是是在常量池分配内存,由于常量池不换创建重复的数字,所以多次声明同一个值相同的变量时,其内存地址是一致的。而使用new关键字创建的对象是在堆中分配内存所以多次new时内存地址不同。

证明:首先输入以下代码,然后点击调试

public class Study {
Object o1 = 3;
Object o2 = 3;
Object o3 = Integer.valueOf(3);
Object o4 = new Integer(3);
Object o5 = new Integer(3);

public static void main(String[] args) {
Study study = new Study();
System.out.println();
}
}




可以看到o1 o2 o3内存地址相同,而o4 o5不相同并且与o1 o2 o3的内存地址不相同。

这里使用的是Integer类型进行实验,其他的数据类型的结果也是相同的哦。

小姿势5:使用==和.equal对基本数字类型的封装类进行比较时,==比较的是内存地址。而equal会先判断是否是相同类型再比较值是否相同,只有类型和值都相同才返回true。

证明:执行以下代码

public class Study {
public static void main(String[] args) {
Integer i0 = new Integer(3);
Integer i1 = new Integer(3);

System.out.println(i0==i1);
System.out.println(i0.equals(i1));

}
}



由于在new时堆中分配,所以i0和i1地址不同,但是他们的类型和值相同。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Java
相关文章推荐