구조 함수, 구조 코드 블록 부분 견해
구조 함수, 구조 코드 블록 부분 견해
어제 시스템은 구조 함수, 구조 코드 블록에 대한 지식을 배웠고, 지금은 배운 지식을 정리했다. 우선 이 부분의 코드를 먼저 보자.
package com.imooc.concurrent;
public class Demo1 {
public Demo1() {
// TODO Auto-generated constructor stub
i=30000;
}
int i =10000;
public static void main(String[] args) {
Demo1 d1 =new Demo1();
Demo1 d2 =new Demo1();
Demo1 d3 =new Demo1();
System.out.println(d1.i);
}
}
위 코드에서 보듯이 제 첫 번째 반응은 오류가 발생할 수 있지만 프로그램이 실행된 결과는 30000입니다. 저희는 코드에 대한 역컴파일(역컴파일 명령(jdk8.0 버전):javap -l -c -p Demo1)을 통해 실행 결과는
Compiled from "Demo1.java"
public class com.imooc.concurrent.Demo1 {
int i;
public com.imooc.concurrent.Demo1();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: aload_0
5: sipush 10000
8: putfield #2 // Field i:I
11: aload_0
12: sipush 30000
15: putfield #2 // Field i:I
18: return
LineNumberTable:
line 5: 0
line 9: 4
line 7: 11
line 8: 18
}
우리는 프로그램이 먼저 성명 부수문구인 int i = 10000을 실행한 것을 발견했다. 이어서 아래의 코드를 다시 보았다
package com.imooc.concurrent;
public class Demo1 {
public Demo1() {
i=30000;
}
int i =10000;
{
i=20000;
}
public static void main(String[] args) {
Demo1 d1 =new Demo1();
Demo1 d2 =new Demo1();
Demo1 d3 =new Demo1();
System.out.println(d1.i);
}
}
역컴파일 결과:
Compiled from "Demo1.java"
public class com.imooc.concurrent.Demo1 {
int i;
public com.imooc.concurrent.Demo1();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: aload_0
5: sipush 10000
8: putfield #2 // Field i:I
11: aload_0
12: sipush 20000
15: putfield #2 // Field i:I
18: aload_0
19: sipush 30000
22: putfield #2 // Field i:I
25: return
LineNumberTable:
line 5: 0
line 8: 4
line 10: 11
line 6: 18
line 7: 25
우리는 위의 실례를 통해 구조 함수가 존재할 때 초기 부수 변수가 처음으로 실행된다는 것을 발견했다. 이 초기 부수 문장을 어디에 두든지 구조 함수는 항상 마지막으로 실행된다. 당신이 이 함수를 어디에 두든지 다음에 현식 구조 함수를 제거한 후에 우리는 아래의 코드를 본다.
public class Demo1 {
{
i=20000;
}
int i =10000;
public static void main(String[] args) {
Demo1 d1 =new Demo1();
Demo1 d2 =new Demo1();
Demo1 d3 =new Demo1();
System.out.println(d1.i);
}
}
프로그램이 실행된 결과는 10000입니다. 우리는 역컴파일을 거친 후
Compiled from "Demo1.java"
public class com.imooc.concurrent.Demo1 {
int i;
public com.imooc.concurrent.Demo1();
Code:
0: aload_0
1: invokespecial #1 // Method java/lang/Object."":()V
4: aload_0
5: sipush 20000
8: putfield #2 // Field i:I
11: aload_0
12: sipush 10000
15: putfield #2 // Field i:I
18: return
LineNumberTable:
line 3: 0
line 10: 4
line 12: 11
우리는 프로그램이 순서대로 집행되는 것을 발견했기 때문에 현식 구조 함수가 존재하지 않을 때 우리의 프로그램은 순서대로 집행된다.
총결산
비고
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.