Javaの場合と書いたのは、他のプログラミング言語では、メソッドではなく関数やサブルーチンということがあるからです。
戻り値は処理の結果を文字列や数値で返すこともありますし、true/false(真偽)などの状態を返すこともあります。例えば「データベースに接続できたかできなかったか」、「ログインしているかしていないか」などです。
また前回説明したように、メソッドに戻り値が無い場合は、戻り値の型に void と書き、return を省略できます。
今回は前回のプログラムを少し変更して、メソッドに戻り値を返させてみましょう。プログラムの実行結果は同じですが、メソッドが戻り値を返すということがどんなものか理解できます。
【1】sample02 フォルダをフォルダごとコピーして、sample03 フォルダを作ります。

【2】sample03 の PersonTest.java を以下のように修正します。

保存先 C:\java\sample03
ファイル名 PersonTest.java
class Person {
String name;
int age;
String address;
Person(String _name, int _age, String _address) {
name = _name;
age = _age;
address = _address;
}
String say(){
String str = "私の名前は" + name + "です。年齢は"
+ age + "才で、住所は" + address + "です。";
return str;
}
}
class PersonTest {
public static void main(String[] args) {
Person taro = new Person("太郎", 21, "東京都港区");
System.out.println(taro.say());
Person hanako = new Person("花子", 18, "北海道札幌市");
System.out.println(hanako.say());
}
}
【3】コマンドプロンプトを起動して、カレントディレクトリを sample03 にします。

【4】javac PersonTest.java と入力し、コンパイルします。

*フォルダごとコピーしたので前回のクラスファイルが残っています。コンパイルを忘れると、ソースファイルは修正していても、前回のプログラムが実行されますのでご注意ください。コンパイルするとクラスファイルは上書きされます。
【5】java PersonTest と入力し、プログラムを実行します。データが表示されたら成功です。

【解説】
前回と今回ではプログラムの実行結果は同じですが、メソッドの働きは大きく異なります。前回はメソッドが画面への出力まで行っていました。今回はメソッドは処理の結果を呼び出し元に返すだけで、画面への出力は呼び出し元で行っています。
(1)まずメソッドの定義の復習です。メソッドの戻り値の型と、return で返す戻り値の型は一致させます。
戻り値の型 メソッド名(仮引数のリスト){
内容
return 戻り値;
}
(2)上記の基本形をふまえてメソッド say() を見ると、処理の結果リターンされるのは、フィールドを使って組み立てた文字列です。だからメソッドの戻り値の型は、Stringクラス型になります。
String say(){
String str = "私の名前は" + name + "です。年齢は"
+ age + "才で、住所は" + address + "です。";
return str;
}
*Stringクラス型は文字列定数で、一度設定した文字列は変えないときに使います。文字列が更新される場合は、StringBufferクラスを利用します。StringBufferクラスについてはまたの機会に解説します。
(3)上記の str はStringクラス型の変数として宣言し、文字列を代入した後、リターンで str を返しています。つまり str に代入されていた文字列が、呼び出し元に返されます。
* str は参照型なので実際には値ではなく、値がある場所を示す参照情報が入っていますが、ここでは話しをわかりやすくするため、代入と書いています。今の段階では難しく考えなくてかまいません。
(4)呼び出し元のクラスでは、以下のようにメソッドを呼び出しています。
System.out.println(taro.say());
taro.say() は インスタンス名.メソッド名() の形ですね。メソッドの呼び出し部分である taro.say() が戻り値に置き換わると考えると理解しやすいです。
System.out.println(taro.say());
↓
System.out.println(私の名前は太郎です。年齢は21才で、住所は東京都港区です。);
↓文字列ですから「"」ダブルクォーテーションで囲みます。
System.out.println("私の名前は太郎です。年齢は21才で、住所は東京都港区です。");
メソッドの戻り値が返ってくるので、それを println() メソッドの引数とすることで、呼び出し元で画面に出力しているわけです。
前回のような「戻り値を返さないメソッド」と、今回のような「戻り値を呼び出し元で利用する」という二通りのパターンがつかめたらいろんなプログラムが書けるようになりますよ。