【Java】基本数据类型、包装类与字符串间的转换 例题

写在前面:

关于这道题,初见感觉有点cpu烧坏了,准确来说是看了网上的一些讲解都感觉不尽人意。自己整理了一下,希望能帮助到大家。


题目:

如下两个题目输出结果相同吗?各是什么。

Object o1 = true ? new Integer(1) : new Double(2.0);

System.out.println(o1);//1.0

Object o2;

if (true) o2 = new Integer(1);

else o2 = new Double(2.0);

System.out.println(o2);//1

分析:

首先分析o1:Object o1 = true ? new Integer(1) : new Double(2.0);

  1. 三元运算符的语法是:

    condition ? expression1 : expression2
    
    • 如果 condition 为真(即 true),则选择 expression1
    • 如果 condition 为假(即 false),则选择 expression2
  2. 在该题目中,有以下表达式:

    Object o1 = true ? new Integer(1) : new Double(2.0);

    condition 是 true,因此我们选择 expression1,即 new Integer(1)。虽然是一个整数对象,但是三元运算符的结果类型必须是操作数的共同类型。

共同类型:两个操作数的最小公共类型。

   new Integer(1) 是整数类型,new Double(2.0) 是双精度浮点数类型。整数和双精度浮点数的共同类型是 Double。因此,三元运算符的结果类型是 Double, new Integer(1) 被自动转换为 Double 类型。所以,o1 被赋值为 1.0

其次分析o2:if (true) o2 = new Integer(1); else o2 = new Double(2.0);

由于条件是 true,所以执行了 if 分支,将 o2 赋值为 new Integer(1)。因此,o2 也被赋值为 1

综上,结果是相等的。


引申:不同类型数据间的转换
  1. 隐式类型转换(自动类型转换)

    • 隐式类型转换是在编译时自动发生的,无需显式指定。
    • 它允许将一个较小范围的数据类型转换为一个较大范围的数据类型。
    • 例如,将 int 转换为 double 或将 short 转换为 int
    • 隐式类型转换不会导致数据丢失
  2. 显式类型转换(强制类型转换)

    • 显式类型转换需要使用强制转换运算符(例如 (type))来明确指定转换的目标类型。
    • 它允许将一个较大范围的数据类型转换为一个较小范围的数据类型。
    • 例如,将 double 转换为 int 或将 long 转换为 short
    • 显式类型转换可能导致数据溢出或精度丢失,因此需要谨慎使用。
  3. 基本数据类型之间的转换

    • 整型、实型和字符型被视为简单数据类型。
    • 低级到高级的自动类型转换:
      • 低级变量可以直接转换为高级变量,例如:byte b; int i = b;
      • 对于 char 类型,向高级类型(整型)转换时,会转换为对应的 ASCII 码值。
    • 高级到低级的强制类型转换:
      • 使用强制类型转换,例如:int i = 99; byte b = (byte) i;
  4. 字符串与其他数据类型的转换

    • 将其他类型转换为字符串:
      • 调用类的 toString() 方法。
      • 使用自动转换:X + ""
      • 使用 String.valueOf(X)
    • 将字符串转换为其他类型:
      • 使用静态 parseXXX 方法,例如:int i = Integer.parseInt("123");
  5. Date 类与其他数据类型的转换

    • Date 类与整型之间的对应关系:
      • 使用 Date 构造函数,例如:Date date = new Date(2023, 10, 11);
    • Date 类与长整型之间的对应关系:
      • 使用 Date 构造函数,例如:Date date = new Date(1633948800000L);
    • 获取 Date 类中的年、月、日等信息,例如:int year = date.getYear();

写完了>w< 艾尔登法环启动!

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

悄悄告诉你,干洗店60%业务都在自这里

洗衣管理软件&#xff0c;让生活更轻松&#xff01;无论是洗衣还是洗鞋&#xff0c;这款软件都能帮你轻松搞定一切&#xff1a;预约、洗涤进度查询、顾客反馈&#xff0c;一切尽在指尖。 店家使用软件智能管理收衣收鞋&#xff0c;从接收、洗涤到通知顾客取衣&#xff0c;全程自…

【UE 材质】制作加载图案(2)

在上一篇&#xff08;【UE 材质】制作加载图案&#xff09;基础上继续实现如下效果的加载图案 效果 步骤 1. 复制一份上一篇制作的材质并打开 2. 添加“Floor”节点向下取整 除相同的平铺数 此时的效果如下 删除如下节点 通过“Ceil”向上取整&#xff0c;参数“Tiling”默认…

4、正则表达式、本地存储

一、正则表达式 1、定义 用事先定义好的一些特定字符&#xff0c;这样的字符组合&#xff0c;组合成一个“规则字符串” 2、正则的组成 特殊字符 字母、数字、下划线、中文、特殊字符… 元字符&#xff08;常用&#xff09; 1、\d 匹配至少有一个数字 var reg /\d/ /…

东莞IBM服务器维修之IBM x3630 M4阵列恢复

记录东莞某抖音电商公司送修一台IBM SYSTEM X3630 M4文档服务器RAID6故障导致数据丢失的恢复案例 时间&#xff1a;2024年02月20日&#xff0c; 服务器品牌&#xff1a;IBM System x3630 M4&#xff0c;阵列卡用的是DELL PERC H730P 服务器用途和用户位置&#xff1a;某抖音电…

新品齐发!小牛电动打造全场景高端化产品阵列!

2 月 29 日&#xff0c;全球智能城市出行品牌小牛电动发布“新世代性能旗舰”电摩NX、电自NXT&#xff0c;以及“全场景智驾越野电摩”X3三款新品。同时&#xff0c;与知名体育电竞俱乐部——JDG京东电子竞技俱乐部携手&#xff0c;打造“英雄的联盟”超级形象&#xff0c;引领…

文件误删除怎么恢复?盘点4个有效方法!

“我有一些很重要的工作文件保存在电脑上了&#xff0c;但是刚刚操作的时候却发现有些文件被误删了。有什么简单的误删文件恢复方法吗&#xff1f;” 在日常生活和工作中&#xff0c;我们可能都需要在电脑上保存各种各样的文件。如果在操作时误删比较重要的文件&#xff0c;很多…

进阶了解C++(4)——多态

在上篇文章中&#xff0c;简单的介绍了多态中的概念以及其相关原理。本文将针对多态中其他的概念进一步进行介绍&#xff0c;并且更加深入的介绍关于多态的相关原理。 目录 1. 抽象类&#xff1a; 2. 再谈虚表&#xff1a; 3. 多继承中的虚函数表&#xff1a; 1. 抽象类&am…

Mybatis-Plus介绍

目录 一、Mybatis-Plus简介 1.1、介绍 1.2、特性 1.3、架构 1.4、Mybatis-Plus与Mybatis的区别 二、快速入门 2.1、首先创建数据库mybatis-plus 2.2、创建user表 2.3、插入数据 2.4、创建Spring-Boot项目 2.5、添加依赖 2.6、连接数据库 一、Mybatis-Plus简介 1.1、…

Springboot项目集成短信验证码(超简单)

操作流程 注册验证码平台创建验证码模版开始集成&#xff08;无需引入第三方库&#xff09; 注册并登陆中昱维信验证码平台 获取AppID和AppKey。 创建验证码模版 创建验证码模版&#xff0c;获取验证码模版id 开始集成 创建controller import org.springframework.web.bi…

跨域引起的两个接口的session_id不是同一个

来源场景&#xff1a; RequestMapping(“/captcha”)接口设置了SESSION_KEY&#xff0c;也能获取到&#xff0c;但是到了PostMapping(“/login”)接口就是空的&#xff0c;由于跨域导致的两个session_id不是同一个 /*** 系统用户 前端控制器*/ Controller CrossOrigin(origins…

自定义el-dialog的样式

实现效果&#xff1a; 样式代码如下&#xff1a;&#xff08;可以写在common.scss文件夹中&#xff09; .el-dialog__header {padding: 16px 20px;border-bottom: 1px solid #DCDFE6;display: flex;align-items: center;.el-dialog__title {font-size: 16px;position: relativ…

MySQL(基础篇)——事务

一.事务简介 事务是一组操作的集合&#xff0c;他是一个不可分割的单位&#xff0c;事务会把所有的操作作色一个整体一起向系统提交或撤销操作请求&#xff0c;即这些操作要么同时成功&#xff0c;要么同时失败。 默认MySQL的事务是自动提交的&#xff0c;也就是说&#xff0c…

在VMware中安装CentOS 7并配置Docker

VMware安装CentOS 7 一、介绍 该文章介绍如何使用启动U盘在虚拟机里面安装系统&#xff0c;虚拟机版本为VMware Workstation 16 pro&#xff0c;Linux版本为CentOS Linux release 7.9.2009 (Core)。 二、安装 1、创建虚拟机 点击创建新的虚拟机 选择典型就可以了&#xf…

spring-boot static-path-pattern如何配置生效

WebMvcAutoConfiguration AbstractUrlHandlerMapping ResourceHttpRequestHandler springboot 版本 2.3.9.RELEASE 一、如何用 yaml配置 spring:mvc:static-path-pattern: /doctest/**resources:static-locations: classpath:/doc/资源文件配置 访问路径 二、原理 第一个问…

幻兽帕鲁联机服务器搭建

幻兽帕鲁联机服务器搭建 开通云服务器 云主机购买|香港云服务器|香港云主机|美国云服务器|弹性云主机租用尽在-特网科技 建议选择4核心 16G内存 10M带宽&#xff0c;可满足6-15人游玩 下载安装脚本 windows系统: 下载 http://downinfo.myhostadmin.net/palserver/install…

List集合的Stream流式操作实现数据类型转换

问题现象&#xff1a; 最近在项目中&#xff0c;有一些逻辑想用List集合的Stream流式操作来快速实现&#xff0c;但由于之前没做好学习笔记和总结&#xff0c;导致一时间想不起来&#xff0c;只能用本方法来解决&#xff0c;如下&#xff1a; 可以看出来代码量是比较冗长的&…

day57 集合 List Set Map

List实现类 List接口特点&#xff1a;元素有序 可重复 Arraylist 可变数组 jdk 8 以前Arraylist容量初始值10 jdk8 之后初始值为0&#xff0c;添加数据时&#xff0c;容量为10&#xff1b; ArrayList与Vector的区别&#xff1f; LinkList&#xff1a;双向链表 优点&#xff1…

服务器权限:Error: EACCES: permission denied, open‘/Cardiac/uniquC.csv

背景&#xff1a; 我想在服务器上传一个文件uniquC.csv&#xff0c;但是服务器说我没有权限 解决方案&#xff1a; 1. 查看目前是否存在对文件夹的权限 ls -ld /Cardiac/ # your fold path 此时&#xff0c;我发现 这也意味着root也没有赋予写的权限。 2. 拿到root权限 …

软件设计师软考题目解析10 --每日五题

想说的话&#xff1a;要准备软考了。0.0&#xff0c;其实我是不想考的&#xff0c;但是吧&#xff0c;由于本人已经学完所有知识了&#xff0c;只是被学校的课程给锁在那里了&#xff0c;不然早找工作去了。寻思着反正也无聊&#xff0c;就考个证玩玩。 本人github地址&#xf…

C++基于多设计模式下的同步异步日志系统day1

C基于多设计模式下的同步&异步日志系统day1 &#x1f4df;作者主页&#xff1a;慢热的陕西人 &#x1f334;专栏链接&#xff1a;C基于多设计模式下的同步&异步日志系统 &#x1f4e3;欢迎各位大佬&#x1f44d;点赞&#x1f525;关注&#x1f693;收藏&#xff0c;&am…