2017-12-10 9 views
-3

次のコードはJavaに基づいています。このためStringクラスのAPIに関する考え方

String s = new String("abc"); 
String ss = s.toUpperCase(); 
//result: ss = "ABC" 

s.toUpperCase()
私たちは、メソッドに値を渡すことはありませんでしたので、この方法は、意味のあるリターンを持つことはできませんここで、有名な方法「のtoUpperCase()が」、このように呼び出すことができます
値。ここでは、-意味がないの戻り値と呼ばれるものを説明すること
は一例です。上記のよう

//not pass a value to the method 
String toUpperCase(){ 
... 
return ???; 
} 

、戻り値は「S」と呼ばれ、そのオブジェクトとは関係がありません。 (非パラメータメソッドの呼び出しは、多くの場合オブジェクトから独立しています)。 String ss = s.toUpperCase();どのようにオブジェクト「s」は

との一切の関係を持ち、次が有意義と呼ばれている値を返すことができます:

//pass a value to the method 
static String toUpperCase(String str){ 
.... //to change the "str" into uppercase 
return str; 
} 

今、私は呼び出すことができますが、私は、この非パラメータメソッドを呼び出す場合このようなメソッドtoUpperCase()は
String ss = String. toUpperCase(s);
です。私はメソッドに "s"(そのアドレス)を渡すので、オブジェクトを変更して意味のある戻り値を返すことができます。


上記に基づいて、私はこの方法について妥当な疑いを持っています s.toUpperCase()。意味のある戻り値を返すことができないからです。

+2

あなたは 'this'リファレンスを理解していますか? _ "非パラメータメソッドの呼び出しは、多くの場合、オブジェクト" _ - から100%偽ではありません。あなたは '静的'メソッドを考えています。 –

+0

's'は' String'のインスタンスで、テキストを表す一連の 'char'sを含みます。 'String#toUpperCase'は、' String'のインスタンスのテキストに作用するインスタンスメソッドであるので、 's'の内容を返しますが、大文字に変換します。それはオブジェクト指向プログラミング – MadProgrammer

+3

番号の中核となるものです。*合理的な疑問ではありません。それは完全に*不合理な*疑いです。 'toUpperCase()'は実際にJavaプログラマーの数百万人**のために働くという単純な事実です。したがって、*理論的な*引数があればうまくいきません。あなたが理解していないJavaに関するものがあるので、あなたの議論は間違っています。 –

答えて

1

最初に、用語。 sはインスタンスです。

どのように「s」が対象とどんな関係を持つ値を返すことができ

あなたがthisを理解していますか?たとえば、dog.getName()は、そのdogインスタンスの名前の「意味のある値」をどのように返しますか?

The char[] of the String object named s is stored within that instanceのように、DogオブジェクトのString nameによく似ています。

class Dog { 
    String name; 

    public String getName() { return name; } // or 'return this.name;' 
} 

ボーナス:Source code of toUpperCase() implementationCharacter.toUpperCase(c)charためプリミティブに電話をかけるんtoUpperCase方法そのものを持っています。

関連する問題