Java基本数据类型转换

news2024/11/22 22:21:43

一、自动类型转换

1.基本介绍

  1. 当Java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型,这个就是自动类型转换
  2. 数据类型按精度(容量)大小进行排序为:
    ![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/520b6288a88540b0ace9d2c22b844ca4.png在这里插入图片描述
public class AutoConvert {
   public static void main(String[] args) {
       int num = 'a';   // char -> int
       double dom = 80;  // int -> double
       System.out.println(num);  //97
       System.out.println(dom);  // 80.0
   }
}

在这里插入图片描述

2.转换细节

(1)有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。

(2)当我们把精度(容量)大的数据类型赋值给精度(容量)小的 数据类型时,就会报错,反之就会进行自动类型转换。

(3)(byte,short) 和 char 之间不会互相自动转换

(4)byte,short,char 他们三者,(不管是单独还是混合)在计算时首先转换为 int类型。

(5)boolean 不参与类型自动转换

(6)自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型

public class AutoConvertDetail {
    public static void main(String[] args) {
       //细节1:有多种类型的数据混合运算时
       //系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算
       int n1 = 10;
       //float n2 = n1 + 1.1;// 错误的,1.1会默认为 double类型的,结果类型是double
       //double n2 = n1 + 1.1;// 正确的;
       float n2 = n1 + 1.1F; // 正确的,结果类型也是float

        // 细节2:当我们把精度(容量)大的数据类型赋值给精度(容量)小的 数据类型时,就会报错,反之就会进行自动类型转换。


        // 细节3:(byte,short) 和 char 之间不会互相自动转换;
        // 当把具体数 赋给 byte时,(1)先判断该数是否在byte范围内,如果是就可以
        byte b1 = 10; // 对,-128~127

        // int n2 = 1; //n2是int
        // byte b2 = n2; // 错误,原因:如果是变量赋值,判断类型

        // char c1 = b1; //错误,byte不能自动转换成 char
        //

        //细节4:byte,short,char  他们三者可以计算,在计算时首先转换为int 类型

        byte b2 = 1;
        byte b3 = 2;
        short s1 = 1;
        // short s2 = b2 + s1; //错误的,因为 b2 + s1 -> int
        int s2 = b2 + s1; // 正确的

       //byte b4 = b2 + b3; //错误的,b2 + b3 => int


       //细节5:boolean 不参与类型自动转换
       boolean pass = true;
       //int num = pass; // 错误的

       //细节6:自动提升原则:表达式结果的类型自动提升为 操作数中最大的类型
       byte b4 = 1;
       short s3 = 100;
       int num200 = 1;
       double num300 = 1.1;

       double num400 = b4 + s3 + num200 + num300;

    }
}

二、强制类型转换

1.基本介绍

自动类型转换的逆过程,将容量大的数据类型转换为容量小的数据类型。使用时要加上强制转换符(),但可能造成精度降低或溢出,格外要注意。

public class ForceConvert {
    public static void main(String[] args) {

         //演示强制类型转换
         int n1 = (int)1.9;
         System.out.println("n1 = " + n1);  //1 造成 精度损失

        int n2 = 2000;
        byte b1 = (byte)n2;
        System.out.println("b1 = " + b1);  // 造成 数据溢出
    }
}

2.转换细节

(1)当进行数据的大小 从大——> 小,就需要使用 强制转换

(2)强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级

(3)char 类型可以保存int的常量值,但不能保存int的变量值,需要强转

(4)byte 和 short 类型在进行运算时,当做int 类型处理

public class ForceConvertDetail {
    public static void main(String[] args) {

        //强转符号只针对于最近的操作数有效,往往会使用小括号提升优先级
        //int x = (int)10*3.5 + 6*1.5; //编译错误:double -> int
        int x = (int)(10*3.5 + 6*1.5); //正确,44.0 -> 44
        System.out.println(x);


        char c1 = 100;//OK
        int m = 100; //OK
        //char c2 = m; //编译错误
        char c3 = (char)m; // OK
        System.out.println(c3);// 100对应的字符 d

    }
}

在这里插入图片描述

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

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

相关文章

数据中心物理安全的历史和演变

在当今的数字时代,数据中心托管已成为我们互联世界的支柱。这些设施在存储、管理和处理我们日常生活所需的大量信息方面发挥着至关重要的作用。从社交媒体平台和电子商务网站到流媒体服务和云计算,数据中心为我们依赖的数字服务提供支持。 随着企业越来…

K8s-资源管理

一、资源管理介绍 在kubernetes中,所有的内容都抽象为资源,用户需要通过操作资源来管理kubernetes。 kubernetes的本质上就是一个集群系统,用户可以在集群中部署各种服务,所谓的部署服务,其实就是在kubernetes集群中…

【图文并茂】【软件无线电】如何用收音机接收图片,如何将图片编码到不同频点上,捕获在频谱上跳动的MIKU

如何将图片编码到不同频点上,捕获在频谱上跳动的MIKU 这篇文章和数字信号处理有关,或者说跟SDR软件无线电有关,只是考虑这样一个问题,如何将一张图片,编码放到不同的频点上,使得接收方能够通过SDR模块,捕获这样的信号,然后通过绘制频谱,来得到我们编码的那张图片。 …

LVS-DR+Keepalived 高可用群集部署

LVS-DRKeepalived 高可用群集部署 Keepalived 的工作原理LVSKeepalived 高可用群集部署配置负载调度器(主、备相同)关闭防火墙和核心防护及准备IPVS模块配置keeplived(主、备DR 服务器上都要设置)启动 ipvsadm 服务调整 proc 响应…

快速区分 GPT-3.5 与 GPT-4

问:鲁迅为什么暴打周树人? GPT3.5回答 各种稀奇古怪的理由 GPT4回答 正确区分鲁迅和周树人是同一个人 国内GPT入口 https://ai-to.cn/url/?ulihaimao

电商商品数据采集||高并发||多语言请求实例演示|京东|淘宝商品详情数据SKU价格

以京东商品数据采集为例 京东商品详情接口数据采集是指通过调用京东提供的商品详情API接口,获取商品的详细信息。以下是一个简单的步骤来实现这个功能: 1. 注册京东开发者账号 首先,你需要注册一个京东开发者账号,并创建一个应…

【原创】Android Studio 中安装大模型辅助编码插件:通义灵码

在 Android Studio 中内置了 Ginimi 预览版,但需要“加速器”才可使用。 在国内有平替的软件同样可以使用,比如 阿里的通义灵码,智谱的CodeGeeX等,从功能和使用上来说都是大同小异。 这里我们以通义灵码为例来讲解其安装和使用 通…

CSS彩虹按钮设计demo

demo css: <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>彩虹</title><style>*{margi…

Umi中的微前端

umi/max 内置了 Qiankun 微前端插件&#xff0c;它可以一键启用 Qiankun 微前端开发模式&#xff0c;帮助您轻松地在 Umi 项目中集成 Qiankun 微应用&#xff0c;构建出一个生产可用的微前端架构系统。 什么是微前端 微前端是一种多个团队通过独立发布功能的方式来共同构建现代…

三、Spring Boot集成Spring Security之securityFilterChain过滤器链详解

Spring Boot集成Spring Security之securityFilterChain过滤器链详解 一、默认过滤器1、默认配置系统启动日志2、默认配置的过滤器及顺序如下3、本文只介绍和登录相关的过滤器 二、SecurityContextPersistenceFilter1、实现功能2、处理请求类型3、是否会终止过滤器链4、实现步骤…

JZ2440开发板——异常与中断

以下内容源于韦东山课程的学习与整理&#xff0c;如有侵权请告知删除。 一、中断概念的引入与处理流程 1.1 中断概念的引入 这里有一个很形象的场景比喻&#xff1a;假设一位母亲在大厅里看书&#xff0c;婴儿在房间里睡觉&#xff0c;这位母亲怎样才能知道这个孩子睡醒了&a…

前端的全栈混合之路Meteor篇:容器化开发环境下的meteor工程架构解析

本文主要介绍容器化meteor工程的目录架构解析&#xff0c;之前的文章中浅浅提到过一些&#xff1a;前端的全栈混合之路Meteor篇&#xff1a;开发环境的搭建 -全局安装或使用docker镜像-CSDN博客https://blog.csdn.net/m0_38015699/article/details/142730928?spm1001.2014.300…

【LeetCode HOT 100】详细题解之回溯篇

【LeetCode HOT 100】详细题解之回溯篇 回溯法的理论基础回溯法解决的问题理解回溯法回溯法模板 46 全排列思路代码 78 子集思路代码 17 电话号码的字母组合思路代码 39 组合总和思路代码 22 括号生成思路代码 79 单词搜索思路代码 131 分割回文串思路代码 51 N皇后思路代码 回…

教程:宏基因组数据分析教程

Orchestrating Microbiome Analysis Orchestrating Microbiome Analysis是一套包含宏基因组各种数据分析的教程&#xff0c;非常安利大家学习。 16S-analysis 16S-analysis是一本用于扩增子16s等微生物数据分析的教程&#xff0c;很适合新手入门学习。 Introduction to micro…

Android targetSdkVersion 升级为34 问题处理

原因是发布到GooglePlay遭到拒绝&#xff0c;需要最低API level为34。之前为31&#xff0c;感觉还挺高的&#xff0c;但是GooglePlay需要的更高。 记录下处理问题&#xff1a; 1.升级gradle版本为8.0.2 之前是&#xff1a; classpath com.android.tools.build:gradle:7.1.0-…

Git进行版本控制操作流程

目录 一、初始化仓库 操作流程 二、添加到缓存区 三、提交到版本库 四、推送至远程仓库 生成SSH密钥 将本地库中内容推送至已经创建好的远程库 推送 推送错误 第一种&#xff1a; 五、克隆 克隆整个项目 拉去最新代码 六、分支 1. 初始化仓库或克隆远端仓库 2…

新赚米渠道,天工AI之天工宝典!

新赚米渠道&#xff0c;天工AI之天工宝典&#xff01; 引言 随着人工智能和数字创作工具的发展&#xff0c;内容创作的门槛不断降低&#xff0c;为普通用户提供了更多的赚钱机会。在这样的背景下&#xff0c;天工AI应运而生&#xff0c;凭借其强大的创作能力和最新更新的“天…

「Ubuntu」文件权限说明(drwxr-xr-x)

我们在使用Ubuntu 查看文件信息时&#xff0c;常常使用 ll 命令查看&#xff0c;但是输出的详细信息有些复杂&#xff0c;特别是 类似与 drwxr-xr-x 的字符串&#xff0c;在此进行详细解释下 属主&#xff1a;所属用户 属组&#xff1a;文件所属组别 drwxr-xr-x 7 apps root 4…

MySql 之 Binglog 复制

复制是一种将数据从一个 MySQL 数据库服务器异步复制到另一个的技术。使用 MySQL 复制选项&#xff0c;您可以复制所有数据库、选定的数据库甚至选定的表&#xff0c;具体取决于您的使用情况。 前提条件 确保在源服务器上启用了二进制日志记录。确保复制配置中的所有服务器都有…

《云原生安全攻防》-- K8s攻击案例:从Pod容器逃逸到K8s权限提升

在本节课程中&#xff0c;我们将介绍一个完整K8s攻击链路的案例&#xff0c;其中包括了从web入侵到容器逃逸&#xff0c;再到K8s权限提升的过程。通过以攻击者的视角&#xff0c;可以更全面地了解K8s环境中常见的攻击技术。 在这个课程中&#xff0c;我们将学习以下内容&#…