基本数据类型转换

一 自动类型转换

当java程序在进行赋值或者运算时,精度小的类型自动转换为精度大的数据类型 这个就是自动类型转换

数据类型按精度(容量)大小排序

  1. char -> int -> long -> float -> double
  2. byte -> short -> int -> long -> float -> double

二 自动类型转换注意和细节

  1. 有多种类型的数据混合运算时,系统首先自动将所有数据转换成容量最大的那种数据类型,然后再进行计算。
  2. 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时就会报错,反之就会进行自动类型转换。
  3. (byte, short)和 char之间不会相互自动转换,
  4. byte,short,char 他们三者可以计算,在计算时首先转换为int类型,
  5. boolean 不参与转换
  6. 自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型
public static void main(String[] args) {
	//细节 1: 有多种类型的数据混合运算时,
	//系统首先自动将所有数据转换成容量最大的那种数据类型, 然后再进行计算
	int n1 = 10; //ok
	//float d1 = n1 + 1.1;//错误 n1 + 1.1 => 结果类型是 double
	//double d1 = n1 + 1.1;//对 n1 + 1.1 => 结果类型是 double
	float d1 = n1 + 1.1F;//对 n1 + 1.1 => 结果类型是 float
	
	//细节 2: 当我们把精度(容量)大 的数据类型赋值给精度(容量)小 的数据类型时,
	//就会报错, 反之就会进行自动类型转换。
	
	//int n2 = 1.1;//错误 double -> int
	
	//细节 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;//对, b2 + s1 => int
	//byte b4 = b2 + b3; //错误: b2 + b3 => int
	
	//boolean 不参与转换
	boolean pass = true;
	//int num100 = pass;// boolean 不参与类型的自动转换
	
	//自动提升原则: 表达式结果的类型自动提升为 操作数中最大的类型
	//看一道题
	byte b4 = 1;
	short s3 = 100;
	int num200 = 1;
	float num300 = 1.1F;
	double num500 = b4 + s3 + num200 + num300; //float -> double
}

三 强制类型转换

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

四 强制类型转换细节说明

  1. 当进行数据的从大到小转换,就需要使用强制转换
  2. 强转符号只针对于最近的操作有效,往往使用小括号提升优先级
  3. char 类型可以保存 int 的常量值,但不能保存 int 的变量值,需要强转
  4. byte 和 short char 类型在进行运算时,当做int类型处理
public static void main(String[] args) {
        // 1.强制类型转换
        // int x = (int) 10*3.5+6*1.5;
        int x = (int) (10*3.5+6*1.5);
        System.out.println("x="+x);


        short s = 12; // ok
        // s = s - 9; // 错误

        byte b = 10; // ok
        //b = b + 11; // 错误
        b = (byte) (b + 11); // ok

        char c = 'a'; // ok
        int i = 16; // ok
        float f = .314f; // ok
        double result = c + i + f; //ok

        byte b1 = 3;
        short s1 = 14;
        // short t = s1 + b1; //错误
    }

五 基本数据类型和 String 类型的转换

字符串转换为基本数据类型

语法:通过基本类型的包装类调用:parseXXX(String s)方法

基本数据类转换为型字符串

语法:将基本数据类型的值+“” 即可得到字符串类型

public static  void main(String[] args ){
        // 1.字符串转换为基本数据类型
        // 语法:通过基本类型的包装类调用:parseXXX(String s)方法
        // 1.1.字符串转换为整数
        String str1 = "123";
        int num1 = Integer.parseInt(str1);
        System.out.println(num1);

        // 1.2.字符串转换为浮点数
        String str2 = "3.14";
        double num2 = Double.parseDouble(str2);
        System.out.println(num2);

        // 1.3.字符串转换为布尔类型
        String str3 = "true";
        boolean b = Boolean.parseBoolean(str3);
        System.out.println(b);

        // 1.4.字符串转换为字符 char
        String str4 = "a";
        char c = str4.charAt(0);
        System.out.println(c);

        // 2.基本数据类型转换为字符串
        // 语法:将基本数据类型的值+"" 即可得到字符串类型
        int num3 = 100;
        float num3f = 100.0f;
        double num3d = 100.0;
        boolean num3b = true;
        String str3i = num3 + "";
        String str3f = num3f + "";
        String str3d = num3d + "";
        String str3b = num3b + "";
        System.out.println(str3i + " " + str3f + " " + str3d + " " + str3b);

        // 2.1.整数转换为字符串
        String str8 = String.valueOf(num3);
        System.out.println(str4);

        // 2.2.浮点数转换为字符串
        double num4 = 3.14;
        String str5 = String.valueOf(num4);
        System.out.println(str5);

        // 2.3.布尔类型转换为字符串
        boolean b1 = true;
        String str6 = String.valueOf(b1);
        System.out.println(str6);
    }

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

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

相关文章

Seatunnel-web build:prod 报错 jsx问题

问题1 JSX element implicitly has type any because no interface JSX.IntrinsicElements exists. 问题剖析 在使用typescript的时候,在vue或react、node中报以上错误,是JSX 元素隐式具有类型 "any",因为不存在全局类型 "J…

three.js 3D Banner实战

需求场景 1、加载glb模型 2、设置背景 3、让第一个模型转动&#xff0c;并调整模型的转动速度 4、设置模型的宽度。 遇到的问题 1、为什么加载的模型不能转动&#xff1f; 加载的glb模型需要加入到goup里面才能转动。 代码实施 <script setup> import * as THREE from…

UTC和北京时间

influxdb 的时间为UTC和北京时间相差8小时&#xff0c;需要经常转化&#xff0c;所以有下面的2个常用时间 public static void main(String[] args) {//北京时间当天0点ZonedDateTime dateTime ZonedDateTime.now(ZoneId.of("Asia/Shanghai"));ZonedDateTime beijin…

【zabbix7】新版本尝鲜之connector

zabbix历史版本中&#xff0c;会使用python脚本&#xff0c;把zabbix的告警发送到kafka进行二次处理&#xff0c;或者使用filebeat把zabbix的Export的njson指标数据发送到kafka进行二次处理&#xff0c;然而在zabbix7中新增了新功能connector简化了操作并且可以根据tag进行区分…

微信订阅号绑定Coze(扣子),使用上GPT4

之前试过国外的Coze可以绑定一些通讯工具&#xff0c;从而可以使用相当于chatgpt4的功能&#xff0c;但对于我们来说&#xff0c;使用不太方便。 后来头条又有了国内版的Coze(扣子)&#xff0c;发现可以绑定微信&#xff0c;但那时只有微信服务号可以使用&#xff0c;个人订阅…

【嵌入式】“野指针”和“悬空指针”的奇淫拙劣

【嵌入式】“野指针”和“悬空指针”的奇淫拙劣 1. 前言1.1 授权须知 2. 野指针和悬空指针3.举例说明3.1 示例一&#xff1a;free 之后&#xff0c;没有让指针指向NULL3.1.1 代码解析3.1.2 运行代码的结果3.1.3 程序崩溃在哪&#xff1f; 3.2 悬空指针–释放后使用攻击 1. 前言…

【Linux】LInux下的进程状态

&#x1f466;个人主页&#xff1a;Weraphael ✍&#x1f3fb;作者简介&#xff1a;目前正在学习c和算法 ✈️专栏&#xff1a;Linux &#x1f40b; 希望大家多多支持&#xff0c;咱一起进步&#xff01;&#x1f601; 如果文章有啥瑕疵&#xff0c;希望大佬指点一二 如果文章对…

自学编程两个月,现在我月入 4 万元

这个外国小哥叫 Nico&#xff0c;他一开始是个编程小白&#xff0c;后来把自己关在房间里花了两个月时间学会了编程&#xff0c;如今正在开发一款名为 Talknotes 的应用&#xff0c;可以将语音备忘录转化为结构化的内容&#xff0c;月收入 5000 美元。 Nico 从高中毕业就开始创…

Linux蓝牙驱动模拟HID设备(把Linux系统模拟成蓝牙鼠标和蓝牙键盘)

by fanxiushu 2024-04-24 转载或引用请注明原始作者。 在经过windows的蓝牙驱动开发模拟成HID设备的大风大浪之后&#xff0c; 现在回到linux下实现相同功能&#xff0c;简直就是如小孩嬉闹一样的轻松。 但无论如何&#xff0c;作为模拟蓝牙HID设备的windows&#xff0c;linux一…

导出瑞芯微(Rockchip)芯片的设备树(Device Tree)

要导出瑞芯微&#xff08;Rockchip&#xff09;芯片的设备树&#xff08;Device Tree&#xff09;&#xff0c;可以使用设备树编译器&#xff08;DTC&#xff0c;Device Tree Compiler&#xff09;。通常&#xff0c;会有一个设备树的源文件&#xff08;.dts&#xff09;&#…

安装Selenium

安装Selenium 【0】引言 ​ 由于sleenium4.1.0需要python3.7以上方可支持&#xff0c;请注意自己的python版本。 【1】使用Pycharm安装 使用 快捷键 Ctrl Alt S 【2】使用 pip 安装 Python3.x安装后就默认就会有pip&#xff08;pip.exe默认在python的Scripts路径下&…

代码随想录算法训练营第四十九天| LeetCode121. 买卖股票的最佳时机、122.买卖股票的最佳时机II

一、LeetCode121. 买卖股票的最佳时机 题目链接/文章讲解/视频讲解&#xff1a;https://programmercarl.com/0121.%E4%B9%B0%E5%8D%96%E8%82%A1%E7%A5%A8%E7%9A%84%E6%9C%80%E4%BD%B3%E6%97%B6%E6%9C%BA.html 状态&#xff1a;已解决 1.思路 学了双指针的同学可能会下…

「ETL趋势」FDL数据中心库/表查看和调试功能上线、数据源新增支持MongoDB写入

FineDataLink作为一款市场上的顶尖ETL工具&#xff0c;集实时数据同步、ELT/ETL数据处理、数据服务和系统管理于一体的数据集成工具&#xff0c;进行了新的维护迭代。本文把FDL4.1.6最新功能作了介绍&#xff0c;方便大家对比&#xff1a;&#xff08;产品更新详情&#xff1a;…

float类型的存储

float类型的存储 在计算机科学中&#xff0c;float类型通常指的是单精度浮点数。它是一种用于近似表示实数的方法&#xff0c;特别适用于表示很大或很小的数。float类型在大多数编程语言中遵循IEEE 754标准&#xff0c;这是一个国际标准&#xff0c;用于确保在不同计算机和编程…

了解DNS洪水攻击

域名系统 (DNS) 服务器是互联网的“电话簿“&#xff1b;互联网设备通过这些服务器来查找特定 Web 服务器以便访问互联网内容。在互联网中&#xff0c;DNS 洪水是一种网络攻击方式。 DNS 洪水攻击是一种分布式拒绝服务 (DDoS) 攻击&#xff0c;攻击者用大量流量淹没某个域的 D…

【苍穹外卖】Redis缓存菜品数据-业务逻辑分析

目录 Redis缓存菜品数据-业务逻辑分析1. 需求2. 需要考虑的问题3. 缓存逻辑分析4. 缓存流程图 Redis缓存菜品数据-业务逻辑分析 1. 需求 在菜品展示页面&#xff0c;用户点击每一个分类都会访问一次MySQL数据库数据&#xff0c;当大量用户使用发出大量请求时&#xff0c;会对…

【题目2】 大衍数列,斐波拉契数列等,用VBA 和python解决

目录 0 原始题目&#xff1a;大衍数列 0.1 原始题目 0.2 知识点 1 大衍数列 1.1 大衍数列定义 1.1.1 大衍数列定义 1.1.2 大衍数列注意点 1.2 用VBA实现大衍数列 1.3 用python实现大衍数列 2 斐波拉契数列 /兔子数列/ 黄金分割数列 2.1 斐波拉契数列定义 2.1.1 下面…

AI预测福彩3D第9套算法实战化测试第1弹2024年4月24日第2次测试

今天继续进行新算法的测试&#xff0c;今天是第2次测试。好了&#xff0c;废话不多说了&#xff0c;直接上图上结果。 2024年4月24日福彩3D预测结果 6码定位方案如下&#xff1a; 百位&#xff1a;1、0、2、3、6、7 十位&#xff1a;2、4、1、6、0、5 个位&#xff1a;3、2、4、…

第二证券|股票做短线要关注什么?

在股市中短线交易因其快速的盈利时机而招引了众多投资者&#xff0c;但做短线想要挣钱也不是那么容易的。对于股票做短线要重视什么&#xff0c;第二证券下面就为我们具体介绍一下。 短线交易需重视&#xff1a; 1、商场短期趋势。短线投资者首先需要重视的是全体商场趋势&am…

jsp实验11 JavaBean

二、实验项目内容&#xff08;实验题目&#xff09; 编写代码&#xff0c;掌握javabean的用法。【参考课本 上机实验 5.5.2 】 三、源代码以及执行结果截图&#xff1a; 源代码&#xff1a; Memory.java package sea.water; import java.util.ArrayList; import java.util…
最新文章