자바,너 몰래 하 는 거.
35567 단어 javaSE
역 컴 파일 도구 제 가 사용 하 는 것 은 JDK 1.5 중 입 니 다.높 은 버 전에 서 클래스 의 기본 계승 을 볼 수 없습니다.
이것 은 기본 클래스 의 소스 파일 입 니 다.
public class Demo {
public static void main(String[] args) {
System.out.println("HelloWorld!");
}
}
역 컴 파일 후의
# javap -c Demo
Compiled from "Demo.java"
public class Demo extends java.lang.Object{
public Demo();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: getstatic #2; //Field java/lang/System.out:Ljava/io/PrintStream;
3: ldc #3; //String helloWorld!
5: invokevirtual #4; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
8: return
}
역 컴 파일 후 볼 수 있 습 니 다.
java.lang.Object
합 니 다.이것 도 Object 가 다 중 태 를 이용 하여 임의의 대상 을 받 아들 일 수 있 는 이유 입 니 다super(...)
은 반드시 첫 번 째 줄 코드 임 에 주의해 야 한다.쓰 지 않 더 라 도super(...)
그녀 는 부모 류 의 빈 구 조 를 기본 으로 호출 할 것 이다다음은 소스 코드 를 보 겠 습 니 다.
import java.util.Arrays;
import java.util.List;
public class Demo {
public static void main(String[] args) {
List<String> list = Arrays.asList("Java", "JavaME", "JavaSE", "JavaEE");
String data = "";
for (String s : list) {
data += s + ",";
}
System.out.println(data);
}
}
역 컴 파일 후의 결 과 는?
# javap -c Demo
Compiled from "Demo.java"
public class Demo extends java.lang.Object{
public Demo();
Code:
0: aload_0
1: invokespecial #1; //Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_4
1: anewarray #2; //class java/lang/String
4: dup
5: iconst_0
6: ldc #3; //String Java
8: aastore
9: dup
10: iconst_1
11: ldc #4; //String JavaME
13: aastore
14: dup
15: iconst_2
16: ldc #5; //String JavaSE
18: aastore
19: dup
20: iconst_3
21: ldc #6; //String JavaEE
23: aastore
24: invokestatic #7; //Method java/util/Arrays.asList:([Ljava/lang/Object;)Ljava/util/List;
27: astore_1
28: ldc #8; //String
30: astore_2
31: aload_1
32: invokeinterface #9, 1; //InterfaceMethod java/util/List.iterator:()Ljava/util/Iterator;
37: astore_3
38: aload_3
39: invokeinterface #10, 1; //InterfaceMethod java/util/Iterator.hasNext:()Z
44: ifeq 86
47: aload_3
48: invokeinterface #11, 1; //InterfaceMethod java/util/Iterator.next:()Ljava/lang/Object;
53: checkcast #2; //class java/lang/String
56: astore 4
58: new #12; //class java/lang/StringBuilder
61: dup
62: invokespecial #13; //Method java/lang/StringBuilder."":()V
65: aload_2
66: invokevirtual #14; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
69: aload 4
71: invokevirtual #14; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
74: ldc #15; //String ,
76: invokevirtual #14; //Method java/lang/StringBuilder.append:(Ljava/lang/String;)Ljava/lang/StringBuilder;
79: invokevirtual #16; //Method java/lang/StringBuilder.toString:()Ljava/lang/String;
82: astore_2
83: goto 38
86: getstatic #17; //Field java/lang/System.out:Ljava/io/PrintStream;
89: aload_2
90: invokevirtual #18; //Method java/io/PrintStream.println:(Ljava/lang/String;)V
93: return
}
역 컴 파일 에서 볼 수 있다.
for (String s : list) {}
java.util.Iterator
Iterator
중의 방법사용자 정의 매 거 진 클래스
public enum Demo {
SUCCESS(0, " "),
ERROR(1, " ");
private Integer code;
private String msg;
Demo(Integer code, String msg) {
this.code = code;
this.msg = msg;
}
}
역 컴 파일 매 거 후 볼 수 있 습 니 다.
# javap Demo
Compiled from "Demo.java"
public final class Demo extends java.lang.Enum{
public static final Demo SUCCESS;
public static final Demo ERROR;
public static final Demo[] values();
public static Demo valueOf(java.lang.String);
static {};
}
역 컴 파일 결과 에서 볼 수 있 습 니 다.
final
클 라 스 가 기본 적 으로 계승 할 것 이다java.lang.Enum
사용자 정의 주석
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface Demo {
String value();
}
역 컴 파일 결과
# javap Demo
Compiled from "Demo.java"
public interface Demo extends java.lang.annotation.Annotation{
public abstract java.lang.String value();
}
역 컴 파일 결과 에서 볼 수 있다.
java.lang.annotation.Annotation
상식 이 좀 있어 요.
Java
기본 가 져 오기java.lang
패키지Integer,Object,System
등 종 류 를 사용 할 때 수 동 가이드 백System.out.println();
시 대상 에 기본적으로 호출 되 는toString();
방법HashSet
저장 할 때 대상 에 기본적으로 호출 되 는hashCode()::equals()
방법HashSet
요소 의 중복 을 판단 할 때hashCode()
의 hash 알고리즘 을 통 해 중복 되 지 않 는 데 이 터 를 선별 했다equals()
의 도움 을 받 아 중복 여 부 를 판단 하고 중복 되면 입력 하지 않 습 니 다HashMap
에서 hash 값 이 같 지 않 으 면 hash 표 에서 하나의 hash 체인TreeSet
저장 할 때 요소 실현Comparable
인 터 페 이 스 를 요구한다.TreeSet
나무 모양 구 조 를 사용 하여java.lang.Comparable#compareTo
방법의 반환 값0
,<0
,>0
]Integer 의 자동 패키지 와 catch
먼저 소스 코드 를 보 겠 습 니 다.
Integer val1 = 1;
Integer val2 = 1;
System.out.println(val1 == val2);
Integer val3 = 996;
Integer val4 = 996;
System.out.println(val3 == val4);
역 컴 파일 결과
# javap -c Demo
Compiled from "Demo.java"
public class Demo {
public Demo();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: return
public static void main(java.lang.String[]);
Code:
0: iconst_1
1: invokestatic #2 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
4: astore_1
5: iconst_1
6: invokestatic #2 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
9: astore_2
10: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;
13: aload_1
14: aload_2
15: if_acmpne 22
18: iconst_1
19: goto 23
22: iconst_0
23: invokevirtual #4 // Method java/io/PrintStream.println:(Z)V
26: sipush 996
29: invokestatic #2 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
32: astore_3
33: sipush 996
36: invokestatic #2 // Method java/lang/Integer.valueOf:(I)Ljava/lang/Integer;
39: astore 4
41: getstatic #3 // Field java/lang/System.out:Ljava/io/PrintStream;
44: aload_3
45: aload 4
47: if_acmpne 54
50: iconst_1
51: goto 55
54: iconst_0
55: invokevirtual #4 // Method java/io/PrintStream.println:(Z)V
58: return
}
Integer.valueOf()
방법valueOf()
의 소스 코드 를 통 해 Integer-128~127
캐 시Integer.valueOf()의 실현
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
Integer 캐 시 핵심 구현
private static class IntegerCache {
static final int low = -128;
static final int high;
static final Integer cache[];
static {
// high value may be configured by property
int h = 127;
String integerCacheHighPropValue =
sun.misc.VM.getSavedProperty("java.lang.Integer.IntegerCache.high");
if (integerCacheHighPropValue != null) {
try {
int i = parseInt(integerCacheHighPropValue);
i = Math.max(i, 127);
// Maximum array size is Integer.MAX_VALUE
h = Math.min(i, Integer.MAX_VALUE - (-low) -1);
} catch( NumberFormatException nfe) {
// If the property cannot be parsed into an int, ignore it.
}
}
high = h;
cache = new Integer[(high - low) + 1];
int j = low;
for(int k = 0; k < cache.length; k++)
cache[k] = new Integer(j++);
// range [-128, 127] must be interned (JLS7 5.1.7)
assert IntegerCache.high >= 127;
}
private IntegerCache() {}
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
ContentResolver를 사용하여 커뮤니케이션에 액세스하는 ContentProvider1. Content Provider는 안드로이드의 4대 구성 요소 중 하나로 위에서 설명한 바와 같이 만약에 콘텐츠 공급자가 다른 응용 프로그램에 접근한다면 이 글은 콘텐츠 해석자로 시스템의 통신록 콘텐츠 공급자에 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.