iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >java中类型自动转换机制的示例分析
  • 540
分享到

java中类型自动转换机制的示例分析

2023-06-29 11:06:12 540人浏览 安东尼
摘要

这篇文章主要介绍了java中类型自动转换机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。类型自动转换机制解析概述自动类型转换也叫隐式类型转换表达式的数据类型自动提

这篇文章主要介绍了java中类型自动转换机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

类型自动转换机制解析

概述

  • 自动类型转换也叫隐式类型转换

  • 表达式的数据类型自动提升

所有的byte型、short型和char的值将被提升到int型。

如果一个操作数是long型,计算结果就是long型;

如果一个操作数是float型,计算结果就是float型;

如果一个操作数是double型,计算结果就是double型。

数据类型只会自动提升,不能自动降低

int值可以赋值给long、float、double型变量,不能赋值给byte、short、char型变量

java中类型自动转换机制的示例分析

对于函数的传参也是一样

java中类型自动转换机制的示例分析

当然,在有函数重载的情况下,java编译器会自动选择最匹配的函数进行调用

java中类型自动转换机制的示例分析

Java中整数默认的数据类型是int类型

所有长度低于int的类型(byte、short、char)在运算之后结果将会被提升为int型

java中类型自动转换机制的示例分析

当然还有以下的这种情况,这种情况是因为我们在进行赋值运算的时候,java编译器可以明确知道运算的结果是否超过byte或short的取值范围,所以 byte a = 1 + 1; 并没有报错。而上面 byte c = a + b; 编译出错的原因是因为a和b均为一个变量,相加的结果是否会超过byte的取值范围编译器并不知道,所以编译器将结果提升为int型了。

java中类型自动转换机制的示例分析

小结一下:

  • 当编译器明确知道整数的运算结果没有到达int的表示范围时,byte、short或char类型的运算结果不会被自动提升为int类型

  • 当编译器明确知道或不清楚整数的运算结果是否到达int的表示范围时,编译器将会自动将运算的结果转换成int,即使原来是byte、short或char类型。

自动类型转换 & 强制类型转换

什么时候会发生类型转换

答: 赋值 | 运算时 ,两边数据类型不一致时就会发生类型转换

如下:

public class TypeTest {    public static void main(String[] args){       // 运算时发生的隐式类型转换,两整数相除得到的还是一个整数        byte a  = 3;        byte b = 4;        int num  =  a + b;        System.out.println(num); // 7        // 赋值时发生的隐式类型转换        int ch = '0';        System.out.println(ch); // 48        // 运算时发生的强制类型转换        byte a1 = 12;        byte a2 = 12;        byte num1 = (byte)(a1  + a2);        System.out.println(num1); // 24        // 赋值时发生的强制类型转换        short b3 = 1234;        byte a3 = (byte) b3;        System.out.println(a3); // -46    }}

运行截图:

java中类型自动转换机制的示例分析

类型转换分类

  • 自动类型转换

  • 强制类型转换

自动类型转换(隐式类型转换)

规则:从小到大 ,低字节向高字节自动提升

顺序:

byte(1字节) – > short(2字节)-- > int(4字节) – > long(8字节) --> float(4字节) – > double(8字节)

char (2字节)-- > int(4字节) – > long(8字节) --> float(4字节) – > double(8字节)

画图分析:

java中类型自动转换机制的示例分析

代码展示:

public class TypeDemo {    public static void main(String[] agrs){        // byte -- > short        byte b1 = 127;        short s1 = b1;        System.out.println(s1); // 127        // short -- > int         short  s2 = 30000;        int i = s2;        System.out.println(i); // 30000        // int  -- > long        int num = 2100000000;        long lg = num;        System.out.println(num); // 2100000000        // long -- > float         long lg1 = 200000000000000L;     float f1 = lg1;        System.out.println(f1);// 2.00000001E14        // float -- > double         float f2 = 3.14f;        double d1 = f2;     System.out.println(d1); // 3.140000104904175        // char -- > int    char ch = 'a';        int i1 = ch ;        System.out.println(i1); // 97        // char -- > long        char ch2 = 'b';        long lg2 = ch2;        System.out.println(lg2); // 98        // char  -- >  double        char ch3 = 'c';        double dou = ch3;        System.out.println(dou); // 99.0        // char -- > float        char ch4 = 'd';        float  f3 = ch4;        System.out.println(f3); // 100.0    }}

运行截图:

java中类型自动转换机制的示例分析

注意:

byte、short不能和char进行相互转换

代码展示:

public class TypeDemo2 {    public static void main(String[] agrs){     // byte -- > char        byte bt = 127;        char ch = bt;        System.out.println(ch);        // short -- > char        short sh = 12;        char ch2 = sh;        System.out.println(ch2);    }}

编译错误截图:

java中类型自动转换机制的示例分析

float虽然是4个字节,但是float比long表示的数据范围更大。说明数据范围的大小和字节的大小不一定相关

代码展示:

public class TypeDemo3 {    public static void main(String[] agrs){        long lg = 20000000000000L;        float f1 = lg;        System.out.println(f1); // 1.99999997E13    }}

运行截图:

java中类型自动转换机制的示例分析

boolean类型不能参与类型转换

代码展示:

public class TypeDemo4 {    public static void main(String[] agrs) {        boolean flag = 12;        int flag1 = flag;        System.out.println(flag1);    }}

编译错误截图:

java中类型自动转换机制的示例分析

强制类型转换(显式类型转换)

规则:从大到小,高字节向低字节手动强制转换

顺序:

double(8字节) – > float(4字节) – > long(8字节) – > int(4字节) – > short (2字节)-- > byte(1字节)

double(8字节) – > float(4字节) – > long(8字节) – > int(4字节) – > char(2字节)

画图分析:

java中类型自动转换机制的示例分析

(掌握)格式:目标数据类型 变量名 = (目标数据类型) 变量 | 常量;

代码展示:

public class TypeDemo5 {    public static void main(String[] agrs){        // float -- > long        // final float  PI = 3.14f;        // long num = (long) PI; // 3        // float little =  3.14f;        // long num = (long)little; // 3     long num = (long)3.14f;              System.out.println(num);// 3         // double -- > float         // double dou = 3.14;        // float little1 = (float)dou; // 3.14        //  float little1 = (float) 3.14d;  // 3.14        final double  dou = 3.14;        float little1 = (float)dou;        System.out.println(little1); // 3.14        // long -- > int         // long  num1 = 2000000000000L;        // int   num2 = (int)num1;  // -1454759936        // int num2 = (int)2000000000000L; // -1454759936       final  long num1 = 2000000000000L;        int num2 = (int)num1;        System.out.println(num2);  // -1454759936        // int --> short        // int  num3  = 12;        // short num4 = (short)num3; // 12        // short num4 = (short)40000; // -25536        final int num3 = 60;        short num4 = (short)num3;        System.out.println(num4); // 60        // short -- > byte        final short sh = 12345;        byte bt = (byte)sh;        System.out.println(bt); // 57        short sh2 = 78;    bt = (byte) sh2;        System.out.println(bt); // 78    }}

运行截图:

java中类型自动转换机制的示例分析

注意:

强制类型转换有数据丢失,一般不建议使用

代码展示:

public  class TypeDemo6 {   public static void main(String[] agrs) {       short a = 1245;       byte b = (byte)a;       System.out.println(b);   } }

运行截图:

java中类型自动转换机制的示例分析

感谢你能够认真阅读完这篇文章,希望小编分享的“java中类型自动转换机制的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: java中类型自动转换机制的示例分析

本文链接: https://www.lsjlt.com/news/324623.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • java中类型自动转换机制的示例分析
    这篇文章主要介绍了java中类型自动转换机制的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。类型自动转换机制解析概述自动类型转换也叫隐式类型转换表达式的数据类型自动提...
    99+
    2023-06-29
  • java中的类型自动转换机制解析
    目录类型自动转换机制解析概述数据类型只会自动提升,不能自动降低Java中整数默认的数据类型是int类型自动类型转换 & 强制类型转换什么时候会发生类型转换类型转换分类自动类型...
    99+
    2024-04-02
  • PHP数据类型中自动转换和强制转换的示例分析
    这篇文章主要介绍了PHP数据类型中自动转换和强制转换的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。什么是PHP数据类型间的自动转换和强制转换?布尔值的自动类型转换:...
    99+
    2023-06-15
  • Java数据类型转换的示例分析
    这篇文章将为大家详细讲解有关 Java数据类型转换的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 Java数据类型转换1.Java的简单类型及其封装器类⑴Java简单类型与封装类我们知...
    99+
    2023-06-17
  • JS中类型转换的示例分析
    这篇文章将为大家详细讲解有关JS中类型转换的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言类型转换是将值从一种类型转换为另一种类型的过程(比如字符串转数字,对...
    99+
    2024-04-02
  • java泛型数组转换类型的示例分析
    小编给大家分享一下java泛型数组转换类型的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用来表示小数的数据...
    99+
    2023-06-14
  • JavaScript数据类型转换的示例分析
    这篇文章主要介绍JavaScript数据类型转换的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!JS数据类型在 JavaScript 语言中数据类型分为2大类:基本数据类型和复杂数据类型基本数据类型有:num...
    99+
    2023-06-15
  • MySQL显式类型转换的示例分析
    小编给大家分享一下MySQL显式类型转换的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CAST 函数在之前的文章中,我...
    99+
    2024-04-02
  • JavaScript中==隐藏下类型转换的示例分析
    这篇文章给大家分享的是有关JavaScript中==隐藏下类型转换的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。抛砖引玉按照正常的逻辑来说,我们判断两个值是否相等会遵循...
    99+
    2024-04-02
  • java泛型中类型擦除的转换示例
    这篇文章给大家分享的是有关java泛型中类型擦除的转换示例的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。java基本数据类型有哪些Java的基本数据类型分为:1、整数类型,用来表示整数的数据类型。2、浮点类型,用...
    99+
    2023-06-14
  • ArrayList中自动扩充机制的示例分析
    这篇文章主要为大家展示了“ArrayList中自动扩充机制的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“ArrayList中自动扩充机制的示例分析”这篇文章吧。ArrayList li...
    99+
    2023-05-30
    java arraylist
  • C#类型转换实例分析
    这篇“C#类型转换实例分析”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C#类型转换实例分析”文章吧。C# 类型转...
    99+
    2023-06-17
  • javascript基础数据类型转换的示例分析
    这篇文章给大家分享的是有关javascript基础数据类型转换的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。数值型转换为字符串类型方式说明案例toString()转成字符串var num =1; ale...
    99+
    2023-06-29
  • C语言基础隐式类型转换与强制类型转换示例解析
    目录类型转换隐式类型转换强制类型转换类型转换 数据有不同的类型,不同类型数据之间进行混合运算时必然涉及到类型的转换问题。 转换包括隐式类型转换和强制类型转换。 类型转换的原则:占用内...
    99+
    2024-04-02
  • TensorFlow中数据类型信息及转换的示例分析
    这篇文章主要介绍了TensorFlow中数据类型信息及转换的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、数据类型在tf中,数据类型有整型(默认是int32),浮...
    99+
    2023-06-25
  • JavaScript中类型转换的示例
    小编给大家分享一下JavaScript中类型转换的示例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、类型转换是什么?我们都知道变量的类型由它存储的值的类型来决...
    99+
    2023-06-08
  • PHP 函数的类型提示和自动类型转换
    php 类型提示可声明函数的期望参数和返回类型,以避免类型错误。它还提供自动类型转换,在转换失败时抛出类型错误。这些特性增强了代码可读性,减少了错误,并提高了编译器错误检测能力,如在验证...
    99+
    2024-04-27
    php 类型提示 git 代码可读性
  • java之JVM各类机制的示例分析
    这篇文章将为大家详细讲解有关java之JVM各类机制的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开发;3. 客户...
    99+
    2023-06-14
  • Javascript中双等号==隐性转换机制的示例分析
    小编给大家分享一下Javascript中双等号==隐性转换机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!在Java...
    99+
    2024-04-02
  • java中锁机制的示例分析
    这篇文章主要介绍java中锁机制的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!何为同步?JVM规范规定JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是使...
    99+
    2023-06-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作