首页 > Java > java教程 > 正文

Java 中的类型转换

PHPz
发布: 2024-08-30 15:12:18
原创
730 人浏览过

一旦将各种类型的变量和常量放在一个表达式中,它们就可以更改为相似的类型。这种将一种预定义类型转换为另一种类型的技术在 Java 中称为类型转换。

开始您的免费软件开发课程

网络开发、编程语言、软件测试及其他

类型转换

我们在编程语言中使用两种不同类型的转换。

Java 中的类型转换

1.隐式类型转换

如果类型转换是在没有程序员参与的情况下通过编译器立即进行的,则这种类型转换称为隐式类型转换。编译器从根本上鼓励每个操作数都转向最大操作数的数据类型。在整个数据转换过程中不会发生数据丢失。转换过程中不会抛出异常,因此被称为类型安全。较小数量的转换或较大数量的转换可以是隐式转换。整数类型数据转换为浮点数。

float i=0;
int j=10;
i=j;
登录后复制

// 这可以是隐式转换,因为浮点数可以大于整数,因此不会缺少数据,也不例外。

2.显式类型转换

可以通过程序员强制执行的类型转换称为显式类型转换。从根本上讲,程序员使表达式成为特定类型。显式类型转换可以称为类型转换。数据转换期间可能会或可能不会发生数据丢失。因此存在细节丢失的可能性。如果它尝试在不进行类型转换的情况下执行,它可能会抛出错误。较大数字到较小数字的转换可以是显式转换。

float k=123.456
int i= (int) k
登录后复制

// 这可以是显式转换以及 (int) 是类型转换、运算符。此时,我们可能会设法逃脱异常,但您可以发现明显的数据丢失。即 i=123

// .456 可以在转换过程中删除

Java 中的类型转换

与其他编程语言一样,java 中有两种类型的转换:

隐式类型转换

  • 这些通常就是我们所说的加宽转换,并且这些可以自动完成,因为我们正在转向更广泛的数据类型。因此,如果我们有一个 32 位整数,并且想要转换为 64 位整数,那么它会更宽。因此可以安全地移动该值,从而可以隐式地完成该操作。编译器必须决定如何进行这些转换,并且规则非常简单。
  • 如果我们有一个包含多个(混合)整数大小的表达式,如果我们有短整数和长整数,无论​​最大整数大小是什么,都会将其转换为。因此,如果我们对一个short和一个long进行操作,short将被隐式转换为long。
  • 如果我们执行混合浮点大小的运算,那么我们有一个 float 和一个 double,它们将始终转到 double,因为 double 是最大的浮点大小。
  • 然后,如果我们有一个使用混合整数类型和浮点类型的操作,编译器将转换为方程中最大的浮点数。因此,如果我们对 long 和 afloat 进行操作,long 将被转换为 afloat。
  • 如果我们对 long 和 double 进行运算,那么 long 将被转换为 double。

显式类型转换

  • 使用此转换操作时,我们在代码中显式执行。当我们这样做时,我们就要对因这种类型的转换而发生的任何事情负责。因此,我们可以执行加宽转换和缩小转换。它从 32 位加宽到 64 位,从 64 位缩小到 32 位。我们应该只是想知道我们知道可能会发生什么。
  • 如果我们从浮点数显式转换为整数,那么浮点数可以有小数部分,而整数则不能,因此当我们将该浮点数转换为整数时,任何小数部分都会被删除。
  • 执行缩小转换时要小心。如果我们有一个 64 位整数,它能够保存太大而无法放入 32 位整数的值。
  • 因此,如果我们将 64 位转换为 32 位,程序实际上会执行此操作,但如果该值太大而无法放入 32 位,您会从中得到一些奇怪的结果。所以你要确保当你进行缩小投射时,你知道你正在做的事情是安全的。
  • 最后一个是你在从整数转换为浮点数时要小心,因为如果你有一个具有大量有效数字的整数,由于浮点数的存储方式,你可以丢失一些有效数字。

类型转换示例

下面详细提到的类型转换示例:

代码:

Java 中的类型转换

我们这里有一个简单的程序,顶部有一些声明,float、double、byte、short 和 long,并且每个变量都有命名以帮助识别它们的类型,例如 float 是 floatVal,

代码:

Java 中的类型转换

长就是长Val

代码:

Java 中的类型转换

如果程序运行,它只会打印出一条成功消息。

Java 中的类型转换

所以让我们看看一些类型转换是如何发挥作用的。首先,让我们继续创建一个变量。我们有短路,我们就称其为结果。

事实上,我们将其命名为 result1。让我们做一个简单的作业。首先,我们将 byteVal 分配给它。现在,正如我们所期望的,如果我们继续运行它,那么就会成功运行。

代码:

Java 中的类型转换

输出:

Java 中的类型转换

我们知道这是一个有效的分配,因为一个字节可以被分配为一个短整型,因为这是一个扩大转换。

但是,如果我们采用这个 byteVal,并将其设为 longVal,那么现在它实际上是一个 long;如果我们运行这个,我们会在这里收到一条错误消息,指出类型不兼容,可能会丢失从长到短的转换。

代码:

Java 中的类型转换

Java 中的类型转换

所以我们在这里可以做的是我们可以进行显式强制转换。我们先简单介绍一下。现在它是有效的,所以我们可以运行它。

代码:

Java 中的类型转换

当然,它确实有效。因为多头不能转为空头,因为那是缩小转换。

输出:

Java 中的类型转换

但是通过将显式强制转换放在它前面,现在它是有效的。如果我们愿意,我们可以非常明确地放置一个强制转换符号,并说你知道,我们知道虽然字节转换是合法的,但我们想通过将短强制转换放在那里来明确表明我们正在强制转换它,我们可以这样做那个,而且这是完全合法的。

代码:

Java 中的类型转换

输出:

Java 中的类型转换

现在,让我们看看另一个场景。我们将创建另一个变量,我们将其称为 result2, 并且 result2 也很短。我们在这里要做的就是取出 byteVal,然后减去 longVal。现在我们知道这是不合法的,因为表达式的结果将是其中最大整数的大小,即长度。

代码:

Java 中的类型转换

因此,如果我们运行此命令,我们会收到一条错误消息,指出将长整型转换为短整型无效。

Java 中的类型转换

但是假设我们想要继续并保持结果尽可能短。我们需要进行演员阵容。但我们想将这次转换为整个结果的值。所以我们要做的就是把短演员表放在它前面。

将短演员表放在此处。并将整个内容括在括号中。并运行它。

代码:

Java 中的类型转换

它将成功运行。

输出:

Java 中的类型转换

现在声明另一个名为 result3 的变量,但将其声明为 long。所以得到结果 3,我们在这里要做的就是分配我们的 longVal – floatVal。所以我们运行它,从 float 转换为 long 时会出现错误,因为每当我们有整数类型和任何浮点类型时,结果都将是浮点类型。

代码:

Java 中的类型转换

Java 中的类型转换

所以让我们继续将结果转换为浮点数。因此,通过将其设为浮动,我们应该能够继续运行它。并成功运行。

代码:

Java 中的类型转换

输出:

Java 中的类型转换

但是现在,如果我们在这里获取 floatVal 并将其转换为 doubleVal,并且如果我们尝试运行它,我们会收到错误,因为它表示结果将是 double,因为当您执行整数时和浮点数,它是方程中最大浮点数的大小。

代码:

Java 中的类型转换

Java 中的类型转换

所以让我们继续将结果加倍,这样现在我们就可以运行它了。

代码:

Java 中的类型转换

输出:

Java 中的类型转换

结论

1. Java 中的变量是强类型
2. 原始类型

  • 整数类型、浮点类型、char类型、布尔类型

3.类型转换

  • 我们经常必须在不同类型之间移动,因为随着我们的程序变得越来越复杂,可能会涉及多种数据类型。
  • 编译器可以处理扩大的类型转换,从一种类型转换为可以容纳更大值的另一种类型,
  • 但是您也可以使用强制转换来显式执行编译器无法自动执行的那些类型的转换。

以上是Java 中的类型转换的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板