자바 공부를 위해 자바의 정석이라는 책을 샀다. 책을 보며 공부한 내용을 끄적여보겠다! ㅎㅇㅌ
Chapter1 자바를 시작하기 전에
(1) 자바의 특징 : 운영체제에 독립적 / 객체지향언어 / 자동 메모리 관리 / 네트워크와 분산처리 / 멀티쓰레드 지원 / 동적 로딩 지원
(2) JVM : Java virtual machine 자바를 실행하기 위한 가상 기계 : 자바로 작성된 어플리케이션은 모두 JVM에서만 실행되기 때문에, 자바 어플리케이션이 실행되기 위해서는 반드시 JVM이 필요하다.
Chapter2 변수
(1) 변수란?
: 단 하나의 값을 저장할 수 있는 메모리 공간
(2) 변수의 명명규칙
- 대소문자가 구분되며 길이에 제한이 없다.
- 예약어를 사용해서는 안된다. (if, true, int 등등)
- 숫자로 시작해서는 안된다.
- 특수문자는 '_'와 '$'만 사용 가능하다.
필수는 아니지만 권장하는 규칙은 아래와 같다.
- 클래스의 이름의 첫글자는 항상 대문자로 / 변수와 메서드의 첫글자는 항상 소문자로
- 여러단어로 이루어진 이름은 단어의 첫글자를 대문자로 (StringBuffer, lastIndexOf)
- 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분하기 (PI, MAX_NUMBER)
(3) 기본형 변수와 참조형 변수
- 기본형 변수 : 실제 값을 저장 (boolean, char, byte, short, int, long, float, double)
- 참조형 변수 : 어떤 값이 지정되어 있는 주소를 값으로. 변수의 타입이 기본형이 아닌 것들은 모두 참조변수. 자바는 참조형 변수간 연산 불가능
(4) 상수와 리터럴 constant & literal
- 변수 variable : 하나의 값을 저장하기 위한 공간
- 상수 constant : 값을 한번만 저장할 수 있는 공간
final int MAX_SPEED = 10;
- 리터럴 literal : 그 자체로 값을 의미하는 것
String str = ""; // 가능
String name = new String("Java"); // 가능
char ch = ''; // 불가능
char ch = ' '; //가능
덧셈 연산자는 피연산자 중 한 쪽이 Stringㅇ면 나머지 한쪽도 String으로 변환해 두 String을 결합한다.
System.out.println(7 + 7 + "")
// 7 + 7 + "" = "14" + "" = "14"
System.out.println("" + 7 + 7)
// "" + 7 + 7 = "7" + 7 = "7" + "7" = "77"
(5) 출력 / 입력
- println()과 달리 prinf()는 출력 후 줄바꿈을 하지 않음
- Scanner로 입력 받기
Scanner scanner = new Scanner(System.in); // Scanner 클래스의 객체 생성
String input = scanner.nextLine();
int num = Integer.parseInt(input);
int num = scanner.nextInt();
(6) 자동 형변환
표현번위가 좁은 타입에서 넓은 타입으로 형변환해야 값 손실이 없음
Chapter3 연산자
조건 연산자
result = (x>y) ? x : y ;
// 'x>y'의 결과가 true면 x값이 result에 저장, false면 y값이 result에 저장됨
abs = x >= 0 ? x : -x;
// x의 값이 음수면 양수로 바꾼다
Chapter4 조건문과 반복문
(1) switch문 제약조건
: switch문의 조건식 결과는 정수 또는 문자열이어야함
: case문의 값은 정수, 상수만 가능하고 중복안됨
switch(result) {
case '1':
case ONE: // 정수 상수
case "YES":
case num: // 에러, 변수는 안됨
case 1.0: // 에러, 실수는 안됨
}
Chapter5 배열
배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
(1) 배열 선언하기
int[] arr1;
String[] arr2;
int arr3[];
String arr4[];
* 2차원 배열
int[][] score;
int score[][];
int[] score[];
(2) 배열 생성하기
int[] score;
score = new int[5];
// 길이가 5인 int배열
int[] score = new int[5];
길이가 0인 배열도 생성 가능
int[] arr = new int[0];
(3) 배열 초기화하기
int[] score = new int[]{50, 60, 70, 80, 90};
// 배열의 생성과 초기화를 동시에
int[] score = {50, 60, 70, 80, 90};
int[] score = new int[5];
for(int i = 0; i<score.length; i++){
score[i] = i * 10 + 50;
}
* 2차원 배열
int[][] arr = new int[][]{{1,2,3},{4,5,6}};
int[][] arr = {
{1,2,3},
{4,5,6}
};
(4) 배열 출력하기
int[] arr = {100, 95, 80);
System.out.println(Arrays.toString(arr));
// 배열 arr의 모든 요소를 출력
// [100, 95, 80]
char[] chArr = {'a','b','c'};
System.out.println(chArr);
// abc 출력
(5) 배열 복사하기
배열은 한번 생성하면 그 길이를 변경할 수 없기 때문에, 더 많은 저장공간이 필요하다면 보다 큰 배열을 새로 만들고 이전 배열로부터 내용을 복사해야한다.
배열의 복사는 for문보다 System.arraycopy()가 더 효율적임
for(int i=0; i<num.length; i++)
newNum[i] = num[i];
System.arraycopy(num, 0, newNum, num.length);
// num[0]에서 newNum[0]으로 num.length개의 데이터를 복사해라
(6) char배열과 String클래스자바에서 char배열이 아닌 String클래스를 이용해서 문자열을 처리하는 이유는 String클래스가 char배열에 여러 가지 기능(메서드)을 추가하여 확장한 것이기 때문이다.
* String클래스의 주요 메서드
메서드 | 설명 |
char charAt(int index) | 문자열에서 해당 인덱스에 있는 문자 반환 |
int length() | 문자열의 길이 반환 |
String substring(int from, int to) | 문자열에서 해당 범위(from~to)에 있는 문자열 반환. to는 범위에 포함X |
boolean equals(Object obj) | 문자열의 내용이 obj과 같은지 확인. 같으면 true 다르면 false |
char[] toCharArray() | 문자열을 문자배열(char[])로 변환해서 반환 |
[ 사진 출처 ]
'뚝딱뚝딱 > Java' 카테고리의 다른 글
[Java] 자바의 정석 Chapter 8 예외처리 (0) | 2022.05.22 |
---|---|
[Java] 자바의 정석 Chapter6 ~ Chapter7 (0) | 2022.05.15 |
[Java] assertThat 비교 #JUnit #Assertj (0) | 2022.01.19 |
[Java] Arrays.sort() 재정의하기 / Comparator 재정의 / 정렬 조건 바꾸기 (0) | 2022.01.19 |
[Java] Stream이 뭐야! (0) | 2022.01.18 |