자바 프로그래밍 기본
1) main 메소드
자바 프로그램 실행시 꼭 필요한 main메소드
public static void main(String[] args)
2) 클래스(class)
- 객체를 만들기 위한 일종의 설계도 (도화지)
- 자바에서 모든 코드는 클래스 내에 작성
3)주석
- 범위, 여러 줄에 적용 : /* 이 안에 내용 작성 *
- 한 줄에만 적용 : // 이 곳에 내용 작성
4)변수
메모리 내에 데이터를 저장하는 공간
변수 표현법
자료형 변수명;
자료형 변수명 = 값;
-자료형 종류
* 문자 : 문자형 ('a', '0', ), 문자열 ("a", "asd", ..)
- 문자형 : char
- 문자열 : String
*숫자 :-정수형 (1, 2, 3, -1, 0, 100), 실수형 (3.14, 0.55, ...)
- 정수형 : byte(1B), short(2B), int(4B), long(8B)
- 실수형 : float(4B), double(8B),
* 논리형 (true/false) : boolean(1B)
초기화 : 변수에 최초로 값을 대입하는 것.
* 선언과 동시에 초기화
자료형 변수명 = 값;
// 정수형(int) 타입의 age라는 변수에 36이라는 값을 초기화
=> int age = 36;
* 변수를 선언한 후에 값을 초기화
자료형 변수명; // 변수 선언
변수명 = 값; // 변수에 값을 초기화
// 정수형(int) 타입의 age라는 변수 선언
=> int age;
// age 변수에 36이라는 값을 초기화
=> age = 36;
ex) // 논리형 데이터를 보관하기 위한 isTrue 이라는 이름으로 변수를 선언
=> boolean isTrue;
// 문자형 데이터를 보관하기 위한 ch 라는 이름으로 변수를 선언
=> char ch;
// 178.4 라는 데이터를 보관하기 위한 height 라는 이름으로 변수 선언 및 초기화
=> double height = 178.4;
// "재밌는 자바" 라는 데이터를 보관하기 위한 message 라는 이름의 변수 선언 및 초기화
=> String message = "재밌는 자바";
* 형변환 : 값의 자료형을 바꾸는 것
- 왜 형변환이 일어나는가?
=> 연산은 ("같은"/다른) 자료형끼리만 가능
- 형변환 방식
[1] 자동 형변환 : "작은" 범위의 자료형에서 "큰" 범위의 자료형으로 변환
byte(1B) -> short(2B) -> int(4B) -> long(8B) -> float(4B) -> double(8B)
char(2B) -> int(4B)
* byte n1 = 10;
short n2 = 5;
int result = n1 + n2; // byte + short --> short + short --> int
short result = (short)(n1 + n2); // byte + short --> short + short --> int
[2] 강제 형변환 : "자동 형변환"이 되지 않는 경우 직접 형변환을 수행.
"데이터" 손실이 발생할 수 있음
- 표현법 : (변환할 자료형)값;
* 메모리 구조 : static/heap/stack
(1) stack : 메소드를 호출하면 자동생성, 끝나면 자동 소멸. 지역 변수, 매개변수 등
(2) static : static으로 선언된 변수, 클래스 변수, 메소드
(3) heap : new 연산자에 의해 동적으로 할당되고 저장되는 공간. 배열, 객체 등
* 입출력 메소드
Scanner 클래스의 메소드 사용
(문자열 입력받을 때) : sc.next() , sc.nextLine()
* next() : 스페이스바(띄어쓰기) 기준으로 데이터를 가지고 옴
* nextLine() : 엔터키(\n)을 기준으로 데이터를 가지고 옴
(정수형 입력받을 때) : sc.nextInt(), sc.nextShort(), ...
(실수형 입력받을 때) : sc.nextDouble(), sc.nextFloat(), ...
* 표현법
- 문자타입('a', 'b', char) : %c
- 문자열타입("abc", "d", String) : %s
- 정수타입(10, 0, int, [decimal]) : %d
- 실수타입(3.14, 0.21, .., double, float) : %f
조건문]
- 프로그램의 흐름을 "조건"에 따라 제어하는 문법
- "조건식"을 통해 참인지 거짓인지 판단해서 해당하는 코드 실행
* 조건식의 결과 : true 또는 false
* 연산자 : 비교연산자 (대소/동등), 논리연산자 (&&, ||)을 주로 사용
- 대소 비교 연산자 : A < B ( A가 B보다 작은가?) --> true
C >= B ( C가 B보다 크거나 같은가? ) --> true
A < C --> true
B --> int num = 5;
1 < num && num <= 10
- 동등 비교 연산자 : name != "홍길동" // String name = sc.nextLine();
num != 10, ch != 'A'
name.equals("홍길동")
- 논리 연산자 : A && B --> A, B모두 true일 때만 true
A || B --> A 또는 B 중 하나라도 true일 때 true
* SCE : A 결과에 따라 B 연산이 수행되지 않는 경우
&& --> A 의 결과가 false 일때, 최종 결과가 무조건 false이므로 B연산이 수행되지 않음
|| --> A의 결과가 true일때, 최종 결과가 무조건 true이므로 B 연산이 수행되지 않음
1. if 문
[1] 단독 if문 : 조건식의 결과가 참(true)인 경우에만 흐름을 제어하고자 할 때
* 표현법 (아래에 작성)
if(조건식) {
// 조건식의 결과가 참인 경우 수행할 코드
}
[2] if ~ else문 : 조건식의 결과가 참 / 거짓인 경우 흐름을 제어하고자 할 때
* 표현법 (아래에 작성)
if(조건식) {
// 조건식의 결과가 참인 경우 수행할 코드
} else {
// 조건식의 결과가 거짓인 경우 수행할 코드
}
[3] if ~ else if ~ else문 : 조건식이 2개이상인 경우
* 표현법 (아래에 작성)
if (조건식A) {
// 조건식A의 결과가 참인 경우 수행할 코드
} else if(조건식B) {
// 조건식A의 결과가 거짓이고, 조건식B의 결과가 참인 경우 수행할 코드
} else {
// 조건식A, 조건식B의 결과가 모두 거짓일 때
}
[2] switch 문
* 표현법 (아래에 작성)
switch(비교대상) {
case 값1:
// 비교대상 == 값1 인 경우 수행할 코드
break;
case 값2:
// 비교대상 == 값2 인 경우 수행할 코드
default:
// 모든 case의 값들과 일치하지 않을 경우 수행할 코드
[반복문]
- 특정 문장들을 "반복"해서 수행하도록 제어하는 문법
- 종류
[1] for문
* 표현법 (아래에 작성)
for(초기식; 조건식; 증감식)
// 초기식 => 반복문 제어 시 사용될 변수를 초기화 : 자료형 변수명 = 값;
// 조건식 => 어떤 변수를 비교연산자 또는 논리연산자를 사용하여 연산식 작성
// 보통, 초기식에서 선언된 변수가 연산대상이 된다!
// 증감식 => 어떤 변수의 값을 변경시키는 연산식
// 보통, 초기식에서 선언된 변수가 연산대상이 된다!
// 증감연산자(++, --) : 1씩 증가시키거나 , 감소시키는 연산자
// 복합연산자(+=, *=, -=, ...) : 앞의 연산 먼저 수행 후 대입시키는 연산자
ex)
for(int i=0: i<10; i++){
System.out.println("");
[2] while문
* 표현법 (아래에 작성)
[초기식]
while(조건식) {
// 조건식의 결과가 참(true)인 경우 수행할 코드
[증감식]
}
// 조건에 상관없이 무조건 1회 수행 후 조건에 따라 반복시키고자 할 때
[초기식]
do {
// 반복 수행할 코드
[증감식]
} while(조건식);
분기문
[1] 특정 조건에서 반복문을 종료시키고자 할 때 : break;
[2] 특정 조건에서 반복문을 다음 루프로 실행시키고자 할 때 : continue;
// 1 ~ 10 사이의 숫자들 중 홀수만 출력하고자 할 때
for(int i=1; i <=10; i++) {
if(i % 2 == 0) {
continue;
}
System.out.println(i);
}