>  기사  >  Java  >  javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

不言
不言앞으로
2018-10-22 15:23:262012검색

이 기사는 Java 문자열 연산을 분석하기 위해 javap를 사용하는 방법에 대한 자세한 설명을 제공합니다. 여기에는 특정 참조 값이 있으므로 도움이 될 수 있습니다.

간단한 문자열 할당 작업을 위한 이 Java 코드 줄을 살펴보겠습니다.

String a = "i042416";

명령줄을 사용하여 바이트코드를 보려면 다음 코드 줄이 포함된 Java 클래스를 디컴파일하세요.

javap -v Constant.ConstantFolding

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

문자열 "i042416"이 Java 컴파일러에 의해 상수 풀에 추가된 것을 볼 수 있습니다.

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

Java 코드 String a = "i042416"은 다음 두 문장의 바이트코드로 번역됩니다. #🎜🎜 #

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

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입니다.

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명# 🎜 🎜#그러므로 변수 aa1과 aa3은 실제로 상수 풀에 있는 동일한 상수를 가리키므로 ==와 직접 비교하는 경우에도 true가 반환됩니다.

String aa1 = "i042416jerrywang";
String aa2 = "jerrywang";
String aa3 = "i042416" + "jerrywang";
System.out.println(aa1 == aa3);

javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명

위 내용은 javap를 사용하여 Java 문자열 작업을 분석하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 segmentfault.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제