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

news/发布时间2024/9/20 8:13:55
写在前面:

关于这道题,初见感觉有点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();

补充:
public class methodTest {public void method(){Integer i =new Integer(1);Integer j=new Integer(1);//通过new创建的对象是一定不相等 比较的是空间地址System.out.println(i==j);Integer m=1;Integer n=1;//Integer是int的包装类,如果不显式通过new Integer来创建//java则会在虚拟机中为其创建缓存,范围为-128-127System.out.println(m==n);Integer x=128;Integer y=128;System.out.println(x==y);//超出了范围}
 
写完了>w< 艾尔登法环启动!

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

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

相关文章

Java毕业设计-基于springboot开发的Web社区医院管理服务系统-毕业论文+答辩PPT(有源代码)

文章目录 前言一、毕设成果演示&#xff08;源代码在文末&#xff09;二、毕设摘要展示1.开发说明2.需求分析3、系统功能结构 三、系统实现展示1、系统功能模块2、管理员功能模块3、用户功能模块4、医生功能模块 四、毕设内容和源代码获取总结 Java毕业设计-基于springboot开发…

CGI程序与ShellShock漏洞

CGI是什么&#xff1f; CGI&#xff08;通用网关接口&#xff0c;Common Gateway Interface&#xff09;程序是一种用于在Web服务器上执行动态内容的技术。与服务器上普通的后端代码相比&#xff0c;CGI程序有几个区别&#xff1a; 执行环境&#xff1a; CGI程序在服务器上作为…

从CPU缓存结构到原子操作

一、CPU缓存结构 1.1 CPU的多级缓存 因为CPU的计算速度非常快&#xff0c;但内存的访问速度相对较慢。因此&#xff0c;如果CPU每次都要从内存读取数据&#xff0c;会造成大量的等待时间&#xff0c;降低整体性能。 通过引入多级缓存&#xff0c;可以在CPU和内存之间建立数据…

3月1号代码随想录二叉搜索树中的插入操作

301.二叉搜索树中的插入操作 给定二叉搜索树&#xff08;BST&#xff09;的根节点 root 和要插入树中的值 value &#xff0c;将值插入二叉搜索树。 返回插入后二叉搜索树的根节点。 输入数据 保证 &#xff0c;新值和原始二叉搜索树中的任意节点值都不同。 注意&#xff0c;…

html样式排版

<template><div class"box"><div class"header">头部</div><div class"main"><div class"left">菜单</div><div class"right"><div class"right-contentr"&g…

Redis——服务器

Redis服务器负责与多个客户端建立网络连接&#xff0c;处理客户端发送的命令请求&#xff0c;在数据库中保存客户端执行命令所产生的数据&#xff0c;并通过资源管理来维持服务器自身的运行。 一. 命令请求的执行过程 一个命令请求从发送到获得回复过程中&#xff0c;客户端和服…

【精品】集合list去重

示例一&#xff1a;对于简单类型&#xff0c;比如String public static void main(String[] args) {List<String> list new ArrayList< >();list.add("aaa");list.add("bbb");list.add("bbb");list.add("ccc");list.add(…

数据之光:探索数据库技术的演进之路

✨✨ 欢迎大家来访Srlua的博文&#xff08;づ&#xffe3;3&#xffe3;&#xff09;づ╭❤&#xff5e;✨✨ &#x1f31f;&#x1f31f; 欢迎各位亲爱的读者&#xff0c;感谢你们抽出宝贵的时间来阅读我的文章。 我是Srlua&#xff0c;在这里我会分享我的知识和经验。&#x…

09-Java组合模式 ( Composite Pattern )

Java组合模式 摘要实现范例 组合模式&#xff08;Composite Pattern&#xff09;&#xff0c;又叫部分整体模式&#xff0c;是用于把一组相似的对象当作一个单一的对象 组合模式依据树形结构来组合对象&#xff0c;用来表示部分以及整体层次 组合模式创建了一个包含自己对象组…

Mac 重新安装系统

Mac 重新安装系统 使用可引导安装器重新安装&#xff08;可用于安装非最新的 Mac OS&#xff0c;系统降级&#xff0c;需要清除所有数据&#xff09; 插入制作好的可引导安装器&#xff08;U盘或者移动固态硬盘&#xff09;&#xff0c;如何制作可引导安装器将 Mac 关机将 Ma…

SpringBoot实现短链跳转

目录 1.背景介绍 2.短链跳转的意义 3.SpringBoot中的代码实现 1.建议短链-长链的数据库表&#xff1a;t_url_map: 2.映射实体 3.Dao层实现 4.Service层实现 5.Controller层实现 3.结果测试 4.问题 1.背景介绍 短链跳转是一种通过将长链接转换为短链接的方式&…

Socket网络编程(一)——网络通信入门基本概念

目录 网络通信基本概念什么是网络&#xff1f;网络通信的基本架构什么是网络编程?7层网络模型-OSI模型什么是Socket&#xff1f;Socket的作用和组成Socket传输原理Socket与TCP、UDP的关系CS模型(Client-Server Application)报文段牛刀小试&#xff08;TCP消息发送与接收&#…

OceanMind海睿思-知信版本升级:多轮对话+LLM加速!

OceanMind海睿思-知信 产品能力全新升级&#xff1a; ❖ 知识库增加多轮对话能力&#xff0c;给用户带来更“人性化”的问答体验 ❖ 自研大模型推理加速机制&#xff0c;为大模型回答提速&#xff0c;减少用户等待时间消耗 1 多轮对话升级 基于“RAG大模型”框架的知识库问…

ChatGPT科研绘图丨散点图、柱状图、小提琴图、箱型图、雷达图、玫瑰图、气泡图、森林图、三元图、三维图等各类科研图

以ChatGPT、LLaMA、Gemini、DALLE、Midjourney、Stable Diffusion、星火大模型、文心一言、千问为代表AI大语言模型带来了新一波人工智能浪潮&#xff0c;可以面向科研选题、思维导图、数据清洗、统计分析、高级编程、代码调试、算法学习、论文检索、写作、翻译、润色、文献辅助…

Rocky Linux 运维工具 vim

一、vim的简介 vi​m是一种文本编辑器。它提供了丰富的编辑功能&#xff0c;包括插入、删除、替换文本、搜索和查找等。使用键盘命令和模式切换&#xff0c;以实现高效的文本编辑操作。 二、vim的参数说明 序号视图命令描述1命令视图i在当前光标位置进入‘INSERT视图’2命令视…

2024年四川媒体新闻发布渠道,媒体邀约资源表

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 四川有哪些媒体新闻发布渠道&#xff0c;媒体邀约资源表&#xff1f; 2024年四川媒体新闻发布渠道&#xff0c;媒体邀约资源表 四川本地媒体&#xff1a;如四川日报、华西都市报、成都商…

浅谈MySQL的B树索引与索引优化

MySQL的MyISAM、InnoDB引擎默认均使用B树索引&#xff08;查询时都显示为“BTREE”&#xff09;&#xff0c;本文讨论两个问题&#xff1a; 为什么MySQL等主流数据库选择B树的索引结构&#xff1f;如何基于索引结构&#xff0c;理解常见的MySQL索引优化思路&#xff1f; 为什…

c语言经典测试题8

在c语言经典测试题6的第一题&#xff0c;大家是否想过可不可以将递归参数改为s呢&#xff1f;或许有的人已经试过了&#xff0c;但是发现好像不会有结果&#xff0c;其实是因为s为后置&#xff0c;先试用后加1&#xff0c;然而我们这个是在s出了函数之后才会运行加1操作&#x…

spring boot学习第十三篇:使用spring security控制权限

该文章同时也讲到了如何使用swagger。 1、pom.xml文件内容如下&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instanc…

「MySQL」增删查改

在操作数据库中的表时&#xff0c;需要先使用该数据库&#xff1a; use database;新增 创建表 先用 use 指定一个数据库,然后使用 create 新增一个表 比如建立一个学生表 mysql> use goods; mysql> create table student(-> name varchar(4),-> age int,-> …
推荐文章