java基础:java基本数据类型详解

article/2025/8/23 16:16:38

1.java基本数据类型

java有八种基本数据类型:

  • 4种整型 :byte,short,int,long
  • 2种浮点型:float,double (3.14F位浮点型,没有F默认为double)
  • 一种字符型:char
  • 一种boolean型:boolean
    在这里插入图片描述

基本数据类型之间的类型转换??

1.1、自动转换: 低类型的向高类型的转换

在这里插入图片描述

1.2、强制类型转换

高类型的向底类型转换,但可能会数据溢出或者精度丢失
基本数据类型中,布尔类型boolean占有一个字节,由于其本身所代码的特殊含义,boolean类型与其他基本类型不能进行类型的转换(既不能进行自动类型的提升,也不能强制类型转换), 否则,将编译出错。

2. 基本数据类型对应的包装类

java是一门面向对象的语言,但是8中基本数据类型不具备面向对象的特征,所以实际使用中很不便所以为java八种基本数据类型提供了对应的包装类。
在这里插入图片描述

2.1 基本数据类型和包装类类型的区别

  • 包装类是对象,拥有方法和字段,对象的调用都是通过引用对象的地址,基本类型不是;
  • 包装类型是引用的传递,基本类型是值的传递;
  • 声明方式不同,基本数据类型不需要new关键字,而包装类型需要new在堆内存中进行new来分配内存空间;
  • 存储位置不同,基本数据类型直接将值保存在值栈中,而包装类型是把对象放在堆中,然后通过对象的引用来调用他们,因此,包装类的效率会比基本数据类型的效率要低。
  • 初始值不同,比如:int的初始值为0、boolean的初始值为false,而包装类型的初始值为null;

2.2、自动装箱和自动拆箱

  1. 自动拆箱 包装类——>基本数据类型 (原理是调用了xxxValue方法)
  2. 自动装箱 基本数据类型——>包装类 (原理是调用了valueOf方法)
  • 包装类和基本数据类型比较时,只要值相等就相等
public static void main(String[] args) {Integer a1=127;Integer a2=127;int a3=127;Integer b1=128;Integer b2=128;int b3=128;System.out.println(a1==a2);System.out.println(a1==a3);System.out.println(b1==b2);System.out.println(b1==b3);
}/*输出:true true false true

解析:自动装箱时采用valueOf方法,由于127在静态数组的范围内,所以不是new的,
而128的两个引用是指向new出现对象的,所以第一个是true,第三个是false。
而包装类和基本数据类型比较时,只要数值是相等的,就相等

3、为什么需要有包装类类型???

java程序中可以直接操作基本数据类型,但是某些情况下需要将它们看成对象来处理,这些情况下就需要借助于Java API中基本数据类型对应的包装类来处理了。

包装类主要作用:

  • Java中的基本类型不是面向对象的,它们只是纯粹的数据,除了数值本身的信息之外,基本类型数据不带有其他信息或者可操作方法。这在实际使用中存在很多不足,为了解决这个不足,对每个基本类型都对应了一个引用的类型,称为装箱基本类型。
  • 提供了一系列实用的方法,比如toString(),equals(),hsahCode(),wait(),notify()
  • java集合不允许存放基本数据类型,存放数字时要用包装类型;(为什么?)
    Java集合不能存放基本数据类型,只能存放对象的引用。每个集合元素都是一个引用变量,实际内容都存放在堆内或方法区里面,但是基本数据类型是在栈内存上分配空间的,栈上的数据随时会被收回。 可以通过包装类,把基本数据类型转化为对象类型,存放引用。有了自动拆箱和装箱功能,基本数据类型和其对应对象之间的转换变得很方便,把基本数据类型存入集合中可以自动存。

在这里插入图片描述


http://chatgpt.dhexx.cn/article/70D1fGTP.shtml

相关文章

Java基础(一) 八大基本数据类型

Java基础(一) 八大基本数据类型 自从Java发布以来,基本数据类型就是Java语言的一部分,分别是byte, short, int, long, char, float, double, boolean. 其中: 整型:byte, short, int, long 字符型:char 浮点型&…

GitHub 宣布两个重磅消息:发布移动端、封存代码

By 超神经 AI 无处不在的时代,每天都有新的技术与研究成果出现。无论学术界还是商界,技术还是产品,AI 的新发现都源源不断,在带给我们全新视角的同时,也引起我们更深的思考。 想知道最近的 AI 动态吗?Hyper…

OpenAI 是如何被10亿美元收买了“非盈利”灵魂的?

编译 | 陈彩娴、琰琰 近日,一篇名为“How OpenAI Sold its Soul for $1 Billion”(OpenAI是如何因为 10 亿美元出卖自己的灵魂)的文章在 Reddit 上引起了热议。 文章作者 Alberto Romero 抨击知名的非营利机构OpenAI 为了金钱而出卖自己原有…

可怕!程序员要被革命了,微软推出自己会编程的 “AI 程序员” 插件

loonggg 读完需要 7分钟 速读仅需 3 分钟 大家好,我是校长。 这几天微软和 GitHub 推出了一款 AI 程序员智能插件,它自己会编程,会自动生成代码,有人说: 软件开发领域的「第三次工业革命」似乎正缓缓揭开序幕。 01 到底…

程序员提前下班的福音来了!GitHub、OpenAI 联手推出 AI 代码生成神器

整理 | 苏宓 出品 | CSDN(ID:CSDNnews) 编程门槛正在降低,编程效率正在提升,我们距离「人人都能成为开发者」的目标更近一步。这不,微软正式宣布发布了一个人工智能代码建议方案——GitHub Copilot&#xf…

2020 最好的Linux网络监控工具(翻译)

前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行,但是大多数网络监视工具都在Linux系统上运行,因为 Linux 通常是 IT 专家…

MySQL高可用管理工具:orchestrator

orchestrator 是一个MySQL高可用复制拓补的管理和可视化工具,同时也是GitHub官方在使用的一个复制拓补管理工具,它允许: 1)发现: orchestrator主动发现拓补结构并读取基本的MySQL信息,如复制状态和配置。…

GitHub 源代码疑遭泄漏

聚焦源代码安全,网罗国内外最新资讯! 编译:奇安信代码卫士团队 TypeScript的开发者Resynth 发布题为《GitHub 源代码泄漏》的文章指出,GitHub.com 的所有源代码被公开。 (泄漏者在 Readme 中指出,文档包括日…

2020 最好的Linux网络监控工具

前言 虽然这个清单包含开源的和闭源的产品,但它着重于介绍基于 Linux 的网络监控工具, 少数常用工具只能在 Windows,Pandora 或其他系统上运行,但是大多数网络监视工具都在Linux系统上运行,因为 Linux 通常是 IT 专家的…

网络地址转换(NAT)技术是否拖慢了互联网的发展?(2020 修订版)

2020 年修订版前言:看到有人还是对 IPv4 和 IPv6 的关系搞不清楚,好像只要有了 IPv6 就可以不要 IPv4 了,我只好把老文章祭出来了,当时也是我们接触 IPv6 的开始,两年下来,有些地方做了一些修订。 --- 正文…

Nat. Mach. Intell. | 人工智能的透明度和可重复性

今天给大家介绍多伦多大学的研究人员发表在nature machine intelligence上的一篇文章。文章指出McKinney等人利用AI在乳腺癌筛选上的工作,缺乏研究方法和代码实现的细节,阻碍了透明且可重复(transparent and reproducible)的AI研究…

网络安全学习中的工具

1> Nmap Nmap,也就是Network Mapper,最早是Linux下的网络扫描和嗅探工具包。 系统管理员可以利用nmap来探测工作环境中未经批准使用的服务器,但是黑客会利用nmap来搜集目标电脑的网络设定,从而计划攻击的方法。 其基本功能有三…

p2p网络测试工具_(官方更新)IPFS的网络层——libp2p在2020的发展

如果您在分散的点对点空间中执行任何操作,您可能听说过 libp2p - 用于对等应用程序的模块化网络堆栈。 libp2p 由许多模块化库组成,p2p 网络开发人员可以从中选择和重用所需的协议,同时便于应用程序之间的升级和互操作。这有助于 Web3 开发人…

NAT会话穿越应用程序(STUN)(RFC-5389)

RFC文档链接 摘要 NAT会话穿越应用程序 (STUN) 是一种协议,在处理网络地址转换(Network Address Translator, NAT)穿越时充当其他协议的工具。终端可以使用它来确定NAT分配给它的IP地址和端口。它还可以用来检查两端之间的连通性,并作为keep-alive协议…

教你用 CSS 实现超真实的 3D 相册,让你的照片立体感 UPUP

前言 现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,通过 css3 实现 3d 效果的立方体相册,下面一起看看吧。 实现思路 首先我们要确定好 html 的结构以及要使…

HTML+CSS实现3D立体相册

程序员的浪漫&#xff0c;话不多说上代码。 HTML: <body><div id"cube"><!--外层盒子--><ul><li><img src"./imgs/1.jpg" ></li><li><img src"./imgs/2.jpg" ></li><li>&l…

该换壁纸啦,记录一个用CSS和HTML做的3D立体相册

这几天看东宫沉迷于陈星旭&#xff0c;李承鄞太绝了&#xff01;这不得把壁纸安排上&#xff1f;简单记录一下制作过程。 1、准备照片 需要1张大的背景图和6张3d相册用图存放在img文件夹中。 可以先使用PS、美图秀秀或者其他修图软件等将相册用图改成200px*200px。 注意文件…

抖音程序员HTML相册,快手抖音程序员表白女朋友3D立体相册源码html网页相册代码...

前几天分享了一套源码&#xff0c;今天又为大家带来一套类似的源码&#xff0c;希望大家喜欢! 快手抖音很火的程序员女朋友3D立体相册源码html网页相册代码&#xff0c;经测试在IE8浏览器下无法预览&#xff0c;建议使用支持HTML5与css3效果较好的360浏览器预览本源码。 代码如…

H5 3d立体相册 CSS3特性

CSS3 变形特性,立方相册,3d旋转 之前看见过3d效果的立体相册,挺羡慕的,现在自己也有机会实现属于自己的3d立体相册了~~~话不多说,开搞… 一, 准备材料 六张自己喜欢的图片,六个面,怎么简单方便怎么来,名字直接取123456,后缀.jpg,放到img文件夹下一张小图片,大点也不要紧,为了浏…

js制作3d立体旋转相册

使用js做一个3d立体旋转相册 可自由拖拽 源码如下 <!DOCTYPE html> <html> <head> <meta charset"utf-8"><title>1</title><style type"text/css">.main{perspective: 800px;}#mian img{width: 200px;height:…