본문 바로가기

JAVA39

문자열을 비교하는 방법. equals. String을 사용하는 방법은 두가지가 있다. 첫 번째, String이 클래스이니 String =new String()의 형태로 정의하는 방법. 두 번째, String = " "로 정의하는 방법. 이 두 방법은 데이터를 저장하는 방식이 본질적으로 다르다. String= " "의 경우 heap에 문자열이 저장될 때 "String Constant Pool"에 저장된다. 이 방법은 같은 문자열을 가지면 같은 데이터 공간에 포인터를 두게 된다. 다만, 문자열이 달라지게 되면 새로운 공간에 계속해서 저장하게 되면서, 데이터의 손실이 생길수도 있다. 따라서, 변하는 문자열의 히스토리를 볼 때 유용하다. String =new String()의 경우 문자열이 저장될 때 각각의 공간에 저장된다. 즉, 같은 문자열을 가져.. 2020. 3. 23.
5. 반복문 반복문은 특정한 실행문을 반복적으로 할 때 쓰인다. 반복문은 for문과 while문이 있는데, 둘은 쓰이는 형태가 다르다. 1. for문 for문은 끝나야 하는 지점을 알고 만드는 반복문이다. 문법은 다음과 같다. for(초기값, 조건문, 증감식){ 실행할 문장 } 예시를 보자. public static void main(String[] args) { for (long i = 1; i 내부 for문의 조건 확인 -> 실행문 실행 -> ........................ -> 내부 for문의 조건 거짓 -> 외부 for문의 증감 확인 의 형태로 움직이게 된다. 2. while while문은 끝을 알 수 없을 때 사용한다. 값이 참이면 영원히 반복되며, 이를 daemon process(데몬 프로세스.. 2020. 3. 23.
call by value passing? call by reference passing? main 함수에서 매서드를 호출할때, 인수를 함께 호출해야하는 경우가 있다. 이 때, 인수를 호출하는 방법이 두가지가 있e다. 하나가 call by value passing, 다른 하나가 call by reference passing이다. 이름에서 알 수 있다시피, call by value passing은 값을 직접적으로 불러오는 것이고, call by reference passing은 값이 지정된 메모리 주소를 불러오는 형태이다. 다음의 예시를 보자. package ch03; public class MethodEx02 { static void 증가(int num) { num++; System.out.println("증가 num : "+num); } public static void main(String.. 2020. 3. 23.
static, heap, stack? 자바의 메모리는 크게 세 영역으로 나뉘는데, static, heap, stack가 그것이다. 자바는 JVM이라는 가상머신이 머신코드로 class 파일을 읽는데, 읽고 실행하는 순서가 1. 코드 스캔 : static 파일 찾기 2. main 메서드 실행 으로 진행된다. 따라서 main 함수가 실행되기 전에 스캔되는 static은 프로그램이 로드 되기 전부터 메모리에 떠있는 값이다. static으로 선언된 변수는 프로그램이 종료되기 전까지 불러올 수 있다. 따라서 static 내의 변수는 전역변수라고 한다. heap는 가상의 공간에 떠있다가, main 함수로 호출이 되면 메모리로 로드가 된다. 이 때 heap를 부르는 명령어가 new이다. heap은 더이상 main이 내부 클래스를 참조하지 않을 때, 사라진.. 2020. 3. 20.
반응형