[일 일 1 문제] 자바 포장 유형 포장 박스 해체 기초 면접 문제

6741 단어 자바
선언: 무엇이 포장 과 상 자 를 뜯 는 것 입 니까?자동 으로 수치 에 따라 대응 하 는 Integer 대상 을 만 듭 니 다. 이것 이 바로 포장 입 니 다.자동 으로 포장 기 유형 을 기본 데이터 형식 으로 바 꾸 는 것 이 바로 상 자 를 뜯 는 것 이다.
1. 다음 프로그램의 실행 결 과 는 무엇 입 니까?
Longl1=128L;
Longl2=128L;
System.out.print(l1==l2)//1
System.out.print(l1==128L);//2

System.out.print(l3==l4);//3
System.out.print(l3==127L);//4

답: 주석 1 의 문구 에 대해 Long 포장 유형 상수 cache 는 - 128 에서 127 사이 이기 때문에 l1 과 l2 변 수 는 두 개의 대상 이 고 = = 비교 하 는 것 은 대상 의 주소 이기 때문에 false 로 인쇄 합 니 다.
주석 2 의 문 구 는 포장 유형 이 표현 식 에 있 고 표현 식 중 에 적어도 하 나 는 포장 유형 이 아니 기 때문에 Longl 1 = = 128 L 중 l1 * * * 자동 으로 상 자 를 뜯 는 것 이 기본 유형 비교 * * 로 퇴화 되 었 기 때문에 수치 가 true 로 비교 되 었 습 니 다.
주석 3 의 문구 에 대해 Long 포장 유형 - 128 에서 127 사이 의 값 은 상수 탱크 에 유지 되 기 때문에 l3 와 l4 는 같은 대상 을 인용 하여 true 를 인쇄 합 니 다.
주석 4 의 문 구 는 주석 2 문장 과 유사 하기 때문에 true 로 인쇄 합 니 다.
2. 자바 가 구문 i > j | i < = j 결 과 를 false 로 만 드 는 i, j 값 이 있 습 니까?
答:存在,**java的数值NaN代表notanumber,无法用于比较**,例如使**i=Double.NaN;j=i;**最后i==j的结果依旧为false,这是一道非常变态的题,巨坑,谁特么会这么用。

3. 자바 1.5 의 자동 포장 해체 체 제 는 컴 파일 특성 입 니까? 가상 컴퓨터 가 실 행 될 때의 특성 입 니까?이별 은 어떻게 이 루어 졌 습 니까?
답: java 1.5 에서 시 작 된 자동 컨테이너 해체 메커니즘 은 사실 컴 파일 할 때 자동 으로 교 체 됩 니 다. 컨테이너 단 계 는 자동 으로 valueOf 방법 으로 교체 되 고 컨테이너 단 계 는 자동 으로 xxxValue 방법 으로 교 체 됩 니 다.
Integer, Short, Byte, Character, Long 형식의 value Of 방법 에 대해 매개 변 수 는 - 128 ~ 127 사이 의 값 이면 내부 캐 시 풀 에 존재 하 는 대상 의 인용 으로 직접 돌아 가 고 매개 변 수 는 다른 범위 값 이면 새 대상 으로 돌아 갑 니 다.
한편, Double, Float 유형 은 Integer 유형 과 유사 하 며 Double, Float 의 value Of 방법 을 호출 하지만 들 어 오 는 매개 변수 값 이 얼마 든 new 대상 이 이 수 치 를 표현 합 니 다. 특정한 범위 내 에 있 는 정형 수치의 개 수 는 유한 하지만 부동 소수점 은 그렇지 않 기 때 문 입 니 다.
4. 질문: 다음은 자바 포장 유형, 자동 분해, 포장 문제 입 니 다. 실행 결 과 를 쓰 시 겠 습 니까?
Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
System.out.println(i1==i2);//true
System.out.println(i3==i4);//false


Double i1 = 100.0;
Double i2 = 100.0;
Double i3 = 200.0;
Double i4 = 200.0;
System.out.println(i1==i2);//false
System.out.println(i3==i4);//false

//在Boolean中定义了2个静态成员属性
Boolean i1 = false;
Boolean i2 = false;
Boolean i3 = true;
Boolean i4 = true;
System.out.println(i1==i2);//true
System.out.println(i3==i4);//true

Integer a = 1;
Integer b = 2;
Integer c = 3;
Integer d = 3;
Integer e = 321;
Integer f = 321;
Long g = 3L;
Long h = 2L;
System.out.println(c==d);//true 比较cache
System.out.println(e==f);//false 比较引用
System.out.println(c==(a+b));//true 比较值
System.out.println(c.equals(a+b));//true 比较值
System.out.println(g==(a+b));//true //比较值
System.out.println(g.equals(a+b));//false //比较引用(对于包装器类型,equals方法并不会进行类型转换)
System.out.println(g.equals(a+h));//true比较引用

Integer  a = 444;
int b = 444;
System.out.println(a==b);    //true 比较值
System.out.println(a.equals(b));//true比较值

정 답 해석: 양쪽 모두 포장 유형 에 대한 비교 = = 비교 하 는 것 은 인용 이 고 equals 는 값 을 비교 합 니 다.양쪽 에 한쪽 은 표현 식 (산수 연산 포함) 이 고 = = 비교 하 는 것 은 수치 (자동 으로 상 자 를 뜯 는 과정) 이 며 포장 유형 equals 방법 에 대해 서 는 유형 변환 을 하지 않 습 니 다.
5. 자바 문구 Integeri=1;i+=1; 는 어떤 일 을 했 습 니까?
우선 Integer i = 1;자동 포장 (Integer. valueOf () 방법 으로 int 포장 을 Integer 형식 으로) 한 다음 i + = 1;먼저 Integer 형식의 i 자동 으로 상 자 를 int (Integer. intValue () 방법 으로 Integer 를 int 로 분해) 하고 덧셈 이 실 행 된 i 를 완성 한 후 Integer 형식 으로 포장 합 니 다.
6. 다음 프로그램의 실행 결 과 는 무엇 입 니까?
Integer i1 = new Integer(127);
Integer i2 = new Integer(127);
System.out.println(i1 == i2);//false
System.out.println(i1.equals(i2));//true

new Integer (xxx) 와 같은 대상 을 만 드 는 방법 은 자동 으로 포장 하 는 것 이 아니 라 cache 를 사용 하지 않 았 기 때문에 i1 = = i2 는 false 입 니 다.
7. Integer i = new Integer (xxx) 와 Integer i = xxx 에 대해 이야기 합 니 다.이 두 가지 방식 의 차이.
1) 첫 번 째 방식 은 자동 포장 과정 을 촉발 하지 않 는 다.두 번 째 방식 은 촉발 된다.2) 집행 효율 과 자원 점용 의 차이.두 번 째 방식 의 집행 효율 과 자원 점용 은 일반적인 상황 에서 첫 번 째 상황 보다 우수 하 다.
우 리 는 매일 한 문제 씩

좋은 웹페이지 즐겨찾기