[Java] 1. 점프투자바ch1-3 정리 11.20
점프투 자바: https://wikidocs.net/231
1. JVM
소스 코드인 MyProgram.java 파일을 작성한다. (ex. Sample.java)
컴파일러(compiler)는 자바 소스 코드를 이용하여 클래스 파일인 MyProgram.class를 생성한다. 이때 MyProgram.class는 JVM이 인식할 수 있는 이진 파일(binary file)이다.
(ex. javac Sample.java-> java compiler에 의해 java.class가 생성됨)
JVM은 클래스 파일의 이진 코드(binary code)를 해석하여 프로그램을 실행한다.
(ex. java Sample -> jvm에 의해 java.class 프로그램이 실행됨)
MyProgram의 실행 결과가 컴퓨터에 반영된다.
2. data type
char && boolean
char a1 = 'a'; // 문자로 표현
char a2 = 97; // 아스키코드로 표현
char a3 = '\u0061'; // 유니코드로 표현
boolean ok = true;
String
String a = "Hello World";
a += " Messi!";
// substring(시작인덱스, 종료인덱스)
String a = "Hello Java";
System.out.println(a.substring(0, 4)); // Hell 출력
String Buffer vs String
StringBuffer sb = new StringBuffer(); // StringBuffer 객체 sb 생성
sb.append("hello");
sb.append(" ");
sb.append("jump to java");
String result = sb.toString();
System.out.println(result); // "hello jump to java" 출력
값을 변경할 수 없는 것을 ‘이뮤터블(immutable)하다’, 변경할 수 있는 것을 ‘뮤터블(mutable)하다’라고 한다.
String 자료형은 값이 한 번 생성되면 변경할 수가 없다. => immutable
toUpperCase와 같은 메서드를 보면 문자열이 변경되는 것처럼 생각할 수도 있지만 해당 메서드를 수행할 때 또 다른 String 객체를 생성하여 리턴할 뿐이다.
반면에 StringBuffer 자료형은 값을 변경할 수 있으므로 생성된 값을 언제든지 수정할 수 있다. => mutable
그렇다면 무조건 StringBuffer를 사용하는 것이 좋을까? 그건 상황에 따라 다르다.
StringBuffer 자료형은 String 자료형보다 무거운 편에 속한다. new StringBuffer()로 객체를 생성하면 String을 사용할 때보다 메모리 사용량도 많고 속도도 느리다.
따라서 문자열을 추가하거나 변경하는 작업이 많으면 StringBuffer를, 적으면 String을 사용하는 것이 유리하다.
3 Array,List,Map
array
int[] nums = {1, 3, 5, 7, 9};
// 길이 지정
String[] weeks = new String[7];
weeks[0] = "월";
weeks[1] = ...