美文网首页Java架构师专题
深入分析java中的关键字void

深入分析java中的关键字void

作者: 愚公要移山 | 来源:发表于2019-07-26 17:30 被阅读13次

在平时写代码的时候我们会经常用到void,我们都知道他代表着方法不返回任何东西,但这只是表面意思,面试的时候也会经常会问到,这篇文章有必要对其进行一个深入的分析。

1、void关键字到底是什么类型?

java不像是php这些弱类型的语言,java语言是强类型的,意思就是说我们的方法必须要有一个确定类型的返回值,举个例子

public String test(){};

上面这个test方法有一个String类型的返回值,我们也可以返回int等基础类型的。不管返回什么都要返回一个确定的类型。

现在!!!出现了一个问题,我们的方法也可以返回void,那么void肯定也是一种数据类型吧。但是java好像只提供了两种数据类型:基本数据类型和引用数据类型。那这个void到底是什么呢?其实你可以把他理解成一个特殊的数据类型也可以理解成一个方法的修饰符。

2、从Void看void

我们的基础类型好像都有一个封装类,比如int基本类型的封装类是Integer,char基本类型的封装类是Character,void也不例外,他也有一个封装类叫做Void,没错就是把“v”换成了大写的V。你可以这样去理解Void:

其实Void类是一个不可实例化的占位符类,用来保存一个引用代表Java关键字void的Class对象。

Void类型不可以继承和实例化。而且修饰方法时候必须返回null。

下面我们再来研究研究这个Void。

(1)确定类型:Void是一个类,void就是一个基本类型

public class Test {
    public static void main(String[] args) {
        System.out.println(Void.class); 
        System.out.println(void.class); 
    }
}
//output
//class java.lang.Void
//void

(2)基本使用:必须且只能返回null

public class Test {
     //返回void,return可有可无
    public void a1() {
        return;
    }
    //必须且只能返回null
    public Void a2() {
        return null; 
    }
}

(3)使用场景:在反射中确定某个函数的返回类型

public class Test {
    // 在这里定义两个方法:
    //(1)a方法返回void
    //(2)b方法返回int
    public void a() {}
    public int b() {
        return 1;
    }
    public static void main(String args[]) {
        for (Method method : Test.class.getMethods()) {
            if (method.getReturnType().equals(Void.TYPE)) {
                System.out.println("返回void的方法是:"+method.getName());
            }
            else if(method.getReturnType().equals(Integer.TYPE)) {
                System.out.println("返回int的方法是:"+method.getName());
            }
        }
    }
}
//output
//返回void的方法是:main
//返回int的方法是:b
//返回void的方法是:a

(4)使用场景:泛型中使用

Future<T>用来保存结果。Future的get方法返回结果(类型为T)。但如果操作并没有返回值呢?这种情况下就可以用Future<Void>表示。当调用get后结果计算完毕则返回后将会返回null。

Void也用于无值的Map中,例如Map<,Void>这样map将具Set有一样的功能。

最后部分参考了网上_YourBatman的文章,特在此说明。

关注微信公众号:java的架构师技术栈,回复指定关键字可获取各种教程资源和小白到架构师的学习路线,感谢支持

宣传页_副本.jpg

相关文章

  • 深入分析java中的关键字void

    在平时写代码的时候我们会经常用到void,我们都知道他代表着方法不返回任何东西,但这只是表面意思,面试的时候也会经...

  • Java Void 和 void 的区别

    问:Java 中 java.lang.Void 和 void 有什么作用和区别? 答:void 关键字表示函数没有...

  • Java初学第一弹-变量常量

    1、Java中的关键字: Java 关键字是区分大小写的哦!所以 void 是关键字,但 Void 就不是了~~2...

  • **java** 学习笔记

    java 学习笔记 void关键字 学过Java的人都知道void的意思是空,如果你去问老手,老手会告诉你说:“v...

  • javaSE学习-关键字和标识符

    关键字 1、被java语言赋予特定含义的单词被称为关键字,例如class、public、void。 2、关键字都是...

  • 深入分析java中的关键字this

    我们在最初学习编程的时候,就遇到过这样一个关键字this,意思就是只带当前对象,其实this关键字还有很多其他的用...

  • Kotlin学习笔记记录

    关键字:var:定义变量val:定义常量fun:定义方法Unit:默认方法返回值,类似于Java中的void,可以...

  • Java 反射理解(三)-- Java获取方法信息

    Java 反射理解(三)-- Java获取方法信息 基本的数据类型、void关键字,都存在类类型。 举例如下: C...

  • javascript:void(0)的含义

    javascript:void(0)中最关键的是void关键字,void是javaScript中非常重要的关键字,...

  • 深入分析java中的关键字final

    这篇文章主要讲解Java中final关键字的使用,对于final大家从字面意思就能看出来,主要是“最终的不可改变的...

网友评论

    本文标题:深入分析java中的关键字void

    本文链接:https://www.haomeiwen.com/subject/grbdrctx.html