자바의 특징
- 어느 환경이든 실행될 수 있도록 설계됐다.
어느 환경이든 실행 가능한 이유는 JDK에서 제공하는 Javac(자바 컴파일러)와 JVM(자바 가상 머신)이 있기 때문이다.
- 객체지향 언어이다.
JDK
- Javac(Java compiler) : 자바 파일을 바이트 파일로 변환해준다.
JVM(Java Virtual Machine) : 바이트 파일을 실행해준다.


자바 프로젝트 관리
이름 규칙 종류
- 카멜케이스(camelCase) : 단어를 대문자로 나눈다.
ex) firstName, lastName, fullName
- 스네이크케이스(snake_case) : 단어를 언더바로 나눈다.
ex) first_name, last_name, full_name
클래스 이름 규칙
- 클래스 이름을 작성할 떄는 첫 글자 대문자 + 카멜케이스 조합으로 작성한다.
ex) MyNewClass
변수 이름 규칙
- 변수 이름은 카멜케이스로 작성한다.
ex) mVal, val1
패키지
- 자바 프로젝트에서 파일들의 묶음을 패키지라고 한다.
(관련된 자바 클래스들을 그룹으로 묶는 기능)
- 패키지이름 규칙
자바에서 패키지명은 소문자만으로 적는것이 권장된다.
- import로 패키지를 가져와 쓸 수 있다.
ex) import package.class;
변수
- 자료형 : 메모리를 사용하는 단위
자료형은 데이터의 크기를 결정하는 규칙이다.
자바에서는 사용 빈도가 높은 자료형을 미리 정해놨다.
ex)int, string, long, boolean
변수이름으로 데이터의 위치를 표현하고 ,
자료형으로 데이터의 크기를 표현한다.

- 형변환 : 변수의 자료형을 다른 자료형으로 변경하는 것을 의미한다.
형변환은 업캐스팅과 다운캐스팅 방식이 있다.
- 다운 캐스팅 - 명시적 형 변환
큰 데이터를 작은 자료형에 옮겨담는것을 다운 캐스팅이라 한다.
강제로 형 변환 시 명시적으로 변환시켜야한다.
데이터 손실이 발생할 수 있다.
float fVal=10.1;
int iVal=(int)fVal;
System.out.println(iVal); // 10
- 업 캐스팅 - 묵시적 형 변환
작은 데이터를 큰 자료형이 옮겨담는것을 업 캐스팅이라 한다.
문제가 발생하지 않기 때문에 자동으로 변경된다.
데이터 손실이 없다.
int iVal=10;
double dVal=iVal;
System.out.println(dval); // 10.0
입출력
System.out.print(""); // 줄바꿈 없음
System.out.println(""); // 줄바꿈 있음\n
Scanner scanner = new Scanner(System.in); // 클래스 선언
String str = scanner.nextLine();
연산자
산술 연산자
- +:덧셈 -:뺄셈 *:곱셈 /: 나눗셈 %:나마지
대입 연산자
- 변수에 값을 대입하는 연산자
산술 연산자와 대입 연산자를 같이 사용한 복합 대입 연산자는 값을 누적시킬 때 사용한다.
ex) += -= *= /= %=
증감 연산자
- 증감 연산자는 변수를 1 증가 (++) 또는 1 감소 (--) 시킬 때 사용된다.
ex) ++ --
- 전위 연산(++i)과 후위 연산(i++)은 증감 연산자의 위치에 따라 실행 순서가 달라지는 것을 뜻한다.
비교 연산자
- 두 값을 비교할 때 사용하는 연산자
ex) == != <= >= < >
논리 연산자
- 두 조건에 대해 논리 연산(AND,OR,NOT)을 해준다.
ex) && || !
연산자 우선 순위
- 기본적인 수학 사칙연산 우선순위가 적용된다.
기본 연산자 우선순위(산술 -> 비교 -> 논리 -> 대입)
- 논리 연산자 우선순위(! -> && -> ||)
- 명확한 우선순위를 위해 괄호를 사용하는 것이 권장된다.
문자열 비교
- ==는 문자열 값을 비교하는 것이 아니라 메모리 주소를 비교하는 방식이기 때문에 문자열 비교는 .equals() 사용이 권장 된다.
str1==str2 // x
str1.equals(str2) // o
조건문
- if문 : 조건이 참일 때만 실행된다.
if-else문 : 조건이 거짓일때 처리
else if문 : 여러 개의 조건을 처리할 때 사용한다.
- switch문 : 값에 따라 여러 동작을 실행한다.
switch(num){
case 1:
//실행할 코드
break;
case 2:
//실행할 코드
break;
default:
//위 값들과 일치하지 않을 때 실행할 코드
}
fall-through현상 : break문으로 case를 끝내지 않으면 다음 case가 실행되는 현상
반복문
- for문 : for(시작조건; 종결조건; 조건변화수식) {}
break로 반복문을 탈출 할 수 있다.
continue로 반복을 건너뛸 수 있다.
- while문 : while(종결조건) {}
- do-while문 : do { } while(종결조건)
while문과 비슷하지만 종결 조건을 반복 후에 체크한다는 차이점이 있다.
배열
- 배열이란 비슷한 주제의 데이터들을 하나의 그룹으로 묶어서 표현하는 방법이다.
- 배열 선언
자료형[] 변수이름 = new 자료형[배열의길이];
- 인덱스 : 베열의 요소에 접근하는 방법
변수이름[인덱스];
- 향상된 for문 : 배열의 모든 요소를 하나씩 꺼내서 활용할 때 편리한 반복문이다.
for(배열의요소:배열) { }
- 2차원 배열
자료형[][] 변수이름 = new 변수이름[배열의길이][배열의길이];
메서드
- 여러 개의 작은 명령문을 한곳에 모아 사용하는 단위를 메서드라고 한다.
- 메서드의 이름은 카멜케이스로 작성한다.
반환자료형 메서드이름(매개변수)
{
return 반환값;
}