zoukankan      html  css  js  c++  java
  • 涉及基本类型的重载

    基本类型能从一个较小的类型自动提升至一个较大的类型,此过程一旦牵涉重载,

    可能会造成一些混淆。

    package example;
    
    public class Test {
    
        /**
         * 测试涉及基本类型的重载
         */
        public static void main(String[] args) {
            
            System.out.print("char类型重载:");
            char x='x';
            f1(x);f2(x);f3(x);  
            System.out.print("byte类型重载:");
            byte y=0;
            f1(y);f2(y);f3(y);
            System.out.print("short类型重载:");
            short z=0;
            f1(z);f2(z);f3(z);f4(z);
                
        }
        public static void f1(char x){System.out.print("f1(char)");};
        public static void f1(byte x){System.out.print("f1(byte)");};
        public static void f1(short x){System.out.print("f1(short)");};
        public static void f1(int x){System.out.print("f1(int)");};
        public static void f1(long x){System.out.print("f1(long)");};
        public static void f1(float x){System.out.print("f1(float)");};
        public static void f1(double x){System.out.print("f1(double)");};
        
        
        public static void f2(short x){System.out.print("f2(short)");};
        public static void f2(int x){System.out.print("f2(int)");};
        public static void f2(long x){System.out.print("f2(long)");};
        public static void f2(float x){System.out.print("f2(float)");};
        public static void f2(double x){System.out.print("f2(double)");};
        
        
        public static void f3(int x){System.out.print("f3(int)");};
        public static void f3(long x){System.out.print("f3(long)");};
        public static void f3(float x){System.out.print("f3(float)");};
        public static void f3(double x){System.out.print("f3(double)");};
        
        public static void f4(long x){System.out.print("f4(long)");};
    }

    输出:char类型重载:f1(char)f2(int)f3(int)byte类型重载:f1(byte)f2(short)f3(int)short类型重载:f1(short)f2(short)f3(int)f4(long)

    结论:如果传入的数据类型小于方法中声明的形参类型,实际数据就会被提升。

    char类型有所不同,如果无法恰好找到char参数的方法,但是int参数方法存在时,

    char直接提升至int型。

    反过来,如果传入的实际参数大,而形式参数类型小,则需要通过强制类型转换(窄化转化),

    不能指望类型自动下降,否则编译器报错。

  • 相关阅读:
    Springboot启动前执行方法
    UUID
    vue
    前端进阶
    动态代理
    c# 对接微信公众号JSSDK使用wx.uploadImage 上传图片,后台从微信服务器上下载的图片有问题损坏的解决办法
    浏览器数据库 IndexedDB基础使用
    使用Java命令行编译和打包jar
    ArcGIS JS API 路径回放
    基于Quick_SLPK_Server的NodeJs版I3S服务发布
  • 原文地址:https://www.cnblogs.com/xurui1995/p/5204261.html
Copyright © 2011-2022 走看看