본문 바로가기

바이트코드

(4)
[Java] 지역변수 이름과 죄수번호...? 자바관련 카페에 올라온 질문. 질문 String str = null; 이 상태는 str이 객체를 참조하지 않고 스택영역에 str변수 이름으로 null값이 세팅되었다면 String name = ""; 이 상태는 힙영역에 빈 공간으로 객체가 생성되고 주소 번지가 스택영역에 리턴이 되는건지요.. 슬기로운 감빵생활과 자바 자바에서 지역변수의 이름은 런타임시에 어떻게 될까. 첫 코드에서 str 이라는 이름의 변수 이름은 계속 남아 있을까? tvN에서 했던 슬기로운 감빵생활을 보면서 나는 자바의 지역변수와 유사한 점이 많다고 생각했다. 사회에서 '김제혁'이라고 불리던 이름이 형무소에 가면서 '7102'라는 죄수번호라는 신원을 구별하는 번호로 바뀐다. 자바코드에서는 존재하던 변수이름은 컴파일이 되면서 비슷하게 숫자로..
[Java] count++, count+=1, count = count + 1 차이는 아래와 같은 반복문이 있었는데 public class ForSumFrom1To100Example { public static void main(String[] args) { int sum = 0; for (int i = 1; i
[Java] String: literal vs new 자바 기초중에 하나이다. 자바에는 문자열을 생성하는 방법이 크게 두가지가 있다. 리터럴(literal) 방식이고 다른 하나는 new 생성자를 이용한 방법이다. 코드로 설명하는 것이 이해가 빠를 것 같다. String str1 = "a"; String str2 = new String("a"); str1 이 리터럴 방식이고, str2 가 생성자를 이용한 방식이다. 퀴즈. 둘 중에 안티패턴은? 답부터 이야기하면 바로 생성자를 이용한 방식이다. 왜 그런지는 아래에서 살펴 볼 수 있다. String Internal 위의 자바코드를 읽을 수 있는 바이트 코드로 나타내보면 아래와 같다. ldc "a" astore_1 new java/lang/String dup ldc "a" invokespecial java/lang..
[Java] 인스턴스 변수 초기화 어떤분이 초기화 블럭을 물어본 사항이 있어서 확인한 사항을 첨가해서 기록으로 남깁니다. 질문 - 제목 : 클래스 초기화 블럭 사용하는 이유 - 내용 : 초기화 블럭 부분을 공부하면서 느낀건데 왜 굳이 클래스 초기화 블럭을 사용해야 하는지 잘 모르겠어요. 그냥 초기화 코드를 분리해서 관리하기 위함이 전부인가요? 개인적으로 이런 존재의 이유(raison d'être)에 대해 고민을 하는 것은 좋다고 생각한다. 문제는 혼자서 고민을 하다가 주제에서 벗어난 곳으로 빠질 위험이 있고 답을 찾기 어려울 수도 있다. 이럴 경우 친구나 커뮤니티에 물어봐서 어느정도 답을 찾는 것이 좋을 것 같다. (좋은 질문이었다는 이야기를 어렵게 하고 있음..) 접근법 일단 초기화 블럭에 대해서는 Java Tutorials 중 Cla..