2017-12-10 25 views
-3

다음 코드는 Java를 기반으로합니다. 여기
, 유명한 방법 "를 toUpperCase()는"이런 식으로 호출 할 수 있습니다 :이를 위해String 클래스의 API에 대한 생각

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

: 우리는 방법에 값을 통과하지 못한 s.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 % false "오브젝트와 독립적입니다. 당신은'정적'방법을 생각하고 있습니다. –

+0

's'는 문자열을 나타내는 일련의'char's를 포함하는'String'의 인스턴스입니다. 'String # toUpperCase'는'String' 인스턴스의 텍스트를 처리하는 인스턴스 메소드이므로's'의 내용을 반환하지만 대문자로 변환합니다. 그것은 객체 지향 프로그래밍 – MadProgrammer

+3

번호의 근본적인 종류입니다. * 합리적 * 의심하지 않습니다. 그것은 완전히 불합리한 의심입니다. 'toUpperCase()'가 ** 수백만 **의 Java 프로그래머에게 실제로 작동한다는 것은 명백한 사실입니다. 그래서, 이론적 인 * 인수가 작동해서는 안되는 경우 * 합리적인 결론은 당신의 주장이 틀렸다는 것입니다 ... 당신이 이해하지 못하는 Java에 관한 것이 있기 때문입니다. –

답변

1

첫 번째 용어. s은 인스턴스입니다.

어떻게이

당신이 this을 이해 하는가 "의"객체와 어떤 관계가 값을 반환 할 수 있습니까? 예를 들어, dog.getName()dog 인스턴스의 "의미있는 값"을 어떻게 반환합니까?

The char[] of the String object named s is stored within that instanceDog 개체의 String name과 매우 비슷합니다.

class Dog { 
    String name; 

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

보너스 : Source code of toUpperCase() implementation, Character.toUpperCase(c)char 때문에 프리미티브에 전화를 걸 않는 toUpperCase 방법 자체를하지합니다.