java隐式方法(java隐式调用)

本文目录一览:

java新手 问一下 隐式调用 ?? 如何查看隐式调用的方法?

看源代码, System.out.println的源码是这样的

    public void println(Object x) {

        String s = String.valueOf(x);

        synchronized (this) {

            print(s);

            newLine();

        }

    }

然后 String.valueOf的源代码是这样的

    public static String valueOf(Object obj) {

return (obj == null) ? “null” : obj.toString();

    }

所以就是调用的obj的toString方法

java中什么是显式类型转换和隐式类型转换?

自动类型转换,也称隐式类型转换,是指不需要书写代码,由系统自动完成的类型转换。由于实际开发中这样的类型转换很多,所以java语言在设计时,没有为该操作设计语法,而是由jvm自动完成。

转换规则

从存储范围小的类型到存储范围大的类型。

具体规则为:

byte→short(char)→int→long→float→double

也就是说byte类型的变量可以自动转换为short类型,示例代码:

byte

b

=

10;

short

sh

=

b;

这里在赋值时,jvm首先将b的值转换为short类型,然后再赋值给sh。

在类型转换时可以跳跃。示例代码:

byte

b1

=

100;

int

n

=

b1;

l

注意问题

在整数之间进行类型转换时,数值不发生改变,而将整数类型,特别是比较大的整数类型转换成小数类型时,由于存储方式不同,有可能存在数据精度的损失。

强制类型转换,也称显式类型转换,是指必须书写代码才能完成的类型转换。该类类型转换很可能存在精度的损失,所以必须书写相应的代码,并且能够忍受该种损失时才进行该类型的转换。

转换规则

从存储范围大的类型到存储范围小的类型。

具体规则为:

double→float→long→int→short(char)→byte

语法格式为:

(转换到的类型)需要转换的值

示例代码:

double

d

=

3.10;

int

n

=

(int)d;

这里将double类型的变量d强制转换成int类型,然后赋值给变量n。需要说明的是小数强制转换为整数,采用的是“去1法”,也就是无条件的舍弃小数点的所有数字,则以上转换出的结果是3。整数强制转换为整数时取数字的低位,例如int类型的变量转换为byte类型时,则只去int类型的低8位(也就是最后一个字节)的值。

示例代码:

int

n

=

123;

byte

b

=

(byte)n;

int

m

=

1234;

byte

b1

=

(byte)m;

则b的值还是123,而b1的值为-46。b1的计算方法如下:m的值转换为二进制是10011010010,取该数字低8位的值作为b1的值,则b1的二进制值是11010010,按照机器数的规定,最高位是符号位,1代表负数,在计算机中负数存储的是补码,则该负数的原码是10101110,该值就是十进制的-46。

l

注意问题

强制类型转换通常都会存储精度的损失,所以使用时需要谨慎。

关于java中的隐式调用问题

这是因为System.out.println这个方法可以打印出任何对象或者数据类型的关系

他可以打印出8种基本类型和对象,基本类型就不说了,如果他发现参数为对象的话,会自动调用该对象的toString()方法进行打印,这也就是所谓的隐士调用了。

你的R1,R2是对象,所以他会选择该对象中的toString()方法,然后打印,toString()是由Object类派生的,所以任何对象都拥有这个方法

原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/243136.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小蓝小蓝
上一篇 2024-12-12 12:54
下一篇 2024-12-12 12:54

相关推荐

  • java client.getacsresponse 编译报错解决方法

    java client.getacsresponse 编译报错是Java编程过程中常见的错误,常见的原因是代码的语法错误、类库依赖问题和编译环境的配置问题。下面将从多个方面进行分析…

    编程 2025-04-29
  • Java JsonPath 效率优化指南

    本篇文章将深入探讨Java JsonPath的效率问题,并提供一些优化方案。 一、JsonPath 简介 JsonPath是一个可用于从JSON数据中获取信息的库。它提供了一种DS…

    编程 2025-04-29
  • Java Bean加载过程

    Java Bean加载过程涉及到类加载器、反射机制和Java虚拟机的执行过程。在本文中,将从这三个方面详细阐述Java Bean加载的过程。 一、类加载器 类加载器是Java虚拟机…

    编程 2025-04-29
  • Java腾讯云音视频对接

    本文旨在从多个方面详细阐述Java腾讯云音视频对接,提供完整的代码示例。 一、腾讯云音视频介绍 腾讯云音视频服务(Cloud Tencent Real-Time Communica…

    编程 2025-04-29
  • Java Milvus SearchParam withoutFields用法介绍

    本文将详细介绍Java Milvus SearchParam withoutFields的相关知识和用法。 一、什么是Java Milvus SearchParam without…

    编程 2025-04-29
  • ArcGIS更改标注位置为中心的方法

    本篇文章将从多个方面详细阐述如何在ArcGIS中更改标注位置为中心。让我们一步步来看。 一、禁止标注智能调整 在ArcMap中设置标注智能调整可以自动将标注位置调整到最佳显示位置。…

    编程 2025-04-29
  • 解决.net 6.0运行闪退的方法

    如果你正在使用.net 6.0开发应用程序,可能会遇到程序闪退的情况。这篇文章将从多个方面为你解决这个问题。 一、代码问题 代码问题是导致.net 6.0程序闪退的主要原因之一。首…

    编程 2025-04-29
  • Python创建分配内存的方法

    在python中,我们常常需要创建并分配内存来存储数据。不同的类型和数据结构可能需要不同的方法来分配内存。本文将从多个方面介绍Python创建分配内存的方法,包括列表、元组、字典、…

    编程 2025-04-29
  • Python中init方法的作用及使用方法

    Python中的init方法是一个类的构造函数,在创建对象时被调用。在本篇文章中,我们将从多个方面详细讨论init方法的作用,使用方法以及注意点。 一、定义init方法 在Pyth…

    编程 2025-04-29
  • Java 8中某一周的周一

    Java 8是Java语言中的一个版本,于2014年3月18日发布。本文将从多个方面对Java 8中某一周的周一进行详细的阐述。 一、数组处理 Java 8新特性之一是Stream…

    编程 2025-04-29

发表回复

登录后才能评论