집 >Java >Java인터뷰 질문들 >자바 기본 면접 질문 (1)
1. ".java" 소스 파일에 여러 클래스(내부 클래스 아님)가 포함될 수 있나요? 제한 사항은 무엇입니까?
여러 클래스를 가질 수 있지만 공개 클래스는 하나만 있을 수 있으며 공개 클래스 이름은 파일 이름과 일치해야 합니다.
(추가 면접 질문 추천: java 면접 질문 및 답변)
2. Java에도 goto가 있나요?
자바의 예약어는 이제 자바에서는 사용되지 않습니다.
3. &와 &&의 차이점에 대해 이야기해 보세요.
& 및 &&는 모두 논리 AND(and)를 나타내는 논리 AND 연산자로 사용할 수 있습니다. 연산자 양쪽의 표현식 결과가 true이면 그렇지 않은 경우 전체 연산 결과가 true입니다. false 이면 결과는 false입니다.
&&에는 단락 기능도 있습니다. 즉, 첫 번째 표현식이 false이면 두 번째 표현식이 더 이상 평가되지 않습니다. 예를 들어 if(str!= null&& !str.equals(s)) 표현식, str이 null인 경우에는 다음 표현식이 실행되지 않으므로, &&가 &로 변경되면 NullPointerException이 발생하지 않습니다. If(x==33 &++y>0) y가 커지면 If(x==33 && ++y>0)는 커지지 않습니다
&는 비트 연산자로도 사용할 수 있습니다. & 연산자 표현식이 부울 유형이 아닌 경우 &는 비트 AND 연산을 나타냅니다. 일반적으로 정수의 하위 4비트를 얻기 위해 정수로 & 연산을 수행합니다. 예를 들어 0x31 & 0x0f의 결과는 다음과 같습니다. 0x01.
4. 현재 JAVA의 다중 중첩 루프에서 벗어나는 방법은 무엇입니까?
Java에서는 여러 루프에서 벗어나고 싶다면 외부 루프 문 앞에 레이블을 정의한 다음 내부 루프 본문의 코드에 레이블이 있는 break 문을 사용하여 외부 루프에서 빠져나올 수 있습니다. .
예:
for(int i=0;i<10;i++){ for(intj=0;j<10;j++){ System.out.println(“i=” + i + “,j=” + j); if(j == 5) break ok; } }
그리고 저는 개인적으로 평소에는 라벨을 사용하지 않지만, 외부 루프 조건식의 결과를 내부 루프 본문 코드로 제어하도록 합니다. 예를 들어 2차원 배열에서 숫자.
int arr[][] ={{1,2,3},{4,5,6,7},{9}}; boolean found = false; for(int i=0;i<arr.length&&!found;i++) { for(intj=0;j<arr[i].length;j++){ System.out.println(“i=” + i + “,j=” + j); if(arr[i][j] ==5) { found =true; break; } } }
(권장 학습: Java 튜토리얼 소개)
5. 스위치 문은 바이트 단위로 동작할 수 있나요, 롱 단위로 동작할 수 있나요?
스위치(e)에서는 e만 가능합니다. 정수 표현식 또는 열거형 상수(더 큰 글꼴)일 수 있습니다. 정수 표현식은 int 기본 유형 또는 Integer 래퍼 유형일 수 있습니다. byte, short 및 char은 암시적으로 int로 변환될 수 있으므로 이러한 유형과 이러한 유형의 패키징 유형은 다음과 같습니다. 또한 가능합니다. 분명히 long 유형이나 String 유형은 모두 switch 구문을 따르지 않으며 암시적으로 int 유형으로 변환될 수 없으므로 switch 문에서 사용할 수 없습니다.
Switch 문을 String에 사용할 수 있는지 여부가 잘못되었습니다. Java는 이미 Java 1.7 이후에 이 쓰기 방법을 지원합니다!
6. short s1= 1; s1 = (s1+1은 int형이고, 등호 왼쪽은 short형이므로 강제로 적용해야 합니다.) short s1 = 1; s1 += 1 ;무슨 문제가 있나요?(아무것도 아님)
짧게 s1= 1; s1 = s1 + 1; s1+1 연산 중에 표현식 유형이 자동으로 승격되므로 결과는 int 유형입니다. 짧은 유형 s1에 할당되면 컴파일러는 유형 캐스트가 필요한 오류를 보고합니다.
짧게 s1= 1; s1 += 1; +=는 Java 언어에서 지정하는 연산자이므로 Java 컴파일러는 이에 대해 특수 처리를 수행하므로 올바르게 컴파일될 수 있습니다.
7. char형 변수에 한자를 저장할 수 있나요?
Char형 변수는 유니코드로 인코딩된 문자를 저장하는 데 사용됩니다. 유형 변수는 한자를 저장할 수 있습니다. 그러나 유니코드 인코딩 문자 집합에 특수 한자가 포함되어 있지 않으면 해당 특수 한자를 이 char 변수에 저장할 수 없습니다. 추가 설명: 유니코드 인코딩은 2바이트를 차지하므로 char 유형 변수도 2바이트를 차지합니다.
8. 2 곱하기 8이 무엇인지 계산하는 가장 효율적인 방법을 사용하세요.
2
9. final 키워드를 사용하여 변수를 수정할 때 참조를 변경할 수 없거나 참조된 개체를 변경할 수 없나요?
final 키워드를 사용하여 변수를 수정한다는 것은 참조 변수는 변경할 수 없지만 참조 변수가 가리키는 객체의 내용은 여전히 변경할 수 있다는 의미입니다. 예를 들어, 다음 명령문의 경우:
finalStringBuffer a=new StringBuffer("immutable");
다음 명령문을 실행하면 컴파일 시간 오류가 보고됩니다.
a=new StringBuffer("");
그러나 다음 명령문을 실행하면 컴파일될 수 있습니다.
a.append(" broken!");
누군가 메서드의 매개 변수를 정의하면 다음 형식을 사용하는 것이 좋습니다. 메소드가 전달된 매개변수 객체를 수정하는 것을 방지합니다.
public void method(final StringBuffer param){ }
사실, 메소드 내에 다음 코드를 추가하여 매개변수 객체를 수정할 수 있습니다.
param.append("a");
(학습) 추천 영상: java 강좌)
10. 정적 변수와 인스턴스 변수의 차이점은 무엇인가요?
在语法定义上的区别:静态变量前要加static关键字,而实例变量前则不加。
在程序运行时的区别:实例变量属于某个对象的属性,必须创建了实例对象,其中的实例变量才会被分配空间,才能使用这个实例变量。静态变量不属于某个实例对象,而是属于类,所以也称为类变量,只要程序加载了类的字节码,不用创建任何实例对象,静态变量就会被分配空间,静态变量就可以被使用了。总之,实例变量必须创建对象后才可以通过这个对象来使用,静态变量则可以直接使用类名来引用。
例如,对于下面的程序,无论创建多少个实例对象,永远都只分配了一个staticVar变量,并且每创建一个实例对象,这个staticVar就会加1;但是,每创建一个实例对象,就会分配一个instanceVar,即可能分配多个instanceVar,并且每个instanceVar的值都只自加了1次。
public class VariantTest{ publicstatic int staticVar = 0; publicint instanceVar = 0; publicVariantTest(){ staticVar++; instanceVar++; System.out.println(staticVar +instanceVar); } }
위 내용은 자바 기본 면접 질문 (1)의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!