``` public class Test3 { public static void main(String[] args) { String[] arg = {args[0]}; arg.length; arg.equals(); System.out.println(arg0); System.getProperty(arg0); } } ``` 안녕하세요. 독학하는 입장에서 많은 혼란이 오지만 매번 많은 도움을 주셔서 감사합니다. 위의 코드에서 String 배열 arg에 length 처럼 ()가 없는것이 있고 equals() 처럼 있는것들이 있습니다. equal() 같은경우에는 String[] 라는 객체의 필드에 정의 되어 있는 있는 메소드가 맞는건가요? 그렇다면 length의 경우 필드에 초기화 되어 있는 변수인건가요? System.out.println의 경우에는 System이라는 객체 안에 out에 있는 println이라는 메소드 인것 같은데 여기서 out은 어떠한 구조로 되어있어서 println이라는 메소드를 내포하고 있는것인가요? 그리고 메소드역시 정의할때 변수처럼 초기화 한다는 말을 사용하나요?
## equals()는 메소드가 맞나요? true, 닷 연산자(`.`) 사용 후 괄호가 붙으면 메소드입니다. ## length는 변수입니까? true, 닷 연산자(`.`) 사용 후 괄호가 없다면 변수입니다. ## legnth는 초기화 되어있는 변수인건가요? true, 배열 생성시 길이에 따라 자동으로 초기화 됩니다. ## System.out.println()에서 out은 println()을 내포하나요? true, out은 PrintStream 이라는 클래스로 만들어진 객체입니다. 해당 클래스의 API(https://docs.oracle.com/javase/8/docs/api/java/io/PrintStream.html)를 참조하시면, 다양한 메소드를 확인해 볼 수 있습니다. 이들 중 `println()` 또한 포함되어 있습니다. ## 메소드 또한 초기화 한다는 말을 사용하나요? false, 초기화의 대상은 변수입니다. 일반적으로 메소드를 사용하여 변수(또는 객체)를 초기화합니다.