자바 프로그램은 한 개 이상의 클래스로 구성되어 있다.
클래스는 필드나 메소드로 구성되어 있다.
main() 메소드
psvm -> public static void main
main() 메소드는 자바 프로그램이 실행될 때 가장 먼저 실행시킨다.
자바 프로그램은 main() 메소드를 가지는 클래스가 반드시 하나는 존재해야 한다.
자바 변수
자바 변수는 기본형과 참조형으로 나뉨
기본형 : 정수형, 실수형, 문자형, 논리형 (8가지)
- 정수형 : byte, short, int, long
- 실수형 : float, double
- 문자형 : char
- 논리형 : boolean (ture, false)
참조형 : 기본형 변수를 이용해 사용자가 직접 만들어 사용하는 변수
- Ex : String, Object, ..
상수
프로그램이 실행되는 동안 메모리에 저장된 데이터를 변경할 수 없음
final을 가장 앞에 붙임
생성과 동시에 초기화를 해야 함
final int ANGEL = 88;
리터럴 (literal)
소스코드에 직접 작성한 값 (≒하드 코딩된 값)
동일한 주소를 가지고 있음
int angel = 88;
int player = 88;
System.out.println("angel = " + angel); // 88
System.out.println("player = " + player); // 88
System.out.println(System.identityHashCode(angel)); // 1595428806
System.out.println(System.identityHashCode(player)); // 1595428806
angel = 100;
System.out.println("angel = " + angel); // 100
System.out.println("player = " + player); // 88
System.out.println(System.identityHashCode(angel)); // 885284298
System.out.println(System.identityHashCode(player)); // 1595428806
값을 바꾼다고 해서 python처럼 같이 참조하는 값이 바뀌는건 아님!!!!
(== angel을 바꾼다고 해서 player가 같은 값으로 바뀌는게 아님)
타입 변환
자동 타입 변환 : 컴파일러가 자동으로 수정
강제 타입 변환 : 사용자가 강제적으로 수정
int num1 = 2, num2 = 4;
double result1 = num1 / num2; // int형 / int형 계산
double result2 = (double) num1 / num2; // double형 / int형 계산
System.out.println(result1); // 0.0
System.out.println(result2); // 0.5
연산자
비교 연산자 : &&, ||, !
삼항 연산자
사용법 : 조건식 ? 참_반환값 : 거짓_반환값
int num1 = 88, num2 = 8;
int result;
result = (num1 > num2) ? num1 : num2;
System.out.println("Biggest = " + result); // 88
instanceof 연산자 : 해당 객체가 어떤 클래스(인터페이스)로부터 생성되었는지 판별
사용법 : 인스턴스명 instanceof 클래스명
class A {}
class B extends A {}
(...)
A a = new A();
B b = new B();
System.out.println(a instanceof A); // true
System.out.println(b instanceof A); // true
System.out.println(a instanceof B); // false
System.out.println(b instanceof B); // true
extends로 생성된 클래스(B)의 인스턴스(b)는 부모 클래스(A)와 비교하였을 때 true가 출력됨
조건문
if / else if / else 문
삼항 연산자를 통한 조건문
사용법 : 조건식 ? 참_반환값 : 거짓_반환값
switch / case 문
반복문
while문
do / while문
for문
사용법 : for(초기; 조건; 증감) {}
향상된 for문
사용법 : for(타입 변수명 : 배열명) {}
컬렉션의 길이만큼 반복하여 실행함
변수명에 반복할 때마다 순차적으로 컬렉션의 내용이 하나씩 들어감
요소를 참조할 때 유용함 -> 직접 수정 시는 기본 for문을 사용 권장
int[] arr = new int[]{11, 22, 33, 44, 55};
for (int e : arr) {
System.out.print(e + " ");
제어문
continue문
break문
이름을 가진 break문
반복문 중첩 시 특정 반복문을 한 번에 빠져나가고 싶은 경우 사용함
이름을 작성할 반복문의 바로 앞에 이름을 명시해야 함 -> 다른 코드가 들어가면 에러
gogogo : // 이름 명시
// sout("Hello"); // 해당 코드가 있으면 에러 발생 함
for (int i = 2; i < 10; i++) {
for (int j = 2; j < 10; j++) {
if (i == 5) {
break gogogo; // gogogo 반복문이 끝나는 시점으로 빠져나감
}
System.out.println(i + " * " + j + " = " + (i * j));
}
}
// 여기로 빠져나감!
메모리 구조
메소드 영역 : 클래스와 클래스 변수를 저장
힙 영역 : 모든 인스턴스 변수 저장
스택 영역 : 메소드 호출과 관련된 지역 변수 및 매개변수 저장
배열 선언
배열이름 = new 타입[배열길이];
타입[] 배열이름 = new 타입[배열길이];
int[] angel = new int[3];
angel[0] = 85; // 인덱스로 배열 초기화
angel[1] = 65;
angel[2] = 90;
배열 선언 및 초기화
int[] grade1 = {70, 90, 80};
int[] grade2 = new int[]{70, 90, 80};
int[] grade3;
// grade3 = {70, 90, 80}; // Error
grade3 = new int[]{70, 90, 80}; // 선언 후 초기화 방법
다차원 배열 선언 및 초기화
// 다차원 배열 선언
int[][] arr = new int[2][3];
// 다차원 배열 선언 및 초기화
int[][] arr = {
{10, 20, 30},
{40, 50, 60}
};
// 가변 배열 선언 및 초기화
int[][] arr = {
{10, 20},
{10, 20, 30, 40},
{10}
};
배열 Copy
배열은 크기가 고정되므로, 확장을 위해서는 배열 복사 후 별도의 배열을 새로 만들어야 함
int[] arr1 = new int[]{1, 2, 3, 4, 5};
// System.arraycopy()
int[] arr2 = new int[10];
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
// Arrays.copyOf()
int[] arr3 = Arrays.copyOf(arr1, 10);
[Java] Java 주요 개념 요약 정리 (다형성) (0) | 2022.10.20 |
---|---|
[Java] Java 주요 개념 요약 정리 (클래스) (0) | 2022.10.19 |
[Java] 자료형 변환 (Casting) (0) | 2022.01.21 |
[Java] Object에서 .equal() 사용하기 (동일한 값을 가질 때 비교) (1) | 2021.02.24 |
[Java] IntelliJ '***-info.java' 에러 해결 방법 (0) | 2021.01.28 |