본문 바로가기

개발 노트237

[java] 메모리 영역 컴퓨터의 메모리 영역은 유저가 사용가능한 유저영역과 유저가 손대지 못하는 운영체제 쪽 부분인 커널영역으로 나누어져 있다 컴퓨터를 할때 우리가 이런 저런 프로그램을 사용하지만 사용하며 컴퓨터의 기본 필수 시스템을 건드리면 컴퓨터가 에러를 일으키고 고장나게 될 수 있으므로 컴퓨터 실행의 중요한 부분 (운영체제) 등을 따로 분리해 놓은 것이다 이 중 유저 영역은 4가지 영역으로 나뉜다 code 영역, data 영역, stack 영역, heap 영역 이다 아래에서 위의 4가지 영역들을 간단히 설명하겠다 code 영역 말그대로 텍스트인 코드를 저장하는 영역이다 변수들을 어떻게 사용할지에 대한 프로그램 명령들을 여기에 저장한다 data 영역 (내부에 bss 영역 포함) 전역 변수와 정적 변수가 저장되는 영역이다 프.. 2022. 4. 30.
[java] 바인딩, 정적 메모리 할당, 동적 메모리 할당 바인딩 binding 이란 변수에 변수의 값을 연결하는 것을 말한다. 초기화도 값을 넣는것도 바인딩이라 할 수 있겠다 즉 a = b 라는 상관관계를 만드는 것을 말한다 a = 1 은 a와 1 을 정적 바인딩 한것이고 (따로 참조 없이도 정의가능) a = 메소드.() 은 a와 메소드.() 를 동적 바인딩한것이다 (따로 참조 해야만 정의가능) 정적 바인딩 : 해당 변수에 변수와 관련된 값을 저장하는 것 (stack 에 저장됨) ex) int data = 5; 동적바인딩 : 참조변수 또는 포인터로 힙영역의 객체를 연결시켜주는 것 (stack 에 변수를 저장, heap 으로 참조) ex) Object ob = new Object(); 메모리 할당 컴퓨터를 사용한다는 것은 컴퓨터 내의 메모리 공간을 이용하여 프로.. 2022. 4. 30.
[java] printf() , println(), 서식지정자 println() 의 사용 println() 의 경우 ()안의 매개 변수 값으로 숫자와 문자열을 모두 가질수 있다 (boolean 도 가능, true false 는 "" 없이 입력됨) print()의 경우와 동일하며 ln 을 붙이는 것으로 줄바꿈을 추가명령한 것 뿐이다 system.out.println(10); // 10 숫자 system.out.println(true); // true - ()안에 따옴표가 필요없다 = 문자열이 아닌 boolean 타입이다 system.out.println("INFP"); // INFP - 문자열 char[] toc = {'t', 'o', 'k','k','i','c'}; system.out.println(toc); // tokkic - 배열 내부 요소도 출력 system.. 2022. 4. 26.
[java] final final 키워드는 보통 상수타입인 변수를 정의할때 사용된다 데이터의 수정이 불가능 하도록 할때 사용한다 final 은 사용위치마다 사용이 달라지는데 final 클래스명 // 클래스명 앞에 붙으면 해당 클래스는 상속이 불가능하다 final 메소드명 // 메소드명 앞에 붙으면 해당 메소드의 클래스는 상속 가능하지만 해당 메소드를 overriding 할수없다 final 메소드 내부의 인자 // 해당 메소드 내부에서 final 이 붙은 인자의 값은 변경 불가하다 즉, 사용자가 값을 임의로 설정하거나 상속하여 변경할수없도록 하기 위해서 final 을 붙여 보호할수있다 2022. 4. 25.