변수 선언 방법 - 변수타입 변수이름;
변수 초기화 - 변수타입 변수이름 = 값;
산술>비교>논리>대입
단항>이항>삼항
단항 연산자와 대입 연산자를 제외한 모든 연산의 진행방향은 왼쪽에서 오른쪽
조건식 ? 식1 : 식2 // true 면 식 1, false 면 식 2가 연산결과
향상된 for 문
// for (타입 변수이름 : 배열 or 컬렉션) {
배열 or 컬렉션의 길이만큼 반복적으로 실행하고자 하는 문장;
}
Break 문은 조건이 참이 될 때, 자신이 포함된 가장 가까운 반복문을 벗어남
Continue 문은 특정 조건을 만족하는 경우, continue 문 이후의 문장을 수행하지 않고 다음 반복으로 넘어감
배열 선언 방법 - 변수타입 [ ] 변수이름
배열 선언 - 변수타입 [ ] 변수이름;
배열 생성 - 변수 이름 = new 변수타입 [배열의 길이]
배열의 초기화 - 변수타입 변수이름 = {변수의 값, 변수의 값, … etc}
2차원 배열 생성 - 변수타입[ ][ ] 변수이름 = new 변수타입 [행의 길이][열의 길이]
2차원 배열의 초기화 - 변수타입 [ ][ ] 변수이름 = {
{변수의 값, 변수의 값…}
{변수의 값, 변수의 값…}
}
String 클래스의 주요 메서드
// .charAt (int index) – 문자열에서 해당 위치에 있는 문자를 반환
// .length ( ) – 문자열의 길이를 반환
// .substring (int from, int to) – 문자열에서 해당 범위 (from ~ to)의 문자열을 반환, 이때 to는 포함되지 않음
// .equals (Object obj) – 문자열의 내용이 같은지 확인. 같으면 true, 다르면 false
// char [ ] toCharArray ( ) – 문자열을 문자배열 (char [ ])로 변환해서 반환
// Arrays.toString ( ) – 일차원 배열의 모든 요소를 문자열로 출력, 다차원 배열에는 deepToString
// Arrays.equals ( ) – 두 배열의 저장된 모든 요소를 비교해서 같으면 true, 다르면 false를 반환, 다차원 배열의 비교에는 deepEquals ( )
// Arrays.copyOF ( ) – 배열 전체를 복사, Arrays.copyOFRange ( ) – 배열의 일부를 복사하여 새로운 배열을 반환. 이 때, copyOFRange ( )에 지정된 범위 끝은 포함되지 않음
// Arryas.sort ( ) – 배열을 정렬
객체지향언어
클래스와 객체(인스턴스)
클래스명 참조변수명; // 클래스의 객체를 참조하기 위한 참조변수 선언
참조변수명 = new 클래스명( ) // 클래스의 객체를 생성하고, 객체의 주소를 참조변수에 저장
클래스명 [ ] 참조변수명 = new 클래스명[객체배열의 길이] // 객체배열 생성
참조변수명[배열의 인덱스] = new 클래스명 () // 각 배열의 인덱스에 객체를 저장해야 함
클래스 영역에 선언된 변수를 멤버변수라고 하며, 멤버변수 중에 static 이 붙은 것은 클래스 변수, static 이 붙지 않은 것은 인스턴스 변수라고 할 수 있음
클래스 변수는 인스턴스가 가지고 있는 공통적인 변수이며, 인스턴스 변수는 각 인스턴스들이 가지고 있는 고유한 변수라고 할 수 있음
메서드
반환타입 메서드이름 (매개변수(타입 변수명), 매개변수, …etc) // 선언부
{ } // 구현부
메서드 내에 선언된 변수들은 그 메서드 내에서만 사용할 수 있으므로 서로 다른 메서드라면 같은 이름의 변수를 선언해도 됨, 이처럼 메서드 내에 선언된 변수를 지역변수 라고 함
메서드이름(값1, 값2,…) // 메서드를 호출하는 법
메서드를 호출할 때 괄호() 안에 지정해준 값들을 argument 라고 하는데 argument의 개수와 순서는 호출된 메서드에 선언된 매개변수와 일치해야 함
반환값이 없는 경우 반환타입을 void로 설정
메서드 반환타입이 void가 아닌 경우 구현부 안에 return 반환값; 이 반드시 포함되어 있어야 함. 작업을 수행한 결과인 반환값을 호출한 메서드로 전달하는 역할이며, 반환타입과 일치하거나 자동 형변환이 가능한 것이어야 함. 매개변수는 여러 개일 수 있어도 반환값은 최대 하나만 허용
If문 조건식의 결과에 따라 return문이 실행되지 않을 수도 있기 대문에 항상 결과값이 반환되도록 해야함 // 조건식이 true일 때 반환값이 있고, false일 때 반환값이 없는 경우, 에러가 발생하며 이 경우 else 블록을 추가하여 거짓일 때의 반환값을 설정해야함
메서드가 호출되면 수행에 필요한 만큼의 메모리를 스택에 할당 - 메서드가 수행을 마치고나면 사용했던 메모리를 반환하고 스택에서 제거
호출스택의 제일 위에 있는 메서드가 현재 실행 중인 메서드이고 그 아래에 잇는 메서드가 위의 메서드를 호출한 메서드임
반환값이 있는 메서드는 종료되면서 결과값을 자신을 호출한 메서드에게 반환하고, 대기상태에 있던 호출한 메서드는 넘겨받은 반환값으로 진행함
기본형 매개변수는 변수의 값을 읽기만 할 수 있지만, 참조형 매개변수는 변수의 값을 읽고 변경할 수 있다.
클래스 메서드(static 메서드)는 객체를 생성하지 않고도 클래스이름.메서드이름(매개변수) 식으로 호출이 가능. 반면 인스턴스 메서드는 반드시 객체를 생성해야만 호출이 가능.
// 인스턴스 메서드 = 메서드 작업을 수행하는데 인스턴스 변수가 필요한 메서드
// 클래스 메서드 = 메서드 작업을 수행하는데 인스턴스 변수가 필요하지 않는 메서드
Static을 붙이는 경우
// 클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통으로 사용하는 것에 붙임
// 클래스 변수는 인스턴스를 생성하지 않아도 사용가능
// 클래스 메서드는 인스턴스 변수를 사용할 수 없음
// 메서드 내에서 인스턴스 변수를 사용하지 않는다면, static을 붙이는 것을 고려
같은 클래스에 속한 멤버(변수와 메서드)들 간에는 별도의 인스턴스를 생성하지 않고도 서로 참조 또는 호출이 가능, 하지만 클래스 멤버가 인스턴스 멤버를 참조 또는 호출하고자 하는 경우에는 인스턴스를 생성해야함
// 인스턴스 멤버가 존재하는 시점에 클래스 멤버는 항상 존재하지만, 클래스 멤버가 존재하는 시점에 인스턴스 멤버가 존재하지 않을 수도 있기 때문
오버로딩 // 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것, 오버로딩이 성립하기 위해서는 메서드 이름이 같아야 하고, 매개변수의 개수 또는 타입이 달라야 함, 반환 타입은 관계 없음
생성자 는 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메서드
// 클래스 이름(타입 변수명, 타입 변수명, …) {
인스턴스 생성 시 수행될 코드
주로 인스턴스 변수의 초기화 코드를 적음
}
// 생성자의 이름은 클래스의 이름과 같아야 함
// 생성자는 리턴 값이 없음
// 리턴 값이 없기에 void를 붙여야 하지만 모든 생성자가 리턴 값이 없으므로 생략 가능하게 설정
// 생성자도 오버로딩이 가능하므로 하나의 클래스에 여러 개의 생성자가 존재할 수 있음
// 연산자 new 가 인스턴스를 생성하는 것, 생성자는 인스턴스를 생성하는 것이 아님
// 생성자는 단순히 인스턴스 변수들의 초기화에 사용되는 조금 특별한 메서드
기본 생성자
// 클래스 이름( ) { }
// 매개변수도 없고 아무런 내용도 없음
// 클래스에 생성자가 하나도 정의되지 않은 경우, 컴파일러가 자동적으로 기본생성자를 추가
// 기본 생성자가 컴파일러에 의해 추가되는 경우는 클래스에 정의된 생성자가 하나도 없을 경우
매개변수가 있는 생성자
// 클래스 이름 (매개변수, 매개변수,…) { }
// 기본생성자를 사용한다면 인스턴스를 생성한 다음 인스턴스 변수들을 따로 초기화해야하지만, 매개변수가 있는 생성자를 사용한다면 인스턴스를 생성하는 동시에 원하는 값으로 초기화 가능
// 코드를 보다 간결하고 직관적으로 만들 수 있음
// 인스턴스를 생성할 때 결정하는 2가지 사항: 어떤 클래스의 인스턴스를 생성할 것인가. 선택한 클래스의 어떤 생성자로 인스턴스를 생성할 것인가
생성자 간에도 서로 호출이 가능한 조건
// 생성자의 이름으로 클래스 이름 대신 this( ) 를 사용
// 한 생성자에서 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출이 가능
// 기본 생성자는 인스턴스 변수의 디폴트 값을 설정
This // 인스턴스 자신을 가리키는 참조변수, 인스턴스의 주소가 저장되어 있음. 모든 인스턴스 메서드에 지역변수로 숨겨진 채 존재
This ( ), this (매개변수) // 생성자, 같은 클래스의 다른 생성자를 호출할 때 사용
멤버변수(클래스 변수와 인스턴스 변수)와 배열의 초기화는 선택이지만, 지역변수의 초기화는 필수
클래스 변수 초기화 -> 인스턴스 변수 초기화
자동 초기화 -> 명시적 초기화(간단) -> 초기화 블럭, 생성자(복잡)
인스턴스 초기화 블럭은 단순히 클래스 내에 블럭을 만들고 그 안에 코드를 작성
클래스 초기화 블록은 인스턴스 초기화 블럭 앞에 static 을 덧붙이기만 하면 됨