Java数据类型、基本与引用数据类型区别、装箱与拆箱、a=a+b与a+=b区别

news2024/11/16 21:31:18

文章目录

    • 1.Java有哪些数据类型
    • 2.Java中引用数据类型有哪些,它们与基本数据类型有什么区别?
    • 3.Java中的自动装箱与拆箱
    • 4.为什么要有包装类型?
    • 5.a=a+b与a+=b有什么区别吗?

1.Java有哪些数据类型

8种基本数据类型

  • 6种数字类型(4个整数型,两个浮点型)byte、short、int、long、float、double
  • 1种字符类型:char
  • 1种布尔类型 :boolean

byte:

  • byte数据类型是8位、有符号的,以二进制补码表示的整数
  • 最小值-128(-2^7)
  • 最大值127(2^7-1)
  • 默认值为0
  • byte 类型用在大型数组中节约空间,主要代替整数,因为 byte 变量占用的空间只有 int 类型的四分之一;
  • 1 byte = 1字节 = 8bit 可表达 2的八次方个数字
    1 short= 2字节 = 16bit 可表达2的十六次方个数字
    1 int = 4字节 = 32bit 可表达2的32次方
  • 如果考虑符号位,最大值就要减1

short:

  • short类型16位,有符号的,以二进制补码表示的整数
  • 最小值-32768(-2^15)
  • 最大值32767(2^15-1)
  • Short 数据类型也可以像 byte 那样节省空间。一个short变量是int型变量所占空间的二分之一;
  • 默认值是0

int:

  • int类型32位,有符号的,以二进制补码表示的整数
  • 最小值-21,4748,3648(-2^31)
  • 最大值21,4748,3647(2^31-1)
  • 默认值为0

long:

  • **注意:**Java 里使用 long 类型的数据一定要在数值后面加上 L,否则将作为整型解析

  • long 数据类型是 64 位、有符号的以二进制补码表示的整数;

  • 最小值是 -9,223,372,036,854,775,808(-2^63);

  • 最大值是 9,223,372,036,854,775,807(2^63 -1);

  • 这种类型主要使用在需要比较大整数的系统上;

  • 默认值是 0L

float

  • float 数据类型是单精度、32位、符合IEEE 754标准的浮点数;

  • float 在储存大型浮点数组的时候可节省内存空间;

  • 默认值是 0.0f

  • 浮点数不能用来表示精确的值,如货币!;

double

  • double 数据类型是双精度、64 位、符合IEEE 754标准的浮点数;

  • 浮点数的默认类型为double类型;

  • double类型同样不能表示精确的值,如货币;

  • 默认值是 0.0d

char

  • char类型是一个单一的 16 位 Unicode 字符;

  • 最小值是 \u0000(即为 0);

  • 最大值是 \uffff(即为 65535);

  • char 数据类型可以储存任何字符;

boolean

  • boolean数据类型表示一位的信息;

  • 只有两个取值:true 和 false;

  • 这种类型只作为一种标志来记录 true/false 情况;

  • 默认值是 false

这八种基本类型都有对应的包装类分别为:Byte、Short、Integer、Long、Float、Double、Character、Boolean

image-20230218130526666

2.Java中引用数据类型有哪些,它们与基本数据类型有什么区别?

引用数据类型分3种:类,接口,数组;

从概念方面来说

1,基本数据类型:变量名指向具体的数值

2,引用数据类型:变量名不是指向具体的数值,而是指向存数据的内存地址。

从内存的构建方面来说(内存中,有堆内存和栈内存两者)

1,基本数据类型:被创建时,在栈内存中会被划分出一定的内存,并将数值存储在该内存中.

2,引用数据类型:被创建时,首先会在栈内存中分配一块空间,然后在堆内存中也会分配一块具体的空间用来

存储数据的具体信息,即hash值,然后由栈中引用指向堆中的对象地址.

image-20230218131006664

从使用方面来说

1,基本数据类型:判断数据是否相等,用==和!=判断。

2,引用数据类型:判断数据是否相等,用equals()方法,==和!=是比较数值的。而equals()方法是比较内存

地址的。

3.Java中的自动装箱与拆箱

参考这位博主hh

https://blog.csdn.net/swadian2008/article/details/128290566

4.为什么要有包装类型?

让基本数据类型也具有对象的特征

image-20230218135604802

为了让基本类型也具有对象的特征,就出现了包装类型(如我们在使用集合类型Collection时就一定要使

用包装类型而非基本类型)因为容器都是装object的,这是就需要这些基本类型的包装器类了。

自动装箱: new Integer(6); ,底层调用: Integer.valueOf(6)

自动拆箱: int i = new Integer(6); ,底层调用 i.intValue(); 方法实现。

二者的区别:

  • 声明方式不同:基本类型不使用new关键字,而包装类型需要使用new关键字来在堆中分配存储空

  • 存储方式及位置不同:基本类型是直接将变量值存储在栈中,而包装类型是将对象放在堆中,然后

通过引用来使用;

  • 初始值不同:基本类型的初始值如int为0,boolean为false,而包装类型的初始值为null;

  • 使用方式不同:基本类型直接赋值直接使用就好,而包装类型在集合如Collection、Map时会使用

到。

5.a=a+b与a+=b有什么区别吗?

+= 操作符会进行隐式自动类型转换,此处a+=b隐式的将加操作的结果类型强制转换为持有结果的类型,而

a=a+b则不会自动进行类型转换.如:

byte a = 127;
byte b = 127;
b = a + b; // 报编译错误:cannot convert from int to byte
b += a;

以下代码是否有错,有的话怎么改?

short s1= 1;
s1 = s1 + 1;

有错误.short类型在进行运算时会自动提升为int类型,也就是说 s1+1 的运算结果是int类型,而s1是short

类型,此时编译器会报错.

正确写法

short s1= 1;
s1 += 1;

码是否有错,有的话怎么改?

short s1= 1;
s1 = s1 + 1;

有错误.short类型在进行运算时会自动提升为int类型,也就是说 s1+1 的运算结果是int类型,而s1是short

类型,此时编译器会报错.

正确写法

short s1= 1;
s1 += 1;

+= 操作符会对右边的表达式结果强转匹配左边的数据类型

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/354801.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

java ssm志愿者信息服务平台springmvc

志愿者服务平台,采用ssm框架技术,java语言,jsp前端页面以及js,DIVCSS,html5等技术综合应用开发实现。志愿者服务平台,采用了前台后台的模式开发,前台用于志愿者在线项目培训,视频学习…

CUDA编程接口

编程接口 文章目录编程接口3.1利用NVCC编译3.1.1编译流程3.1.1.1 离线编译3.1.1.2 即时编译3.1.2 Binary 兼容性注意:仅桌面支持二进制兼容性。 Tegra 不支持它。 此外,不支持桌面和 Tegra 之间的二进制兼容性。3.1.3 PTX 兼容性3.1.4 应用程序兼容性3.1…

Kafka框架快速入门及异步通知

文章目录1、异步通信原理1.1 观察者模式1.2 生产者消费者模式1.3 缓冲区1.4 数据单元2、消息系统原理2.1 点对点消息传递2.2 发布订阅消息传递3、Kafka简介3.1 设计目标3.2 Kafka的优点4、Kafka系统架构4.1 Broker4.2 Topic4.3 Partition4.4 Leader4.5 Follower4.6 replication…

ACL与NAT

ACL---访问控制列表,是一种策略控制工具 功能:1.定义感兴趣流量(数据层面 ) 2.定义感兴趣路由(控制层面) ACL 条目表项组成: 编号规则:步数或者跳数默认值为5,…

Rancher 部署 MySQL

文章目录创建 pvc部署 MySQL前置条件:安装 rancher,可参考文章 docker 部署 rancher 创建 pvc MySQL 数据库是需要存储的,所以必须先准备 pvc 创建 pvc 自定义 pvc 名称选择已经新建好的 storageclass,storageclass 的创建可参考…

Mac os如何安装绿盾客户端

环境: Apple Mac mini 八核M1芯片 8G 256G Mac os 11.0 问题描述: Mac os如何安装绿盾客户端 解决方案: 一、关闭系统保护 1.关机电脑,按住“开机键”不放直到屏幕上出现“选项” 点击“继续”,等待进入恢复模…

github 使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录一、git与github二、出错的地方1.GitHub没有css样式2、git clone出现错误3、明明创建了responsibility 但git 不显示一、git与github 这个博客写的很好!…

剔除绿化后的比较可靠的评价模型

sheet4权重实际评分(越高越不好)(0-5分)正向化(5-X)后分别与权重相乘得到该地的总分总分高,排名高为好,即污染小排序后

【Kubernetes】第三篇 - ci-server 构建节点 Docker、Jenkins 环境搭建

一,前言 上一篇,主要介绍了阿里云服务器的采购和简单配置: 三台服务器规划如下: 服务配置内网IP外网IP说明ci-server2c4g172.17.178.104182.92.4.158Jenkins Nexus Dockerk8s-master2c4g172.17.178.10547.93.9.45Kubernetes …

ARM uboot 源码分析5 -启动第二阶段

一、start_armboot 解析6 1、console_init_f (1) console_init_f 是 console(控制台)的第一阶段初始化。_f 表示是第一阶段初始化,_r 表示第二阶段初始化。有时候初始化函数不能一次一起完成,中间必须要夹杂一些代码,…

ccc-pytorch-回归问题(1)

文章目录1.简单回归实战:2.手写数据识别1.简单回归实战: 用 线性回归拟合二维平面中的100个点 公式:ywxbywxbywxb 损失函数:∑(yreally−y)2\sum(y_{really}-y)^2∑(yreally​−y)2 迭代方法:梯度下降法,…

【QA】[Vue/复选框全选] v-model绑定每一项的赋初值问题

发生场景:不只是复选框的状态改变,还有的功能要用到复选框的选中状态,比如:购物车计算总价,合计等等。 引入:复选框 checkbox 在使用时,需要用v-model绑定布尔值,来获取选中状态&…

一台电脑安装26个操作系统(windows,macos,linux,chromeOS,Android,静待HarmonyOS)

首先看看安装了哪些操作系统1-4: windows系统 四个5.Ubuntu6.deepin7.UOS家庭版8.fydeOS9.macOS10.银河麒麟11.红旗OS12.openSUSE Leap13.openAnolis14.openEuler(未安装桌面UI)15.中标麒麟(NeoKylin)16.centos17.debian Edu18.fedora19.oraclelinux(特别…

Rust Web入门(一):TCP 和 HTTP Server

本教程笔记来自 杨旭老师的 rust web 全栈教程,链接如下: https://www.bilibili.com/video/BV1RP4y1G7KF?p1&vd_source8595fbbf160cc11a0cc07cadacf22951 学习 Rust Web 需要学习 rust 的前置知识可以学习杨旭老师的另一门教程 https://www.bili…

【原创】java+swing+mysql图书管理系统设计与实现

图书管理系统是一个比较常见的系统,今天我们主要介绍如何使用javaswiingmysql去开发一个cs架构的图书管理系统,方便学生进行图书借阅。 功能分析: 宿舍报修管理系统的使用角色,一般分为管理员和学生,管理员主要进行学…

学习OpenGL图形2D/3D编程

环境:WindowsVisual Studio 2019最流行的几个库:GLUT,SDL,SFML和GLFWGLFWGLAD库查看显卡OPENGL支持情况VS2019glfwgladopenGL3.3顶点着色器片段着色器VAO-VBO-(EBO)->渲染VAO-VBO-EBO->texture纹理矩阵matrix对图形transfor…

jmx prometheus引起的一次cpu飙高

用户接入了jmx agent进行prometheus监控后,在某个时间点出现cpu飙高 排查思路: 1、top,找到java进程ID 2、top -Hp 进程ID,找到java进程下占用高CPU的线程ID 3、jstack 进程ID,找到那个高CPU的线程ID的堆栈。 4、分析堆…

jenkins基础部署

一、jenkins是什么1.Jenkins的前身是Hudson,采用JAVA编写的持续集成开源工具。Hudson由Sun公司在2004年启动,第一个版本于2005年在java.net发布。2007年开始Hudson逐渐取代CruiseControl和其他的开源构建工具的江湖地位。在2008年的JavaOne大会上在开发者…

【Vue3源码】第二章 effect功能的完善下

【Vue3源码】第二章 effect功能的完善下 前言 上一章节我们实现了effect函数的runner 和 scheduler,这一章我们继续完善effect函数的功能,stop和onstop。 1、实现effect的stop功能 顾名思义,stop就是让effect停下来的函数。那么怎么才能让…

系统分享|分享几个Windows系统镜像下载网站

📣今日作品:如何关闭Microsoft start方法介绍👦创作者:Jum朱⏰预计花费:10分钟📖个人主页:Jum朱博客的个人主页系统之家传送门:https://www.xitongzhijia.net/这个是老牌一直还在运营…