質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

8204閲覧

Java メソッドで出力がない時はvoid必須? 初心者

masaakitsuyoshi

総合スコア102

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

1グッド

0クリップ

投稿2016/03/08 02:15

Javaの基本構文をさらっただけの初心者です。

Javaで voidという概念について、返り値(出力)がないメソッドにつける、と習いました。

voidの使い方を正しく理解できてるか把握したいので何点か質問したいです。

質問1
メソッドの宣言(定義)と、代入を分けた時にvoidを使えますか?(使わないといけないですか?)

例1

class PiggyBank{ int totalMoeny = 0; void putMoney(int money); putMoney(money) { totalMoney = totalMoney + money; System.out.println("貯金箱に" + money + "円を入れました。"); } } System.out.println(putMoney(400)); }

2回に分けて書きたい場合、「voidでputMoneyを宣言」で「次にメソッドの中身を書く」ということはできますか?

また、出力が絶対にあるようなメソッドの際、宣言と代入を分けることはできますか?

分けた時、宣言の際は voidを使えばいいのでしょうか。

質問2

Javaの初心者用教材などに、

public class HelloWorld { public static void main(String args[]) { System.out.println("Hello World!"); } }

のようなおなじみの流れがありますが、

これは

public static void main{ }

と、すでにvoidが付いているので、中にメソッドを書く時は、
voidは要らないのでしょうか?

退会済みユーザー👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

ベストアンサー

質問1:そもそもJavaの場合、メソッドの宣言と定義を分けることができません

質問2: Javaの場合、メソッド内で直接メソッドを定義することはできません。メソッドを呼び出す場合にはvoidは不要です。

投稿2016/03/08 02:21

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

0

質問1 メソッドの宣言(定義)と、代入を分けた時にvoidを使えますか?
はい、使えます。

質問2 中にメソッドを書く時は、 voidは要らないのでしょうか?
質問の意図がよくわかりません。
メソッドの定義を書くときは、 return void;とは書きません。
単に return; とするか、return を省略します。

以下は一般的な話をしまます。
java では、メソッドは

java

1 タイプ メソッド名(パラメータ) { 2 処理 3 return ... 4 }

のような形式で書きます。

返り値が不要な場合は

java

1 void メソッド名(パラメータ) { 2 ... 3 return; // return は省略できる 4 }

パラメータが無い場合は

java

1 タイプ メソッド名() { 2 ... 3 return ... 4 }

と書きます。

CやC++ のように関数のタイプ宣言と実装を分けることも可能です。
その場合は、abstract として宣言したり、インターフェースとして宣言します。

例:

abstract class 抽象クラス名 { abstract public int メソッド名1(int x, int y); abstract public void メソッド名2(); } class クラス名1 extends 抽象クラス名 { public int メソッド名1(int x, int y) { return x + y; } public void メソッド名2() { DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); System.out.println(dateFormat.format(new Date())); //2014/08/06 15:59:48 } }

java

1interface インターフェース名 { 2 public int メソッド名1(int x, int y); 3 public void メソッド名2(); 4} 5 6class クラス名2 implements インターフェース名 { 7 public int メソッド名1(int x, int y){ 8 return x + y; 9 } 10 public void メソッド名2() { 11 DateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd HH:mm:ss"); 12 System.out.println(dateFormat.format(new Date())); //2014/08/06 15:59:48 13 } 14}

参考:

投稿2016/03/08 15:05

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

質問1:
やろうとしているのはC言語で言うプロトタイプ宣言だと思いますが、
Javaではこのような記述は出来ません。
(デリゲートで似たような書き方は出来ますが・・)
メソッドの宣言順も特に気にする必要はありません。

質問2:
void云々と言より、クラスとメソッドの違いが理解不十分な気がします。
まずは、クラスとメソッドについて良く理解された方が良いと思います。

投稿2016/03/08 02:50

lilithchan

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

私の理解力が乏しくて質問の意味がよく理解できないのですが、
void は「値を返さないメソッド」と考えればいいと思います。
void ではなく int とかけば「intを返すメソッド」ですから、
返す値が無くて返す型をintとかで指定できないケースにvoid
という型を指定する、という感じで考えればどうでしょう?
もう少し具体的に書けば、メソッド内に「return 0;」などのような
return 文が存在するメソッドの場合は、返す値があるという事なので
その値の型をメソッドの型として記載しますが、メソッドの中に
1つも return 文が存在しない(return 文が不要な)メソッドなら
そのメソッドの型に void と書く、という感じです。
【例】
class Test {
void sample1() {
}
int sample2() {
return 0;
}
void sample3() {
System.out.println("メソッドの中に処理があっても値を返さなければvoid");
}
}

投稿2016/03/08 02:33

編集2016/03/08 02:34
HiroshiWatanabe

総合スコア2160

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

masaakitsuyoshi

2016/03/08 03:02

classとメソッドの理解ができておらず、説明がおかしくなっていたかもしれません。 voidに関しては 処理があっても値を返さなければvoid  というのが腑に落ちました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問