首页 > 编程语言 >Java学习笔记9-数据类型的转化

Java学习笔记9-数据类型的转化

时间:2024-08-28 09:07:36浏览次数:7  
标签:类型转换 Java int 数据类型 笔记 自动 类型 转换

一.显示转化
在Java中,数据类型的转换主要分为两种:自动类型转换(也称为隐式类型转换)和强制类型转换(也称为显式类型转换)。

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

自动类型转换是指在赋值或运算过程中,较小的数据类型自动转换为较大的数据类型。Java编译器会自动进行这种转换,不需要程序员显式指定。转换规则如下:

  • 较小的整数类型(如byteshortchar)可以自动转换为较大的整数类型(如intlongfloatdouble)。
  • float可以自动转换为double
  • 数值类型可以自动转换为布尔类型,其中0表示false,非0值表示true

例如:

javabyte b = 10;
int i = b; // 自动转换为int类型

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

强制类型转换是指将较大的数据类型转换为较小的数据类型。这种转换可能会导致精度损失或数据溢出,因此需要程序员显式指定。转换规则如下:

  • 较大的整数类型(如intlong)可以转换为较小的整数类型(如byteshortchar),但需要显式转换。
  • double可以转换为float,但需要显式转换。
  • 布尔类型可以转换为数值类型,但通常没有实际意义。

例如:

javaint i = 300;
byte b = (byte) i; // 强制转换为byte类型,可能会丢失精度

注意事项

  • 当进行强制类型转换时,如果目标类型的取值范围不能容纳源类型的值,将发生数据溢出,但Java不会报错,而是执行截断操作。
  • 在转换floatdouble为整数类型时,将丢弃小数部分,只保留整数部分。

正确使用类型转换可以避免潜在的错误和性能问题。在实际编程中,应当根据需要选择合适的数据类型,并在必要时进行适当的类型转换。

二.隐式转化
在Java中,隐式类型转换(也称为自动类型转换)是指在赋值或表达式计算过程中,较小的数据类型自动转换为较大的数据类型,而无需程序员显式地进行类型转换。这种转换通常是安全的,因为较大数据类型的范围可以容纳较小数据类型的值。以下是一些常见的隐式类型转换规则:

  1. 数值类型的转换
    • byteshortchar 可以自动转换为 int
    • int 可以自动转换为 longfloatdouble
    • long 可以自动转换为 floatdouble
    • float 可以自动转换为 double
  2. 字符类型转换
    • char 类型可以自动转换为 int,因为 char 实际上是一个16位的无符号整数。
  3. 布尔类型转换
    • 布尔类型(boolean)可以自动转换为数值类型,其中 true 转换为 1false 转换为 0
  4. 引用类型的转换
    • 子类引用可以自动转换为父类引用,这称为向上转型(upcasting)。

以下是一些隐式类型转换的例子:

javabyte b = 10;
int i = b; // b自动转换为int类型

int x = 100;
long l = x; // x自动转换为long类型

float f = 1.5f;
double d = f; // f自动转换为double类型

char c = 'A';
int charAsInt = c; // c自动转换为int类型,其值为65

boolean flag = true;
int num = flag; // flag自动转换为int类型,其值为1

在进行隐式类型转换时,程序员需要注意以下几点:

  • 虽然隐式类型转换通常是安全的,但在某些情况下,比如将较大的数值类型转换为较小的数值类型时,可能会导致数据溢出或精度损失。
  • 在进行数值类型转换时,程序员应当清楚转换后的数值范围,以避免不可预见的结果。
  • 隐式类型转换只发生在兼容的类型之间,不兼容的类型之间需要显式类型转换。

标签:类型转换,Java,int,数据类型,笔记,自动,类型,转换
From: https://www.cnblogs.com/mwx2024/p/18383916

相关文章

  • Java--泛型
    目录什么是泛型泛型的作用泛型的特性泛型的使用泛型类泛型接口泛型方法泛型通配符什么是泛型泛型是JavaSE5中引入的一个新特性,它提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。简单来说,泛型是一种参数化类型,它可以将类型(类、接口、枚举等)作为参数传......
  • Java学习笔记10-运算符
    Java运算符是用于执行各种数学、逻辑和位运算的符号。Java中的运算符可以分为以下几类:一、算术运算符用于执行基本的数学运算,如加、减、乘、除和取模。常用的算术运算符包括+、-、*、/和%。算数运算符详解Java中的算术运算符包括加、减、乘、除、取模等,下面分别详细介绍。1.1......
  • Java泛型
    Java泛型是Java语言的一个重要特性,它允许你在编译时指定类型参数,从而编写更加灵活和可重用的代码。Java泛型的概念Java泛型是在JDK5.0中引入的,它允许你在声明类、接口和方法时使用类型参数。类型参数可以是你定义的任何标识符,通常使用大写字母如E,T,K,V等表示。使用泛型......
  • Datawhale AI夏令营 Task 1 《深度学习详解》 - 1.1 通过案例了解机器学习的学
        一、学习目标通过具体案例深入理解机器学习的概念、工作原理以及在实际应用中的作用。二、主要内容案例介绍:详细阐述了图像识别、语音识别、自然语言处理等领域的具体案例,如人脸识别系统、智能语音助手、文本......
  • C:回调函数的介绍-学习笔记
    前言:本篇文章我们将继续指针相关知识:回调函数希望大家在看完后能够有所收获!回调函数 定义与概念回调函数是一个通过指针调用的函数。如果把函数指针作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,被调用的函数就是回调函数,回调函数不是有该函数的实现方......
  • HCIP笔记10-MPLS(1)
    MPLS:多协议标签交换多协议:可以基于多种不同的3层协议来生成2.5层的标签信息;包交换--包为网络层的PDU,故包交换是基于IP地址进行数据转发;就是路由器的路由行为;原始的包交换:数据包进入路由器后,路由器需要查询本地的路由表(RIB-路由信息数据库),再基于下一跳或者目标ip查询本地的A......
  • datawhale深度学习入门:task1学习笔记
    机器学习是一种人工智能的分支,它主要涉及通过经验和数据来训练计算机模型以自动处理任务或进行预测。这些模型可以利用算法和数学模型来分析和学习数据,然后使用这些知识来执行特定的任务,如图像识别、语音识别、自然语言处理、数据分类、趋势预测等。深度学习是人工智能(AI)中的......
  • [Java并发]Semaphore
    Semaphore是一种同步辅助工具,翻译过来就是信号量,用来实现流量控制,它可以控制同一时间内对资源的访问次数.无论是Synchroniezd还是ReentrantLock,一次都只允许一个线程访问一个资源,但是Semaphore可以指定多个线程同时访问某一个资源.Semaphore有一个构造函数,可以传入一个int型......
  • 资料分析笔记
    一、统计术语基期:作为对比参照的时期现期:相对于基期的称为现期描述具体数值时称之为基期量和现期量增长量vs增长率增长量:现期量和基期量增长(或减少)的绝对值增长量是具体值,有单位增长量=现期量-基期量增长量有正负,负值代表减少量增长率:增长量和基期量的相对......
  • Datawhale X 李宏毅苹果书 AI夏令营 Task1.2 笔记
    《深度学习详解》3.2节中关于批量和动量的主要内容总结: 批量的概念:在深度学习训练过程中,数据不是一次性全部用于计算梯度,而是被分成多个小批量(batch),每个批量包含一定数量的数据。每个批量的损失函数用于计算梯度并更新模型参数。批量大小对梯度下降法的影响:两种极端情况:......