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

写在前面:

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


题目:

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

Object o1 = true ? new Integer(1) : new Double(2.0);System.out.println(o1);//1.0Object 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< 艾尔登法环启动!

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

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

相关文章

双非二本找实习前的准备day3

学习目标&#xff1a; 每天2-3到简单sql&#xff08;刷完即止&#xff09;&#xff0c;每天复习代码随想录上的题目3道算法&#xff08;时间充足可以继续&#xff09;&#xff0c;背诵的八股的问题也在这里记录了 今日碎碎念&#xff1a; 1&#xff09;偶尔还是贪玩游戏&…

java演唱会网上订票购票系统springboot+vue

随着计算机技术的发展以及计算机网络的逐渐普及&#xff0c;互联网成为人们查找信息的重要场所&#xff0c;二十一世纪是信息的时代&#xff0c;所以信息的交换和信息流通显得特别重要。因此&#xff0c;开发合适的基于springboot的演唱会购票系统的设计与实现成为企业必然要走…

基于uniapp开发小程序,代码上线发布教程【抖音、微信】

本系列文章适合三类同学&#xff1a;1.希望学习小程序开发&#xff1b;2.希望无代码、低代码拥有自己的小程序&#xff1b;3.快速搭建小程序交作业、交毕设的大学生 本系列文章将推出配套桌面端软件&#xff0c;配合软件&#xff0c;可实现傻瓜式开发小程序&#xff0c;请有需求…

@Slf4j 变量log找不到符号,可能是 Gradle 配置文件写得有问题

Slf4j 变量log找不到符号 鄙人在学习 Java 的 spring boot 项目时, 常常因为 maven 配置文件使用 xml 格式过于复杂, 所以更倾向于使用 gradle 作为构建工具. 然而, 在使用 gradle 作为构建工具时, 又需要引用 Lombok 依赖. 有时忘记在初始化项目时添加上 Lombok 依赖, 所以经…

网络扫描之Nmap

一、主机发现 1. 全面扫描/综合扫描 nmap -A 192.168.100.1002. Ping扫描 nmap -sP 192.168.1.1/243. 免Ping扫描&#xff0c;穿透防火墙&#xff0c;避免被防火墙发现 nmap -P0 192.168.100.1004. TCP SYN Ping 扫描 nmap -PS -v 192.168.100.100 nmap -PS80,10-100 -v 192.1…

C++ deque详解以及容器适配器

目录 1.容器适配器 2.deque的使用 2.1deque的介绍 2.2deque的缺陷 2.3deque作为stack和queue的可行性 2.4 deque类的使用 2.4.1deque的构造函数 2.4.2deque容量操作 2.4.3deque赋值&#xff0c;插入 1.容器适配器 适配器是一种设计模式&#xff08;设计模式是一套被人…

idea创建一个简单的maven项目

个人学习笔记&#xff08;整理不易&#xff0c;有帮助点个赞&#xff09; 笔记目录&#xff1a;学习笔记目录_pytest和unittest、airtest_weixin_42717928的博客-CSDN博客 添加-DarchetypeCataloginternal 运行参数 (ps:不填的话&#xff0c;maven 骨架生成速度缓慢) 其实我没…

Redis---持久化

Redis是内存数据库&#xff0c;是把数据存储在内存中的&#xff0c;但是内存中的数据不是持久的&#xff0c;如果想要做到持久&#xff0c;那么就需要让redis将数据存储到硬盘上。 Redis持久化有两种策略&#xff1a; RDB > Redis DataBase RDB机制采取的是定期备份AOF …

Java的编程之旅31——多态

1.多态的简介 在Java中&#xff0c;多态是指通过父类的引用调用子类的对象&#xff0c;实现不同类型的对象的方法调用。 Java中的多态通过继承和重写实现。当子类继承父类并重写父类的方法时&#xff0c;可以通过父类的引用调用子类的对象&#xff0c;并且根据运行时实际的类型…

Spring多事务管理器报错处理

报错如下 Description:Field defaultUidGenerator in len.hgy.wsearch.interfaces.search.api.CityController required a single bean, but 2 were found:- transactionManager: defined by method transactionManager in class path resource [org/springframework/boot/aut…

c# ABB 机械手上位机连接

c# 程式开发和调试步骤如下&#xff1a; ABB 机械手要开启PC Interface功能。ABB 机械手设定ip地址。设定测试笔记本和机械手同一网段&#xff0c;用网线直连机械手&#xff0c;也可以通过交换机连接机械手。确保笔记本能够ping通和telnet 机械手80端口都是OK的。以上都OK的话…

QT C++实践|超详细数据库的连接和增删改查操作|附源码

0&#xff1a;前言 &#x1faa7; 什么情况需要数据库? 1 大规模的数据需要处理&#xff08;比如上千上万的数据量&#xff09;2 需要把数据信息存储起来&#xff0c;无论是本地还是服务上&#xff0c;而不是断电后数据信息就消失了。 如果不是上面的原因化&#xff0c;一般…

是谁家的小千金跑出来了?

古典的山树绣花设计 精致典雅&#xff0c;上身立体又轻盈 做了粉绿两色&#xff0c;很适合春天的氛围 春天是个适合外出游玩的季节 穿上这件出游真的超美&#xff0c;日常穿也可 超出片很吸睛&#xff01;

Pytorch学习 day01(Jupyter安装

Jupyter 安装过程中遇到的问题&#xff1a; Anaconda的base环境会自动安装Jupyter&#xff0c;但是如果我们要在其他环境中安装Jupyter&#xff0c;就需要注意&#xff0c;该环境的python版本不能高于3.11&#xff0c;且用以下代码安装&#xff1a; conda install nb_conda_…

齐护ESP32手柄可Arduino编程蓝牙无线游戏手柄Mixly Scratch创客竞赛编程手柄

关于齐护蓝牙手柄 齐护蓝牙手柄&#xff0c;内置蓝牙&#xff0c;专用蓝牙配对码稳定应用&#xff0c;自动无动作后省电休眠&#xff0c;内置锂电池&#xff0c;陀螺仪&#xff0c;双遥杆&#xff08;带按键&#xff09;&#xff0c;及15个多功能按键&#xff0c;人体工艺设计外…

消息中间件之RocketMQ源码分析(二十三)

Broker的关机恢复机制 概述 Broker关机恢复是指恢复CommitLog、Consume Queue、Index File等数据文件。Broker关机分为正常调用命令关机和异常被迫进程终止关机两种情况。恢复过程的设计目标是使正常停止的进程实现零数据丢失&#xff0c;异常停止的进程实现最少量的数据丢失…

Java 数据库面试题解析(中)

10. 事务并发引发的问题&#xff1f;【重点】 脏读&#xff1a;事务A读取了事务B更新的数据&#xff0c;然后B回滚操作&#xff0c;那么A读取到的数据是脏数据。 不可重复读&#xff1a;事务A多次读取同一数据&#xff0c;事务B在事务A多次读取的过程中&#xff0c;对数据作了…

Groovy - 大数据共享搜索配置

数据共享搜索列中配置了搜索列&#xff0c;相应的数据共享接口中也需要支持根据配置的字段搜索&#xff0c;配置实体时&#xff0c;支持搜索的入参code必须是searchKeys&#xff0c;且接口应该是需要支持分页&#xff08;入参必须是 current、pageSize&#xff09;的。current …

Linux系统Docker部署Nexus Maven并实现远程访问本地管理界面

文章目录 1. Docker安装Nexus2. 本地访问Nexus3. Linux安装Cpolar4. 配置Nexus界面公网地址5. 远程访问 Nexus界面6. 固定Nexus公网地址7. 固定地址访问Nexus Nexus是一个仓库管理工具&#xff0c;用于管理和组织软件构建过程中的依赖项和构件。它与Maven密切相关&#xff0c;可…

SpringBoot多数据源配置(MySql、Oracle)

一、依赖 <!-- dynamic-datasource 多数据源--><dependency><groupId>com.baomidou</groupId><artifactId>dynamic-datasource-spring-boot-starter</artifactId></dependency><!--oracle驱动--><dependency><groupI…