Java基础笔记之数据类型

  • 一、数据类型 (一)8种基本数据类型(内置数据类型\C#中为值类型)
    • 字符长度:1byte = 8 bit;
    • 布尔:可认为是 1byte (8 bit);
    • 字符
    • char:2/16
    • 整型:
    • short: 2/16
    • int: 4/32
    • long: 16/64
    • 浮点型:
    • float: 8/32
    • double: 16/64

    (二)包装类型(与基本数据类型一一对应,把基本数据类型封装成对象的形式)

    • 装箱和拆箱
    • 装箱:基本类型 -> 引用类型;
    • 拆箱:引用类型 -> 基本类型;
    • 基本数据类型与其包装类的对应表
    • 注意:包装类型属于类;
    • 理解
    • 自动装箱和拆箱:
    • 什么是自动装箱和拆箱?:

    答: Java中基础数据类型与它们的包装类进行运算时,编译器会自动帮我们进行转换,转换过程对程序员是透明的,这就是装箱和拆箱。 自动装箱和拆箱精讲(笔试面试重点) 自动装箱过程是通过调用包装器的valueOf方法实现的,而拆箱过程是通过调用包装器的 xxxValue方法实现的。(xxx代表对应的基本> 数据类型)。

    • 装箱和自动装箱的区别

    手动装箱直接使用 new Integer(3) 方法,而自动装箱则是使用 valueOf(int) 方法; 两方法的区别valueOf(int)方法种包含缓存池new Integer(int), 代码如下,对代码的解读如下:

    • 自动装箱使用的方法

    valueOf(int): public static Integer valueOf(int i) { if( i >= -128 && i <= IntegerCache.high) return IntegerCache.cache[i + 128]; else return new Integer(i); } 代码解读:如果数值在[-128,127]之间,便返回指向IntegerCache.cache(就是缓存池)中已经存在的对象的引用,若缓存池中不存在这样的对象就new一个新的Integer(x);如果不在[-128,127],则直接创建一个新的Integer对象。

    • 题目1:判断下列代码的输出结果 true/false;

    public class Main { public static void main(String[] args) { Integer i1 = 100; Integer i2 = 100; Integer i3 = 200; Integer i4 = 200; System.out.println(i1==i2); //true System.out.println(i3==i4); //false } } 解析:Integer i1 = 100;执行自动装箱,此时缓存池种没有这个对象,故new一个 Integer对象,并把它存到缓存池,当执行 Integer i2 = 100;时, 首先判断其范围i,在[-128,127]之间,故直接到缓存池中找看有没有已存在数值相同的对象,有则直接返回该对象,正好,我们第一步刚存的i1就是这样的对象,所以直接返回i1创建的对象给i2,所以,i1和i2其实是一个对象,所以 i1 == i2是正确的。而三四句,i3 和 i4都不在[-128,127]内,所以直接创建两个新的 Integer对象,所以i3和i4是两个不同的对象,i3自然不等于i4,不过 i3.equlas(i4)是对的。

Integer x = new Integer(3); //非自动装箱写法
Integer  x  =  2; // 自动装箱写法 
 
int y = x; // 自动拆箱写法

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小闫笔记

Django框架中的英文单词

本文采用的音标均为美式音标,有部分通用或者其他国家的语言,没有进行标注或者采用了通用音标。所有的意思均为牛津词典中的原意。因为上次文章直接使用的是学习pytho...

12530
来自专栏编程珠玑

如何制作属于自己的静态库?

在《一文带你了解静态库和动态库》一文中介绍了静态库的特点以及与动态库的区别。那么你有没有想过如何把自己写好的函数接口制作成静态库给别人用呢?本文教你如何制作属于...

12720
来自专栏算法与编程之美

Java实现常见排序算法(二)

上次的博客讨论了排序算法中的插入排序和交换排序两个大类,今天将剩下的常见排序算法全部梳理出来。

14320
来自专栏漏洞战争

推荐今年C3黑客大会上的几个议题

最近几天在德国举办的 The 35th Chaos Communication Congress (35C3) 黑客大会,在Twitter上传得火热,在国内却无...

14610
来自专栏歪脖贰点零

让Redis突破内存大小的限制

Redis虽然可以实现持久化存储,也是基于数据内存模型的基础之上,单机内存大小限制着Redis存储的数据量,有没有一种替代方案呢?本文介绍一款笔者使用的采用Ne...

10940
来自专栏数据魔术师

干货 | cplex介绍、下载和安装以及java环境配置和API简单说明

最近学习列生成算法,需要用到优化求解器。所以打算学习一下cplex这个商业求解器。

28730
来自专栏xyjincan

比较java c++ 对象之间的区别(内存)

版权声明:本文为博主原创文章,转载请保留出处 ...

14740
来自专栏算法与编程之美

聊一聊C语言变量的含义

假如我花了200元买了一块4G内存条,然后我定义了一个int a ;就意味着从这4G的内存上要拿走4个字节,又定义了一个int b;那么b同样也要从4G的内存条...

12620
来自专栏算法修养

LeetCode 31. Next Permutation

9510
来自专栏数据云团

框架篇-Django博客应用-权限控制

然后让 BlogPublishView 和 BlogEditView 类继承 AdminRequiredMixin即可。

9320

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励