이 Java 코드에서 실제로하는 밑줄은 무엇입니까? [닫은]


81

저는 자바를 배우기 시작했습니다.

공부를 도와주는 친구가 방금 이걸 보내서 '이걸 그려 봐'라고 했어요.

불행히도 나는 이것을 읽을 수 없습니다. 저에게는 Perl처럼 보입니다.

class _{_ _;_(){_=this;}}

무슨 뜻이에요?


17
이 질문은 meta 에서 논의 되고 있습니다. 거기에서 그것을 닫거나 삭제하는 것에 대한 논쟁을합시다.
Adam Lear

63
@anotherordinary 친구가이 언어를 배우는 좋은 방법이 될 것이라고 생각한다면 프로그래밍 교사로서의 친구를 버려야 할 것입니다. 경건하지 않은 퀴즈를 기억하는 것은 전혀 유용하지 않습니다. 언어를 배우기 시작할 때 훨씬 적습니다.
Enno Shioji 2013 년

2
@EnnoShioji 그레이트 포인트. "무관 한". 죄송합니다.
아사드 Saeeduddin

1
누군가 "IOJCC"를 만들려고합니까? (google "IOCCC")
Olivier Dulac 2013 년

1
@EnnoShioji 기억이 필요한이 "관련없는 퀴즈"는 어떻습니까? 자신을 자바 프로그래머라고 부르는 사람이라면 누구나 쉽게 이해할 수 있어야합니다.
phant0m 2013-06-11

답변:


154

_클래스 이름입니다. 매우 혼란 스럽지만 작동합니다!

클래스 이름이 변경됨 :

class Something {Something something;Something(){something=this;}}

그리고 정리 :

class Something {
    Something something;
    Something() {
        something=this;
    }
}

이 이상한 이름으로 미쳐 버릴 수 있습니다. :)

class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__=___;}}

사실 유니 코드도 지원되므로 다음과 같이 유효합니다.

class 合法類別名稱{合法類別名稱(){}}

29
나는 개인적으로 앨빈의 편집 : @ 사랑
Bartek Banachewicz

4
귀하의 get crazy예 에는 실수가 거의 없습니다 . (1) ____=__(두 번) 뒤에 세미콜론을 추가하는 것을 잊었습니다 . (2) _메서드 를 오버로드하려는 경우 유형도 전달 _(___)해야하므로 _(_ ___). 여기에 어떻게 보일 수 있습니다 class _{_ __;_ ____;_(){__=this;____=__;}_(_ ___){__ = ___;}}. 잠시만 요. 방금 밑줄을 디버깅 했습니까? 브레이크를 할 시간입니다.
Pshemo

롤 @Pshemo, 난 정말 그 코드에 대한 심각한 될 운명이 결코 : P는 고정
tckmn

내 답변에 대한 댓글에 +1을 받으세요. 당신에게 보상하는 다른 방법을 생각할 수 없습니다.
Ed Heal 2013

71

_ 클래스 이름이고 밑줄은 유효한 Java 변수 이름입니다. 코드를 들여 쓰기 만하면됩니다.

class _{
    _ _;
    _(){
     _=this;
   }
}

처럼:

class A{
    A A;
    A(){
     A=this;
   }
}

편집 : @Daniel Fischer 덕분에

유형 이름과 변수 이름은 서로 다른 네임 스페이스를 갖습니다. 예를 들어 코드 class FOO { FOO FOO; }는 Java에서 유효합니다.

요약

  • _ 예를 들어 클래스 이름입니다. class _{
  • _클래스 멤버 이름입니다. 예 : _ _;_=this
  • _ 생성자 이름입니다. 예 : _()

기억하세요 : Java는 6 개의 서로 다른 네임 스페이스를 사용 합니다.

  • 패키지 이름,
  • 유형 이름,
  • 필드 (변수) 이름,
  • 메서드 이름,
  • 지역 변수 이름 (매개 변수 포함) 및
  • 라벨.

또한 선언 된 각 열거 형에는 고유 한 네임 스페이스가 있습니다. 다른 유형의 동일한 이름은 충돌하지 않습니다. 예를 들어 메서드는 지역 변수와 같은 이름을 지정할 수 있습니다 .


3
실수가 없습니다. 입력 한대로 잘 컴파일됩니다. 지금까지 이해하지 못했습니다.
다른 일반

2
@GrijeshChauhan 유형 이름과 변수 이름은 서로 다른 네임 스페이스를 갖습니다. class FOO { FOO FOO; }공장.
Daniel Fischer

1
예를 들어 Haskell에서 유형과 값은 다른 네임 스페이스를 갖습니다. 차이점은 대소 문자가 의미가 있다는 점입니다. 유형 이름은 대문자로 시작해야하므로 유형과 같은 이전 값의 이름을 지정할 수없고 생성자 만 data Foo = Foo | Bar Int작동 하지만 작동합니다. 물론 표시되는 위치에서 식별자의 범주를 파악할 수있는 언어에서만 작동합니다.
Daniel Fischer

2
내 업데이트 된 대답을 읽어 @anotherordinary 또한 링크 추가
Grijesh 차우

2
트윗 담아 가기 감사합니다 :)
또 다른 평범한

12

좋은 예입니다. Java는 유니 코드를 식별자로 허용하므로 다음과 같이 작성할 수 있습니다.

classlass {
ⲥlass claѕѕ;
}

여기서 클래스 이름의 c는 'ⲥ'(U + 2CA5 COPTIC SMALL LETTER SIMA)이고

개체 이름의 'ѕ'(U + 0455 CYRILLIC SMALL LETTER DZE).


라는 변수는 사용할 수 없으며 class키워드입니다.
nickb

14
@nickb : Java 키워드가 아닙니다 'class'. 객체 이름에 ASCII가 아닌 문자 'claѕѕ'가 있다고 언급했듯이 'ss'. 그래서 실제로 객체의 이름은 claѕѕ이다 cla\u0455\u0455'나는이 지 웁니다 오해 생각합니다. :)
ashgkwd 2013 년
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.