이 기사는 Java 문자열 연산을 분석하기 위해 javap를 사용하는 방법에 대한 자세한 설명을 제공합니다. 여기에는 특정 참조 값이 있으므로 도움이 될 수 있습니다.
간단한 문자열 할당 작업을 위한 이 Java 코드 줄을 살펴보겠습니다.
String a = "i042416";
명령줄을 사용하여 바이트코드를 보려면 다음 코드 줄이 포함된 Java 클래스를 디컴파일하세요.
javap -v Constant.ConstantFolding
문자열 "i042416"이 Java 컴파일러에 의해 상수 풀에 추가된 것을 볼 수 있습니다.
Java 코드 String a = "i042416"은 다음 두 문장의 바이트코드로 번역됩니다. #🎜🎜 #
ldc #16: 먼저 JVM의 기본 네이티브 메소드 StringTable::intern이 호출되어 다음의 내부 저장소 구현을 생성합니다. 문자열 문자[ ]. 그런 다음 ldc #16을 실행하여 상수 풀에 있는 상수 코드명 #16을 스택에 로드합니다(예: i042416). 2. astore_1: "i042416"의 참조를 일련 번호 1의 로컬 변수(즉, 우리 코드의 로컬 변수 a)에 저장합니다. 조금 더 복잡한 예를 살펴보겠습니다. 문자열 접합 작업을 수행합니다.
String aa1 = "i042416"; String aa2 = "jerrywang"; String aa3 = "i042416" + "jerrywang";컴파일 단계에서 컴파일러 바이트가 두 문자열 상수의 값을 이어붙이고 결과 "i042416jerrywang"이 변수 aa3에 새 문자열로 저장되는 것을 볼 수 있습니다. 상수, 상수 풀의 코드명 #21입니다.
# 🎜 🎜#그러므로 변수 aa1과 aa3은 실제로 상수 풀에 있는 동일한 상수를 가리키므로 ==와 직접 비교하는 경우에도 true가 반환됩니다.
String aa1 = "i042416jerrywang"; String aa2 = "jerrywang"; String aa3 = "i042416" + "jerrywang"; System.out.println(aa1 == aa3);
위 내용은 javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!