main은 유효한 Java 식별자입니까?
내 아이 중 한 명이 고등학교 때 자바 시험을 봤는데
다음 중 Java에서 유효한 식별자는 무엇입니까?
a. a.
123java
b.main
c. c.java1234
d.{abce)whoot
그는 b를 맞혔는데 틀렸다.
를 보고 을 짰습니다.main 유효한 식별자이며 올바른 식별자여야 합니다.
식별자에 대한 Java 사양을 살펴본 결과 이 점이 강화되었습니다.우리는 또한 변수인 샘플 프로그램을 작성했습니다.main.그는 자바 문서 참조, 테스트 프로그램 및 교사가 이를 무시한 채 여전히 답이 틀렸다고 반박하는 문서를 작성했다.
이는?main★★★★★★★★★★★★★★★★★?
public class J {
public static void main(String[] args)
{
String main = "The character sequence \"main\" is an identifier, not a keyword or reserved word.";
System.out.println(main);
}
}
이를 통해 컴파일되어 실행되면 다음 출력이 출력됩니다.
The character sequence "main" is an identifier, not a keyword or reserved word.
시퀀스 " " "main는 키워드 또는 예약된 단어가 아닌 식별자입니다.
JLS의 관련 섹션은 3.8입니다.
식별자는 Java 문자와 Java 숫자로 이루어진 무제한 시퀀스이며, 첫 번째 숫자는 Java 문자여야 합니다.
식별자:
키워드, BooleanLiteral 또는 NullLiteral이 아닌 IdentifierChars
식별자 문자:
JavaLetter {JavaLetterOrDigit}
Java Letter:
자바 문자인 유니코드 문자
JavaLetterOrDigit:
자바 문자 또는 숫자인 유니코드 문자
시퀀스 " " "main는 위의 설명에 적합하며 섹션 3.9의 키워드 목록에 없습니다.
시퀀스( 「」)java1234는 같은 이유로 식별자이기도 합니다.)
main유효한 자바 식별자이며 선생님이 틀렸습니다.
관련 매뉴얼은 다음 Java Language Specification에 있습니다.
제3장. "렉시컬 구조", 섹션 3.8. "식별자:
https://docs.oracle.com/javase/specs/jls/se10/html/jls-3.html#jls-3.8
다음과 같이 되어 있습니다.
식별자는 Java 문자와 Java 디짓의 무제한 길이 시퀀스이며, 첫 번째는 Java 문자여야 합니다.식별자는 키워드(「3.9」), 부울 리터럴(「3.10.3」) 또는 늘 리터럴(「3.10.7」)과 같은 철자(유니코드 문자 시퀀스)를 사용할 수 없습니다.그렇지 않으면 컴파일 시 오류가 발생합니다.
즉, 다음과 같은 방법으로 유효한 식별자임을 증명할 수 있습니다.
- java 키워드 목록에서 검색(예: 찾을 수 없습니다!) 또는 단순히 다음 방법으로 검색하십시오.
- 이를 식별자로 사용하여 컴파일 시간 오류가 발생하지 않았는지 확인합니다.
상대방이 대답하는 대로
main 유효한 Java 식별자입니다.java1234.
건 '아까부터'가 '아까부터'가 '아까부터'가 '아까부터'이기인 것 요.main(String[])메서드는 종종1 JVM에 의해 진입점으로 사용됩니다.하지만, 그렇다고 해서 토큰이main그 자체는 식별자로2 사용할 수 없습니다.
사양에 기재되어 있으며, 다음의 선언도 유효합니다.
필드:
private int main;로컬 변수:
String main = "";방법:
void main() { ... }클래스 또는 인터페이스(소문자로 시작하는 클래스 또는 인터페이스 이름은 권장되지 않음):
class main { ... }패키지:
package main;
코멘트에 된 바와 자체는 엔트리 널리 사용되는1 : 「 JVM 」입니다.java툴은 종종 진입점과 같은 방법을 사용합니다.
으로 2가지 이외의 것을 .main(String[]).
부록:여기가 호통을 칠 만한 곳이라고는 생각되지 않지만, 여기 내가 있는 곳이 있어
수정하다 겸손한 의견: 식별자mainjava1234둘 다 동등하게 유효하거나 잘못 취급해야 합니다.을 사용하다
Java 1.8에서 컴파일하면...
public class main {
public String main = "main";
public void main(String main) {
System.out.println("This object is an instance of the class " + this.getClass().getCanonicalName());
System.out.println("The value of the argument \"main\" for this call to the method \"main(String main)\" is " + main);
System.out.println("The value of the field \"main\" is " + this.main);
}
public static void main(String[] args) {
main main = new main();
main.main(main.main + main.main);
}
}
...실행하면 다음과 같은 출력이 생성됩니다.
This object is an instance of the class main
The value of the argument "main" for this call to the method "main(String main)" is mainmain
The value of the field "main" is main
할 수 있는 모든 걸 다 해 봤는데 효과가 있는 것 같아요메인은 유효한 식별자예요
package main;
public class main {
static main main;
String Main;
main(String main) {
Main = main;
}
main(main main) {
System.out.println(main.Main);
}
main main(main main) {
return new main(main);
}
public static void main(main...Main) {
main:
for (main main : Main) {
main = (main instanceof Main) ? new main(main): main.main(main);
break main;
}
}
public static void main(String[] args) {
main = new main("main");
main.main(main, main);
main = main.new Main(main) {
main main(main main) {
return ((Main)main).main();
}
};
main.main(main);
main.main(main,main);
}
abstract class Main extends main {
Main(main main) {
super("main");
}
main main() {
main.Main = "Main";
return main;
}
}
}
?main 「하기 위한 할 수 없습니다.「」메서드는 「메인」메서드를 선언할 수 없습니다.
이런 고전적인 관용구의 경우:
public class Foo{
public static void main(String[] args){
}
}
main을 사용하다또한 명백한 복고 호환성의 이유로 자바에서는 키워드가 되지 않을 것입니다.
이 는요, 이 문제는요.main 식별자? 좋은 식별자요?
First : 컴파일러에 유효하다고 해서 반드시 좋은 것은 아닙니다.
를 들면, 「 」입니다.java1234제안되는 옵션도 유효한 식별자이지만 실제로는 피해야 합니다.
main에는 매우 즉, and executed the the the 에 의해 및 됩니다.이것은, 에 의해서 실행되는 클래스와 jar의 엔트리 포인트 메서드로 사용됩니다.java커맨드 라인
「」를 사용합니다.main java명령줄은 변수 이름으로 사용할 때 오해의 소지가 있거나 클래스 이름이 의미가 있을 수 있습니다.
를 들어, 를 「」라고 합니다.Main할 수 있습니다.
public class Main {
public static void main(String args[]){
Main main = new Main();
// ...
}
}
일반적인 방법으로 자바에서는 여러 문자 또는 "워드"가 컴파일러의 유효한 식별자로 간주되지만 클라이언트 코드에서 사용되는 것은 강하게 권장되지 않습니다(그러나 생성된 코드는 읽을 수 없는 클래스 또는 정말로 오해의 소지가 있는 클래스 등).
예를 들어, 이것은 컴파일러에 유효합니다.
public class Object { // 1
public void foo() {
...
}
}
public class BadChosenIdentifier {
public static void main() { // 2
new BadChosenIdentifier().toString(new Object());
}
public void toString(Object java1234) { // 3, 4
String _result$ = java1234 + " -> to avoid"; // 4
System.out.println(_result$);
}
}
하지만 우리는 원하지 않는다:
- 을 대다
Object되어 있는java.lang) (1) - 을
main()가java맨드22 (2) - 가 되다
Object.toString()((3)자) - 을 붙이기
_,$또는 공유 명명 규칙에 위배되는 놀랍거나 의미 없는 문자(4)를 지정합니다.
유효한 식별자입니까?네.
좋은 식별자입니까?JVM의 기동시에 개시하는 방법 이외의 용도로 사용하고 있는 경우는 제외합니다.
다른 유효한 식별자가 나열됩니까?네.
시험지침에서 가장 좋은 답을 고르라고 했나요?
main완전히 유효합니다.왜냐하면, 다음의 문서로부터:
- "Java 문자와 Java 디짓의 시퀀스이며, 그 중 첫 번째가 Java 문자입니다."
- 키워드가 아닙니다.
- 부울 리터럴이 아닙니다."true" 또는 "false"
- null 리터럴이 아닙니다.
public class Main {
private static String main;
public static void main(String[] main) {
Main.main = main[0];
new Main().main(Main.main);
}
private void main(String main) {
System.out.println(main);
}
}
그 선생님은 메인이 유효한 식별자가 아니라고 가정하거나 단순히 질문을 틀리게 표현하는 사소한 실수를 했다.그는 아마도 "좋은 식별자"라고 말하려고 의도했을 것이다.
하지만 아드님들의 주장을 무시하고 그에 따라 관련 문헌을 확인하고 실험(샘플 프로그램 작성)을 수행하는 그의 과학적 접근을 방해하는 것은 선생님이 해야 할 것과는 정반대입니다.
다.main ★★★★★★★★★★★★★★★★★」java123유효한 식별자, 메인 키워드가 예약 키워드가 아니기 때문에 완전히 사용할 수 있습니다.테스트에서는 적어도 1점 또는 0.5점 정도는 얻을 수 있을 것입니다.
한 단어여야 합니다.즉, 공백은 허용되지 않습니다.
예: mangoprice는 유효하지만 망고 가격은 유효하지 않습니다.
문자(알파벳), 밑줄 또는 $ 기호로 시작해야 합니다.
예: price, _price 및 $price는 유효한 식별자입니다.
키워드는 컴파일러에 특별한 의미를 가지므로 Java의 키워드가 되어서는 안 됩니다.
예: 클래스 또는 보이드 등
숫자로 시작할 수 없지만 숫자는 가운데 또는 끝에 있을 수 있습니다.
예: 5 mangoescost는 유효하지 않고 mango5cost와 mangocost5는 유효합니다.
Java에서 ID의 길이는 65,535자로 지정할 수 있으며 모두 유의합니다.식별자는 대소문자를 구분합니다.그것은 망고와 망고 둘 다 다르게 취급된다는 것이다.모든 대문자, 소문자 또는 혼합 문자를 포함할 수 있습니다.
IDENTIFIER: 클래스 이름, 메서드 이름, 변수 이름...
main은 예약어가 아니므로 위의 설명에 따르면 식별자 main은 유효한 식별자이며 java1234도 마찬가지입니다.위의 설명으로 인해 나머지 옵션은 유효하지 않습니다.
언급URL : https://stackoverflow.com/questions/52264638/is-main-a-valid-java-identifier
'programing' 카테고리의 다른 글
| Django 모델 인스턴스 개체를 복제하여 데이터베이스에 저장하려면 어떻게 해야 합니까? (0) | 2022.10.25 |
|---|---|
| Master와 Slave의 데이터베이스가 다른 경우 Mysql DB를 다시 동기화하려면 어떻게 해야 합니까? (0) | 2022.10.25 |
| Oracle에서 MariaDB에서 쿼리 실행 (0) | 2022.10.25 |
| Ajax를 사용하여 데이터와 파일을 한 형태로 업로드하시겠습니까? (0) | 2022.10.25 |
| Mariadb 구문 오류 1064(42000) (0) | 2022.10.25 |