0

0

Java数据类型没学会?因为姿势没用对!

Java学习指南

Java学习指南

发布时间:2023-07-26 17:24:00

|

1398人浏览过

|

来源于Java学习指南

转载

小故事

大家好,我是node哥哥,江湖人称青哥,最近看那本很火的《java从入门到入土》非常入迷,听说在各大书城的销量排行榜上稳居第一名?看来爱学习的小伙伴还是很多的呀!都说知识改变命运,java成就人生,这么看来我当初下定决心学习java的选择是多么的正确!

Java数据类型没学会?因为姿势没用对!

不过话说回来,这本书写的确实不错,但毕竟我刚入门,有一些小知识点还有点疑惑,比如刚刚学习的数据类型,这对于零基础的我来说还是有些难度的。

这天,我在CSDN上正无聊闲逛,看到一篇博客:【数据结构和算法05 ,红黑树  看完懂~】  。说实话看到这样的文章我是非常不屑的,红黑树?是什么树?怎么一半红一半黑的?看完包懂?万一我懂一半呢?那不是难产了?哼!让我来我看看你是什么妖魔鬼怪。

小手轻轻一点,我进来了。一开始我是非常不以为然的,可是,越往下,我越吃惊…两分钟后,我差点跪下了!这写的太好了吧,怎么感觉比书里讲的还详细的多呢(虽然没看懂)!看看这满满的干货,这清新脱俗的文字,这满屏幕的【知识】,我怎么忍心错过呢?还不让他赶紧去我的收藏夹吃灰?看我关注、点赞、收藏,一波三连,把大佬安排的明明白白。

怀着激动的心情,我悄悄点开大佬的对话框。

:大佬,在吗?

过了一小会,大佬居然回信了!

武哥:在~ 有什么事吗?

:(不知道怎么组织语言)额..大佬…你真帅!太牛x了!

武哥:害!这不是公认的吗?

:(一脑门黑线,敢情这大佬有点自恋啊,我只是商业吹捧一下,他还挺自居?)哈哈~大佬,是这样的,我是一个学习Java的小白白,请问你能带带我吗?

武哥:嗯…这个…也可以,我收费的哦

:(心想果然是大佬,还收费)大佬,我非常喜欢Java,最近还买了一本书学习,书名是《Java从入门到入土》,我感觉这本书挺好,就是我有点小疑惑,想请教下学习的小问题,你看能不能开个后门?

武哥:那…行吧。看在你这么好学的份上,我就给你指点指点,你现在学到哪里了?

:我刚学到Java基础呢,看到数据结构这地方有点小懵圈~

武哥:这好说,我当年学Java基础可足足花了大半年呢!基础非常扎实的哦,我可以带着你一起过一下这块的知识点。

:真的吗?大佬!那太感谢你了!回头我请你吃饭!

武哥:小问题,小问题。我看你在也在合肥?

:是呀~(有点慌,悄悄点开大佬的个人资料,莫非…)

武哥:哈哈,巧了!我也在呢!

:啊哈?这么巧?那要不…(看来一顿饭跑不掉了,我哭…)

武哥:你加我个微信,我给你发个定位,咱们细聊。

:(这就…面基了?才几分钟的交流?大佬都这么骚的吗?虽然心里不太愿意,但是身体却很诚实)emm…好的,我这就过去…

武哥:好,等你哦~

我打了一个激灵…内心有一丝丝的慌张!

半小时后,我按照武哥给的地址,打车过来了。

见到武哥,果然,不出我所料,骚气异常!

只见武哥梳一个大背头,还抹了点油,斜靠在车上45°仰望天空,点一根烟,带着无尽的沧桑和寂寞。

:(硬着头皮上去打了个招呼)武哥?

武哥:(停下抽烟的动作,看了我一眼,眼神带着一丝迷离):Hello?你是node小哥哥吗?

:嗯…是的(悄悄后退几步)

武哥:(大步走过来,一把搂住我的肩膀)走,我们去咖啡店里,喝杯咖啡,聊聊Java,如何?

:(心想你都这样了,我还拒绝个屁啊!)好..的…

于是,武哥搂着我扭扭捏捏得去了星巴克…然后找了一个安静的小包间…

接下来的一幕估计你们能猜到了…

咳咳!正经点!我们是讨论学习去的!

什么?你不信?

那你就往下看看,干货预警!

 

干货来了

Java 数据类型有很多,本文主要从基本类型、包装类型、引用类型和缓存池四个方面来总结。

基本数据类型

基本数据类型有 byte、short、int、long、float、double、boolean、char,关于它们的分类,我画了个图。

Java数据类型没学会?因为姿势没用对!
基本类型

接下来我主要从字节数、数据范围、默认值、以及用途等方面给大家总结成一个表格,一目了然。

Java数据类型没学会?因为姿势没用对!

包装数据类型

上面提到的基本类型都有对应的包装类型,为了方便读者查看,我也整了一个表格。


Java数据类型没学会?因为姿势没用对!


引用类型

在Java中,引用类型的变量非常类似于 C/C++ 的指针。引用类型指向一个对象,指向对象的变量是引用变量。这些变量在声明时被指定为一个特定的类型,比如 Student、Dog 等。变量一旦声明后,类型就不能被改变了。

对象、数组都是引用数据类型。所有引用类型的默认值都是null。一个引用变量可以用来引用任何与之兼容的类型。例如:

Dog dog = new Dog("旺财")。

数据类型转换

包装类型和基本类型之间如何转化呢?

Integer x = 2;     // 装箱 调用了 Integer.valueOf(2)
int y = x;         // 拆箱 调用了 X.intValue()

基本类型之间如何转换呢?有两个点:

  1. 把大容量的类型转换为小容量的类型时必须使用强制类型转换。

  2. 把小容量的类型转换为大容量的类型可以自动转换。

比如:

int i =128;   
byte b = (byte)i;
long c = i;

缓存池

大家思考一个问题:new Integer(123)Integer.valueOf(123) 有什么区别?

有些人可能知道,有些人可能不知道。其实他们的区别很大。

  1. new Integer(123) 每次都会新建一个对象;

    Android 程序员向导 chm版
    Android 程序员向导 chm版

    Android 手机程序员向导,因为偶尔的机会接触了Android这个平台,但是自己以前没有接触过这类的编程资料,网上的资料也都寥寥无几,于是自己根据国外的资料翻译了一些,用尽了自己所有的翻译水平,我相信这将是国内一本非常全面、基础型的Android 编程教程,对你应该有帮助。

    下载
  2. Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。

    立即学习Java免费学习笔记(深入)”;

我写个demo大家就知道了

Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y);    // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k);   // true

编译器会在自动装箱过程调用valueOf()方法,因此多个值相同且值在缓存池范围内的 Integer 实例使用自动装箱来创建,那么就会引用相同的对象。如:

Integer m = 123;
Integer n = 123;
System.out.println(m == n); // true

valueOf()方法的实现比较简单,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。我们看下源码就知道。

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

根据数据类型的不一样,这个缓存池的上下限也不同,比如这个 Integer,就是 -128~127。不过这个上界是可调的,在启动 jvm 的时候,通过 -XX:AutoBoxCacheMax=来指定这个缓冲池的大小,该选项在 JVM 初始化的时候会设定一个名为 java.lang.IntegerCache.high 系统属性,然后 IntegerCache 初始化的时候就会读取该系统属性来决定上界。

参考自StackOverflow:

https://stackoverflow.com/questions/9030817/differences-between-new-integer123-integer-valueof123-and-just-123

 

OK,关于Java数据类型的小知识就分享到这了,虽然我还有点意犹未尽…

Java 的数据类型虽然简单,但是里面还是有很多小细节值得我们玩味的,希望这篇文章能给大家带来一些帮助。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
数据类型有哪几种
数据类型有哪几种

数据类型有整型、浮点型、字符型、字符串型、布尔型、数组、结构体和枚举等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

312

2023.10.31

php数据类型
php数据类型

本专题整合了php数据类型相关内容,阅读专题下面的文章了解更多详细内容。

223

2025.10.31

c语言 数据类型
c语言 数据类型

本专题整合了c语言数据类型相关内容,阅读专题下面的文章了解更多详细内容。

97

2026.02.12

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

592

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

java中boolean的用法
java中boolean的用法

在Java中,boolean是一种基本数据类型,它只有两个可能的值:true和false。boolean类型经常用于条件测试,比如进行比较或者检查某个条件是否满足。想了解更多java中boolean的相关内容,可以阅读本专题下面的文章。

365

2023.11.13

java boolean类型
java boolean类型

本专题整合了java中boolean类型相关教程,阅读专题下面的文章了解更多详细内容。

40

2025.11.30

c语言中null和NULL的区别
c语言中null和NULL的区别

c语言中null和NULL的区别是:null是C语言中的一个宏定义,通常用来表示一个空指针,可以用于初始化指针变量,或者在条件语句中判断指针是否为空;NULL是C语言中的一个预定义常量,通常用来表示一个空值,用于表示一个空的指针、空的指针数组或者空的结构体指针。

248

2023.09.22

Golang 测试体系与代码质量保障:工程级可靠性建设
Golang 测试体系与代码质量保障:工程级可靠性建设

Go语言测试体系与代码质量保障聚焦于构建工程级可靠性系统。本专题深入解析Go的测试工具链(如go test)、单元测试、集成测试及端到端测试实践,结合代码覆盖率分析、静态代码扫描(如go vet)和动态分析工具,建立全链路质量监控机制。通过自动化测试框架、持续集成(CI)流水线配置及代码审查规范,实现测试用例管理、缺陷追踪与质量门禁控制,确保代码健壮性与可维护性,为高可靠性工程系统提供质量保障。

6

2026.02.28

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Kotlin 教程
Kotlin 教程

共23课时 | 4万人学习

C# 教程
C# 教程

共94课时 | 10.4万人学习

Java 教程
Java 教程

共578课时 | 74.2万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号