java的数据类型

目录

一、基本数据类型知识点

二、相关问题

1、String类型是基本数据类型还是引用类型?基本数据类型和引用类型有什么区别?  

2、以下代码输出的结果对不对,有什么原因



 

java的数据类型分为两大类:

  • 基本数据类型 :包括 整数 、 浮点数 、 字符 、 布尔 。
  • 引用数据类型 :包括 类 、  接口类型、 数组类型、 枚举类型、 注解类型、 字符串型

一、基本数据类型知识点

①整数类型:long、int、short、byte

②浮点类型:float、double

③字符类型:char

④布尔类型:boolean

 

Java中的默认类型:整数类型是 int 、浮点类型是 double 。 

数据类型关键字 内存占用 取值范围默认值
字节型byte 1个字节-128~1270
短整型short2个字节-32768~327670
整型int(默认)4个字节-231次方~2的31次方-10
长整型long8个字节2的63次方~2的63次方-10
单精度浮点数 float 4个字节 1.4013E-45~3.4028E+380.0
双精度浮点数double(默认)8个字节 4.9E-324~1.7977E+3080.0
字符型char 2个字节 0-65535'\u0000'
布尔类型boolean1个字节 true,falsefalse

 

 

 

 

 

 

 

 

二、相关问题

1、String类型是基本数据类型还是引用类型?基本数据类型和引用类型有什么区别?  

     第一个问题:String类型当然是引用类型

    第二个问题:基本数据类型和引用类型的区别

  •    引用数据类型拥有行为和属性,而基本数据类型没有    
  •    在方法里定义的局部变量(基本数据类型)的具体内容是存放在栈空间中的,而引用数据类型的变量

              其具体内容存储 在堆空间,栈空间存放的是其引用(内存地址)

public static void main(String[] args){
       //基本数据类型
       int i=1;
       double d=1.2;
       
       //引用数据类型
       String str="helloworld";
   }

内存 存放位置图例:

 

 

  •   在方法里定义的局部变量(基本数据类型),调用其他方法时作为参数按数值传递

          而引用数据类型变量,调用方法时作为参数是按引用传递

  •   引用数据类型的==是比较双方的地址值,而基本数据类型==是比较数据值

 

2、以下代码输出的结果对不对,有什么原因

    Integer a = new Integer(1);
    Integer b = new Integer(1);
    Integer c = 1;
    Integer d = 1;
    Integer e = 128
    Integer f = 128;
    System.out.println(a==b);  -- true
    System.out.println(c==d);  -- true
    System.out.println(e==f);  -- true

1、System.out.println(a==b);  结果为false,由上可知a和b是引用数据类型,而引用数据类型的==比较的是地址值,

     a和b的引用不是指向同一个对象,因此结果为false

2、System.out.println(c==d);   结果为true

     Integer c = 1; 是个自动装箱装箱的过程,相当于 Integer c = Integer.valueOf(1),

     自动装箱的数据是放在缓冲区的, 对于-128~127之间的创建是从缓冲区获取,所以c和d是相等的。源码如下

// IntegerCache.low  = -128 
// IntegerCache.high = 127
public static Integer valueOf(int i) {
        if (i >= IntegerCache.low && i <= IntegerCache.high)
            return IntegerCache.cache[i + (-IntegerCache.low)];
        return new Integer(i);
    }

3、 System.out.println(e==f); 结果为false, Integer e = 128这种自动装箱过程是要重新new的,所以e和f内存地址不同

   

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值