java里void的意思_void的用法和意义
本文由好程序员ava培训分享void的用法和意义,void在Java中一般用来表示方法没有返回值。例如:
那么其底层原理到底如何呢?我们来一点点的分析一下。
先来了解一下这个单词的基本含义,根据网络查询结果,如下:
说明void这个单词本身的含义就是空白,空的。在Java语言中,一般也用void这个关键字作为方法的返回值,表示该返回值为空。当定义一个方法没有返回值的时候,就可以使用该关键字,如果在代码中需要返回,可以使用return关键字,例如:
实际上,在Java中,有一个类java.lang.Void对应着void关键字,如下:
从上面的源代码来看,Void其实就是void的封装类型,一般被称为占位符(placeholder)。这里看起来好像有点类似于Integer跟int的关系,但其实并不是这样,Void比较特别:首先它不能实例化;其次它也没有内置的实例,也没有可以用的字面值。
所以声明一个Void变量通常是没有意义的,因为没有可以赋值的实例。所以Void变量唯一能赋值的就null。
Void唯一一个可用的地方就是用来判断反射时的类型。例如:
但是这里也可以使用void.class来替代。所以Void其实就是void的封装。
那么既然void就是表示没有返回值,为什么不能直接不写呢?一定需要一个void占位符呢?我们去研究一下Java的底层,也就是C/C++语言。在C/C++中,void一般有两种使用场景:一是对函数返回的限定;二是对函数参数的限定。第二种用法在Java中不能使用,所以这里我们只说di一种情况。
为什么需要对函数返回进行限定,其实在早期C语言的一些编译器中,如果不写函数的返回值时,可能会被编译器作为返回整型值处理(注,现在的大部分编译器一般会报错或警告)。但是许多程序员却误以为其为void类型。例如:
此处如果程序运行的结果为输出:2 + 3 = 5,这说明不加返回值的函数是int函数,并非void。
而在C++语言中有很严格的类型安全检查,不允许上述情况(指函数不加类型声明)发生。但是编译器可能不会这么认定,譬如在Visual C++6.0中上述add函数的编译无错也无警告且运行正确,所以不能寄希望于编译器会做严格的类型检查。
因此,为了避免不必要的问题发生(编程不规范导致出现的问题),在编写C/C++程序时,对于任何函数都必须一个不漏地指定其类型。如果函数没有返回值,一定要声明为void类型。这既是程序良好可读性的需要,也是编程规范性的要求。
而Java的底层就是使用的C++,也做好了良好的编程要求,所以也就有void的关键字作为占位符。
java里void的意思_void的用法和意义相关推荐
- java中void的含义_void在Java-java中void后面接什么-java中关键字void的含义
JAVA里VOID是什幺意思. void是无返回值的意思. 比方说 public void walk() { System.out.print("你好!"); } 如果别的地方调用 ...
- Java 里的 for (;;) 与 while (true),哪个更快?
点击关注公众号,Java干货及时送达 在JDK8u的jdk项目下做个很粗略的搜索: mymbp:/Users/me/workspace/jdk8u/jdk/src $ egrep -nr " ...
- 快手二面:Java 里的 for (;;) 与 while (true),哪个更快?
转自:知乎 www.zhihu.com/question/52311366/answer/1300903 在 JDK8u 的 jdk 项目下做个很粗略的搜索: mymbp:/Users/me/work ...
- 【转】Java里如何实现线程间通信
正常情况下,每个子线程完成各自的任务就可以结束了.不过有的时候,我们希望多个线程协同工作来完成某个任务,这时就涉及到了线程间通信了. 本文涉及到的知识点:thread.join(), object.w ...
- 原型模式(ProtoType) - Java里的对象复制
一, 引用的复制和对象复制. 在编程中, 我们有时会用两个引用指向同一个对象. 例如: ArrayList a = new ArrayLIst(); ArrayList b = a; 看起来好像有a, ...
- Java里的数组介绍
注意, 本文讲的是数组(Array), 非数组型线性表容器(ArrayList). 一. C语言的静态数组和动态数组. 稍微接触过c的程序猿都应该知道, c语言里的数组分为静态数组和动态数组. 1. ...
- Java 里的泛型简介.
我们在JDK中有时回见到1个类or接口后面跟这1个尖括号. 例如: java.util.HashMap<K,V> 我们一开始大概知道K,V 大概就是Key和Value的意思, 键值对嘛, ...
- Java里的容器 Collection 简介
容器也是Java面试经常问到的问题. 也是Java编程的其中1个难点. 在一篇文章中很难全部讲清楚, 我打算分几篇逐步介绍. 一. 什么是容器 1.1 容器的定义 Java里的容器的定义很简单: ...
- Java里的字符串, String类简单介绍.
String类在java面试中也是1个常见的问题点. 所以也是写在这里方便以后查阅了. 大家都知道c语言里是没有String 字符串这个数据类型的. 只能用字符数组的1个特殊形式来表示一个字符串, 就 ...
最新文章
- 10000+ gif表情包不是梦,get这一篇文就够了!!!小哥哥快到碗里来,再也不怕斗图没有表情包了
- Tesla AutoPilot纯视觉方案解析
- 多维数组和C#中的数组数组有什么区别?
- apply和call
- 支付宝招兼职“找茬程序员” 不用坐班/最高奖励36万
- 动态ip地址方案有什么优点和缺点_OA期刊的优点和缺点是什么
- 消息队列简介-原理与应用
- 组策略管理(关闭UAC)
- 如何理解阿里月饼事件中各方的表现
- 【POJ 3764】 The xor-longest path
- 网上赚钱靠谱的方法,看懂了的都是老手!
- VM虚拟机占内存非常大
- 英雄联盟英雄技能总结
- 科研过程中Linux相关问题
- 踌躇满志 未来可期 华云数据广西公司正式乔迁
- 泊松图像编辑(Poisson image editing)
- HTML 基础教程:HTML 编辑器
- flashback总结六之Flashback_Transaction_Query
- AWD平台搭建–Cardinal
- 使用傲梅分区助手绿色版给C盘扩容
热门文章
- Android开发本地及网络Mp3音乐播放器(十五)网络音乐及歌词下载功能实现
- Python 还能实现图片去雾?FFA 去雾算法、暗通道去雾算法用起来! | 附代码
- Discover中英文显示问题
- 关于身份认证和鉴权过程
- 与某流氓网站的血泪交战史
- Keras预测股票走势
- SpringBoot + Vue 实现基于 WebSocket 的聊天室(单聊)
- 2021 ICPC 四川省赛 L - Spicy Restaurant(多源BFS,DP)
- 产品思维训练 | 百度搜索强制跳转APP,背后的逻辑和用户体验
- 【Python】pdf文件逐页转图片/修改图片存储大小脚本