Question: I can't answer completely "why should we call "**void**" is '**return type**'?"

*How do I prove that "**void**" is a type?*

Answer: 
The [Java Language Specification](https://java.sun.com/docs/books/jls/third_edition/html/j3TOC.html) [says that](https://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#24888):

> 
> [...] every variable and every expression has a type that can be determined at compile time. The type may be a primitive type or a reference type.
> 
> 
> 

`void` is not a [valid type](https://java.sun.com/docs/books/jls/third_edition/html/typesValues.html#4.1). However, `void` is a valid [keyword](https://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.9) used to indicate that a [method does not return a value](https://java.sun.com/docs/books/jls/third_edition/html/classes.html#37508).

The [Void JavaDoc](http://download.oracle.com/javase/7/docs/api/java/lang/Void.html) also says that `void` is a keyword:

> 
> The Void class is an uninstantiable placeholder class to hold a reference to the Class object representing the Java keyword void
> 
> 
> 

Contrast that to the [Integer JavaDoc](http://download.oracle.com/javase/7/docs/api/java/lang/Integer.html):

> 
> The Integer class wraps a value of the primitive type int in an object. An object of type Integer contains a single field whose type is int.
> 
> 
> 

The `Void` class represents the `void` **keyword**; while the `Integer` class represents an `int` **type**.
Yes, void is definitely type, meaning 'nothing'.
By the way, do you mean C (C++, Objective-C, ...).
Couldn't say for any language, but in C (C++, Objective-C, ...) void is a type.  

But it is special data type. You couldn't declare variable of type void. That's differ void from any other types.
But you could declare pointer to void. Function which return value is void means function has no return value, or returns nothing. That's afraid all cases where void type could be used.  

void \* v; /\*\* declares variable v as pointer to void \*/  

\*v used as left value in expression could be assigned value of any type without type cast. That's why void type was introduced into language.  

You updated your question, underlining you were asking about Java. Java has no pointers and no functions. void type is used in declarations of methods returning nothing.