handle.lengthは()それはない10
ないよりも大きいとき。それは値を返します。値が返されることはありません。メソッドのタイプはvoid
です。 handleName
インスタンスフィールドの名前が10文字以上であれば設定します(名前が10文字未満の場合は設定しません)。
は、handle.length()が10未満のときに値を返すとは限りませんか? 「ハンドルの長さは、10未満である場合、戻り」と、それはhandleName
を設定前に、それはだ
いいえ、if
は明確に述べています。 return
はすぐに機能を残し、続くコードをバイパスします。
なぜこのif文は反対ですか?
if(false){ //do stuff; }
その場合には、ロジックは、内if
ブロックであるからです。あなたの最初の例では、の後にとif
ブロックがあり、それは早く(機能の残りを迂回して)です。それは、あなたの最初の例である:
if (!condition) {
return;
}
doSomething();
が、あなたの第二の例は、
if (condition) {
doSomething();
}
でここにあなたの最初の例の注釈付きバージョンです:私たちはif
に行けば
public void setHandleName(String handle){ // Accept a `handle` string parameter
if(handle.length() < 10){ // If the length of `handle` is less
// than 10, enter the block
return; // Leave this method immediately, without
// doing anything else
} // This is the end of the conditional bit
handleName = handle; // Set `handleName` to `handle`
}
だからブロックすると返され、決してhandleName = handle;
行に届かないため、決して設定しません。 がブロックに入っていない場合は、if
ブロックに入りますので、早急に返さないので、をに設定してください。
我々は(そしておそらく必要があります)あなたの後の例から構造を使用するようにsetHandleName
を書き換えることができます。
public void setHandleName(String handle){ // Accept a `handle` string parameter
if(handle.length() >= 10){ // If `handle`'s length is 10 or higher
handleName = handle; // Set `handleName` to `handle`
} // This is the end of the conditional bit
}
if(false){ //do stuff; }
がは決して「ものもしない」ということに注意してくださいあなたの方法は、** **ボイドの戻り値の型を持っているので、それがどのような状況の下で、何も返さないです。条件付きで 'handleName'を更新しています。 – azurefrog