博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java关键字(6)void
阅读量:4034 次
发布时间:2019-05-24

本文共 1772 字,大约阅读时间需要 5 分钟。

在平时写代码的时候我们会经常用到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用来保存结果。Future的get方法返回结果(类型为T)。但如果操作并没有返回值呢?这种情况下就可以用Future表示。当调用get后结果计算完毕则返回后将会返回null。

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

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

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

在这里插入图片描述

转载地址:http://umbdi.baihongyu.com/

你可能感兴趣的文章
Maven跳过单元测试的两种方式
查看>>
通过C++反射实现C++与任意脚本(lua、js等)的交互(二)
查看>>
利用清华镜像站解决pip超时问题
查看>>
[leetcode BY python]1两数之和
查看>>
微信小程序开发全线记录
查看>>
Centos import torchvision 出现 No module named ‘_lzma‘
查看>>
PTA:一元多项式的加乘运算
查看>>
CCF 分蛋糕
查看>>
解决python2.7中UnicodeEncodeError
查看>>
小谈python 输出
查看>>
Django objects.all()、objects.get()与objects.filter()之间的区别介绍
查看>>
python:如何将excel文件转化成CSV格式
查看>>
Django 的Error: [Errno 10013]错误
查看>>
机器学习实战之决策树(一)
查看>>
机器学习实战之决策树二
查看>>
[LeetCode By Python]7 Reverse Integer
查看>>
[leetCode By Python] 14. Longest Common Prefix
查看>>
[leetCode By Python]111. Minimum Depth of Binary Tree
查看>>
[LeetCode By Python]118. Pascal's Triangle
查看>>
[LeetCode By Python]121. Best Time to Buy and Sell Stock
查看>>