2013-04-15 8 views
1

글쎄, 나는 그런 종류의 방법에 대해 생각하고 있었다. 매개 변수를 암시하지 않지만 매개 변수를 사용합니다.parameter.method() 메서드는 어떻게 작동합니까?

예 : .replace(Char, Char) String API는 문자열 뒤에 점이 오도록 작동합니다.

처럼 : 그것은없이 작동 방법

String test = "= Text = without = equals"; 
String output = test.replace("=",""); 

매개 변수 테스트를받을? 난 그냥 궁금해서, 이런 방법을하고 싶다.

죄송합니다. 감사합니다. .

+0

당신은'test'를 매개 변수로 생각하고있는 것 같습니다. 사실이 아닙니다. 문자열 클래스 메쏘드를 호출하는 객체 일뿐입니다. – exexzian

+0

음, 이것이'replace (test) '와 같은 매개 변수를받지 못한다는 것을 의미합니다. = "," "); ' – Mueretee

+1

기본 자바 북 구입. 멤버 함수가 어떻게 작동하는지 알려줄 것입니다. 심지어 10 분짜리 책의 Learn Java도 이것을 다룰 것입니다. 이 주제는 아마도 2 분에서 3 분 사이의 어딘가에서 다루어 질 것입니다. – user93353

답변

0

의 당신은 물건을 대체한다는 것을, 문자열의 새로운 유형을 구축한다고 가정 해 봅시다 (왜?!) :

MyString myString = new MyString("= Text = without = equals"); 
String output = myString.replace("=", ""); 

잇 짜잔 :

지금
public class MyString { 
    private final String s; 
    public MyString(String s) { 
     this.s = s; 
    } 
    public String replace(String search, String replace) { 
     return s.replace(search, replace); 
    } 
} 

이처럼 호출 할 수 있습니다 , 당신은 똑같은 "트릭"을했습니다! 그리고 어떻게 작동하는지 볼 수 있습니다 : MyString 개체는 내부적으로 데이터를 보관하고 (s 변수) 해당 메서드에서 해당 데이터에 액세스 할 수 있습니다.

+0

고마워요! 이제 어떻게 작동하는지 봅시다! "Noob"질문 인 경우 죄송합니다. – Mueretee

0

이들은 instance methods입니다. 즉, 작동하려면 인스턴스화 된 클래스 개체가 필요합니다. 따라서 문자열 클래스는 예제에서 test의 값을 알고 있습니다. 인스턴스화 된 데이터에 액세스 할 수 있기 때문입니다.

이러한 유형의 메서드를 만들려면 클래스 내에 정의하고 정적으로 표시하지 마십시오.

0

문자열은 개체입니다. 클래스 정의는 Java 표준 라이브러리의 일부입니다. 이 정의에는 replace 메소드가 포함됩니다.

문자열은 final 클래스이므로 하위 클래스를 추가하여 메서드를 추가 할 수 없습니다. 그래서 당신은하려고하는 것을 할 수 없습니다.

관련 문제