2015-01-25 2 views
2

나는 식별자가 숫자 나 '-'로 시작할 수없는 이유를 알고 있습니다.식별자에 '#', '.', ':'을 사용할 수없는 이유는 무엇입니까?

왜 '#', '.' (점) 및 ':'(콜론)을 식별자의 일부로 사용합니까? Java Language Specification에서

+1

코드가 컴파일되지 않으니까? 숫자는 식별자의 일부일 수 있습니다. 그 규칙을 어디에서 얻었는지 나는 모른다. 또한 점들이 식별자의 일부가 될 수 있는지 생각해보십시오. 이 코드는 무엇을 할 것인가 :'foo.bar.baz.hello()'? 바는 foo의 분야일까요? 또는 foo.bar가 변수가됩니까? –

+1

Java가 기반으로하는 C에서 허용되지 않았기 때문에 허용되지 않기 때문입니다. 어떤 경우에는 미래의 사용을 위해 예약되어 있지만'# '을 허용 할 수 있지만'.'와':'는 Java에서 특별한 의미를 지닙니다. –

+0

JLS가 So (tm) – fge

답변

1

"해야하지 않음"과 정확한 정의가 아닙니다. 더 나은 사용 "안돼"또는 "수 없습니다".

일단 질문을 변경하면 대답 할 수 있습니다. 그 이유는 자바 프로그래밍 언어가 정의 된 방식입니다. 그래서, 당신은 "왜 자바 제작자는 그러한 규칙을 정의 했습니까?"라고 할 수 있습니다.

몇 가지 대답이있을 수 있습니다. 가장 관련성이 높은 언어 중 하나는 모든 프로그래밍 언어 (적어도 알고있는 프로그래밍 언어)는 식별자에서 사용할 수있는 문자의 정의가 다소 동일하다는 것입니다.

문자 또는 숫자 또는 밑줄로 시작하는 문자 나 숫자 또는 밑줄 밑줄.

그런데 Java는 국가 알파벳을 포함하는 어떤 문자를 사용하도록 허용하기 때문에이 규칙을 확장합니다. 일반적으로 다른 (적어도 오래된) 프로그래밍 언어는 이것을 라틴 문자로만 제한합니다. 당신은 내가 단지 # 생각 쓴 모든 문자 중

이론적 식별자에 허용 된 문자 목록에 포함 할 수 있지만, 그들은 아마도 아마이 문자는 일부가 될 것입니다 자바의 향후 릴리스에 대해 생각을해야하지 않기로 결정 언어의

식별자로 ,;을 사용하는 것은 명백하게 불가능하다고 생각합니다. for 운영자를 생각해보십시오.

+0

@AlexR을 이해해 주셔서 감사합니다. 그렇지만 왜 사용해야하지 않을까요? (점)? – Manikanta

+1

Do가 더욱 분명합니다. 필드, 방법 또는 객체를 어떻게 참조 할 수 있습니까? – AlexR

+0

제 질문에 대답 해 주셔서 대단히 감사합니다. (바보 같지만). – Manikanta

1

:

식별자는 Java 문자해야 처음있는 자바 문자와 자바 자리 의 무제한 길이의 순서입니다.

... "Java 문자"는 Character.isJavaIdentifierStart(int) 메서드가 true를 반환하는 문자입니다.

이들은 Java 문자가 아니기 때문에 시작할 수 없습니다. $이지만 그 사용법은 내부 클래스 용으로 더 많이 예약되어 있습니다.

+1

나는 왜 JLS가 당신이 할 수 없다고 말하는가에 관한 질문이라고 생각합니다. – immibis

0

JVM 용으로 예약 된 charecter를 사용할 수 없습니다.이 charecter는 seprators delimters로 식별됩니다. 이것은 기본적으로 Java에서 잘못된 연산 인 "new"키워드를 변수 이름으로 사용하는 것과 같습니다.

관련 문제