1. Java에는 Goto 진술이 없습니다. GOTO 진술을 많이 사용하면 프로그램의 가독성과 유지 관리가 줄어들므로 Java 언어는 GOTO의 사용을 취소합니다. 동시에, GOTO를 스스로 사용하는 프로그래머로 인한 혼란을 피하기 위해 Java 언어는 여전히 GOTO를 키워드로 정의하지만 구문을 정의하지 않으므로 "예약 된 단어"라고합니다.
2 IDE에서는 True, False 및 Null이 다른 색상으로 표시되지만 문자열 유형의 ABC와 마찬가지로 키워드가 아니라 "문자 상수"입니다.
3 컴파일러가 .java 파일을 컴파일하면 "$"가 최상위 유형의 커넥터와 하단 레벨 유형의 커넥터로 컴파일되므로 이름을 정의 할 때 $를 사용하지 마십시오. 다음 예를 참조하십시오.
컴파일 (javac test3.java)이 코드를 컴파일 할 때 컴파일러는 다음 오류를보고합니다 : test.java:12 : 오류 : 클래스 복제 : com.javastack.test.outer.inner class inner { ^
4 유니 코드 탈출 문자는 프로그램을 구문 분석하기 전에 매우 일찍 처리됩니다. 예를 들어:
이 두 줄의 코드 컴파일 오류는 프로그램에서 발생합니다. 이 두 개의 유니 코드 코드는 각각 "라인 랩"과 "캐리지 리턴"을 나타냅니다. 컴파일러가 컴파일되면 코드는 다음과 같습니다.
5 유니 코드 코드는 16 비트 문자를 사용하여 인코딩되며 Java의 Char 유형으로 표시됩니다. 유니 코드는 이제 백만 문자로 확장되었으며 16 비트 한도를 초과하는 캐릭터는 보완 문자가됩니다. 모든 보완 문자는 문자 상수로 표시 될 수 없습니다.
6 짧은 바이트 인 경우 Char는 작업에 참여하면 결과는 int 유형이며 상위 유형과 동일하지 않습니다. 변수가 유형 바이트, 짧은 및 바이트 인 경우 컴파일 시간에서 상수가 할당되고 상수가 변수의 값 범위를 초과하지 않으면 컴파일러는 암시 적 수축 변환을 수행 할 수 있습니다. 이 암시 적 수축 변환은 수축 변환이 변수 할당에만 적용되기 때문에 메소드 호출 문, 즉 메소드 호출 중에 전달되는 매개 변수에 적용되기 때문에 안전합니다. (자세한 내용은 Java의 기본 유형 변환의 작은 문제를 참조하십시오)
7 문자 유형은 서명되지 않은 유형입니다. 따라서 Char와 Short 또는 Char 및 Byte 사이의 변환은 유형 변환을 사용하여 표시해야합니다. 바이트에서 char로의 전환으로의 전환은 매우 특별합니다. 즉, 변환이 바이트로 먼저 확장 된 다음 숯으로 축소됩니다.
8 정수 데이터 간의 확장 된 변환에서, 피연산자가 char 유형 (서명되지 않은 유형) 인 경우 서명되지 않은 확장이 수행되고 확장 비트가 0 인 경우, 피연산자가 바이트 인 경우 (서명 된 유형) 서명 된 확장이 수행되며, 팽창 비트는 변수의 부호 비트입니다.
9 정수 데이터 사이의 수축 변환은 단순히 다른 처리를 수행하지 않고도 높은 비트를 자르고 버리는 것입니다.
10 0.1+0.2는 0.3.system.out.println ((Double) 0.1+ (double) 0.2)와 같지 않습니다. 이 명령문의 출력 결과는 0.30000000000000000000000000입니다. 컴퓨터는 바이너리를 사용하여 데이터를 저장하고 이진에서 정확하게 표현할 수 없기 때문에 소수점 소수를 사용하는 것처럼 1/3을 정확하게 나타내는 것과 마찬가지로 이진에서 정확하게 표현할 수 없습니다 (실제로 대부분의 소수점은 근사치입니다). 대부분의 부동 소수점 유형은 정수 유형으로 정확하지 않고 컴퓨터에 대략 값 만 저장합니다. 또 다른 예는 Dead Loop입니다 : for (float f = 10.1f; f! = 11; f+= 0.1f) {}
11 플로트 유형은 7 ~ 8 개의 상당한 숫자를 유지할 수 있지만 이중 유형은 15 ~ 16 개의 상당한 숫자를 유지할 수 있습니다. 따라서 int 유형 또는 긴 유형의 값이 유효한 이중 또는 플로트 수보다 많으면 값의 가장 유의 한 비트 중 일부가 손실되어 정확도가 손실됩니다. 현재 IEEE754 최근 반올림 모드는 정수 값에 가장 가까운 부동 소수점 값을 추출하는 데 사용됩니다. 정수에서 플로팅 포인트 유형으로의 변환은 확장 된 변환이지만 값이 크거나 작을 때 (절대 값이 클 경우) 특정 정확도 손실이 발생합니다.
12 I ++ j를 계산하는 방법? C/C ++는 하드웨어 구조의 구현에 의존하기 때문에이 질문은 C/C ++에서 논의하는 것이 그다지 의미가 없습니다). 그러나 Java에서는이 결과가 고정되어 있으며 하드웨어 환경과 플랫폼의 영향을받지 않습니다). 답변 : 탐욕 규칙에 따르면 Front + + +는 + +보다 낫고 결과는 (i ++) + j입니다.
13 I ++ 및 ++ I는 실제로 +1 먼저 +1이고 할당됩니다. ++ i, 할 말이 없습니다. I ++, J = i ++ 복용; 예를 들어, 기본 수준에서의 구현은 다음과 같습니다. temp = i; i = i + 1; j = 온도; 따라서 i = 15; i = i ++; 이 표현의 결과는 15입니다.
14 +0 및 -0 플로팅 포인트 유형 변수 저장에서 부호 비트가 다릅니다. -0 및 +0이 부동 소수점 유형 (예 : 부서 및 남은 작업)의 관련 작업에 참여하면 다른 결과를 생성 할 수 있습니다.
플로팅 포인트의 위상 분열 및 균형 계산은 위상 분열 및 정수의 균형 계산과 다릅니다. 제수가 0이면 부동 소수점 조작은 ArithmeticeXception 예외를 생성하지 않습니다.
16 문자열 클래스는 비전이 불가능한 클래스이며, 일단 객체가 만들어지면 파괴 될 수 없습니다. 문자열 클래스에서 문자 시퀀스를 수정하는 것처럼 보이는 메소드는 실제로 자체 객체를 수정하는 대신 새로 생성 된 문자열 객체를 반환합니다.
17 문자열 객체는 불변이기 때문에 스레드 안전하고 공유를 위해 자유롭게 구현할 수 있습니다.
18 문자열 클래스 내에서 문자 배열 (char [])은 문자 순서를 유지하는 데 사용됩니다. 문자열의 최대 길이는 문자 배열의 최대 길이입니다. 이론적으로, 최대 길이는 유형 int의 최대 값, 즉 2147483647입니다. 실제로, 얻을 수있는 최대 값은 일반적으로 이론적 최대 값보다 작습니다.
19 Main () 메소드는 기본적으로 성능 동작 측면에서 다른 방법과 동일합니다. 과부하, 호출, 상속, 다른 방법으로 숨겨 지거나 유형 매개 변수와 예외를 던질 수 있습니다. 또한 프로그램의 반영을 통해 주요 방법 (또는 기타 방법)을 호출 할 수 있습니다.
20 둘 이상의 메소드의 이름이 동일하고 매개 변수 목록이 다르면 이러한 메소드는 과부하를 구성합니다. 오버로드 된 메소드는 매개 변수 목록에 해당하는 유형 및 매개 변수 수에 따라 구별 될 수 있습니다. 그러나 매개 변수의 이름, 메소드의 리턴 유형, 예외 목록 및 메소드의 유형 매개 변수는 과부하 된 메소드를 구별하기위한 조건으로 사용할 수 없습니다.
21 전화를 선택하는 방법, 주문은 다음과 같습니다.
22 재 작성과 숨겨진의 필수 차이점은 다시 쓰기가 동적으로 바인딩되고 관련 클래스의 구성원은 런타임 참조에 의해 지적 된 실제 유형에 따라 결정된다는 것입니다. 은신처는 정적으로 바인딩되며 통화의 관련 구성원은 컴파일 시간에 참조 된 정적 유형을 기반으로 결정됩니다. 다시 말해서, 서브 클래스가 상위 클래스의 메소드를 대체하는 경우, 상위 클래스의 참조가 자식 클래스 객체를 가리키면 하위 클래스 메소드가 부모 클래스의 참조를 통해 호출됩니다. 자식 수업이 부모 클래스의 메소드 (회원 변수)를 숨기면 부모 클래스의 메소드 (회원 변수)가 여전히 부모 클래스에 대한 참조를 통해 호출됩니다.
23 생성자를 재귀 적으로 불린다. 서브 클래스의 생성자는 객체 클래스의 생성자가 호출 될 때까지 부모 클래스의 생성자를 호출합니다.
24 생성자는 객체를 생성하지 않습니다. 생성자는 새로운 것을 사용하여 객체를 생성 할 때 시스템에 의해 호출되며 클래스의 인스턴스 멤버를 초기화하는 데 사용됩니다. 순서대로 객체가 먼저 생성 된 다음 생성자가 호출됩니다. (생성자는 새 개체를 생성하지 않습니다)
25 기본 생성자가 비어 있지 않습니다. 이 생성자는 부모 클래스의 매개 변수가없는 생성자를 호출하며 인스턴스 멤버 변수의 초기화를 수행 할 수 있습니다. 따라서 기본 생성자는 적어도 상위 클래스의 생성자를 호출하며 인스턴스 변수 선언 초기화 및 인스턴스 초기화 블록을 포함하여 생성자에서 실행 된 더 많은 작업을 수행 할 수 있습니다.
26 == 또는! = 연산자의 두 피연산자의 유형이 기본 데이터 유형 중 하나이고 다른 하나는 래퍼 클래스 참조 유형이고, 참조 유형을 기본 데이터 유형으로 무너 뜨린 다음 두 기본 데이터 유형의 값이 동일한 지 비교할 때.
27 Java에서는 배열이 클래스이며 배열로 선언 된 기준 변수는 배열 유형의 객체를 가리 킵니다. 모든 배열은 객체 클래스를 상속하고 java.lang.clonable 및 java.io.serializable 인터페이스를 구현합니다. 배열의 멤버에는 가변 길이 (암시 적으로 존재 함)와 객체 클래스에서 상속 된 멤버가 포함됩니다. 클로닝 가능 및 직렬화 가능한 것은 두 개의 표시된 인터페이스이며, 이러한 인터페이스에서 명시 적으로 선언되지 않습니다.
28 인터페이스는 완전히 추상적 인 디자인이며 인스턴스화 할 수 없습니다. 새로운 방식으로 생성 된 변명 유형은 실제로 인터페이스 유형을 구현하는 익명 클래스를 만드는 것입니다.
29 두 인터페이스가 동일한 변수 X를 선언하면 인터페이스가 두 인터페이스를 동시에 상속하거나 특정 클래스가 동시에 두 인터페이스를 구현할 때 컴파일 오류가 발생합니다.
30 동일한 이름의 메소드 M이 두 인터페이스에서 선언되고 두 메소드가 과부하를 구성하지 않으면 인터페이스가 동시에 두 인터페이스를 상속 할 수 있거나 특정 클래스가 두 인터페이스를 동시에 상속 할 수있을 때, 두 개의 M 메소드의 서브 서명이 있어야하는 방법이 있어야하며, 반환 유형이되어야합니다. 두 m 방법의 리턴 유형.