본문 바로가기

JAVA

java #1 식별자, 리터럴, 연산자, Scanner, if문, switch문

1.자바 프로그램의 기본 구조

클래스, 메소드

자바프로그램의 기본구조 [ hello.java ]

 

 

1) 클래스 만들기

a. Hello 이름의 클래스 선언

public class Hello {

}

b. class 키워드로 클래스 선언

c. pulic 선언하면 다른 클래스에서 접근 가능

d. 클래스 코드는 {} 내에 모두 작성

 

 

2) main() 메소드

a. 자바 프로그램은 main()에서 실행 시작

public static void main(String[] args) {

}

b. public static void으로 선언

c. String[] args로 실행 인자를 전달 받음

 

 

3) 메소드 호출

a. sum() 메소드 호출

int i = 20;

s = sum(i,10);

b. sum() 호출 시 변수 i의 값과 정수 10을 전달

c. sum() n,m에 각각 20,10, 값 전달

d. sum() n과 m 값을 더한 30 리턴

e. 변수 s는 정수 30을 전달받음

 

sum() 호출과 리턴 [클래스 Hello]

 

2. 식별자(identifier)

1) 식별자란?

  클래스, 변수, 상수, 메소드 등에 붙이는 이름

 

 

2) 식별자의 원칙

a. @’, ‘#’, ‘!’와 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없으나 ‘_’, ‘$’는 사용 가능

b. 유니코드 문자 사용 가능. 한글 사용 가능

c. 자바 언어의 키워드는 식별자로 사용불가

d. 식별자의 첫 번째 문자로 숫자는 사용불가

e. ‘_’ 또는 ‘$’를 식별자 첫 번째 문자로 사용할 수 있으나 일반적으로 잘 사용하지 않는다.

f. 불린 리터럴 (true, false)과 널 리터럴(null)은 식별자로 사용불가

길이 제한 없음

g. 대소문자 구별

 

3) 식별자 예시

 

a. 사용 가능한 예

int   name;

char   student_ID;  // '_' 사용 가능

void   $func() { }  // '$' 사용 가능

class   Monster3 { }   // 숫자 사용 가능

int   whatsyournamemynameiskitae;   // 길이 제한 없음

int   barChart;   int barchart;   // 대소문자 구분. barChartbarchart는 다름

int   가격;   // 한글 이름 사용 가능 but 권장하지 않음

 

b. 사용 불가능한 예

int   3Chapter;   // 식별자의 첫문자로 숫자 사용 불가

class   if { }   // 자바의 예약어 if 사용 불가

char   false;   // false 사용 불가

void   null() { }   // null 사용 불가

class   %calc { }   // '%'는 특수문자

 

>> 이거 은근 헷갈림.. 잘 알아두기

 

tip. 좋은 이름 붙이는 이름 습관 (코드는 나만 보는 것이 아님!!)

 

1) 목적을 나타내는 이름 붙이기 ex) s보다 sum

2) 충분히 긴 이름으로 붙이기 ex) AVM보다 AutoVendingMachine

3) 첫 번째 문자는 대문자로 시작

4) 각 단어의 첫 번째 문자만 대문자

5) 상수 이름 모든 문자를 대문자로 표시 ex) final static double PI = 3.141592;

 

3. 자바의 기본 타입

 

 

4. 변수와 선언

 

1) 변수란?

    프로그램 실행 중에 값을 임시 저장하기 위한 공간이며 데이터 타입에서 정한 크기의 메모리 할당

 

2) 변수 선언

    변수의 타입 다음에 변수 이름을 적어 변수를 선언

3) 변수 선언과 초기화

선언과 동시에 초기값 지정

 

5. 리터럴(literal)

 

1) 리터럴이란?

   a. 프로그램에서 직접 표현한 값

   b. 정수, 실수, 문자, 논리, 문자열 리터럴 있음

 

 

2) 정수 리터럴와 실수 리터럴

10진수, 8진수, 16진수, 2진수 리터럴
실수 타입 리터럴은 double 타입으로 컴파일
숫자 뒤에 f(float)나 d(double)을 명시적으로 붙이기도 함

3) 문자 리터럴

\u 다음에 4자리 16진수(2바이트의 유니코드)
특수문자 리터럴은 백슬라시(\)로 시작

 

4) 논리 리터럴

ture, false 2개뿐, boolean 타입 변수에 치환하거나 조건문에 이용

 

6. 상수

 

1) 상수 선언

a. fianl 키워드 사용

b. 선언 시 초기값 지정

c. 실행 중 값 변경 불가

 

 

 

7. 타입 변환

 

1) 자동 타입 변환

a. 작은 타입은 큰 타입으로 자동 변환 (컴파일러에 의해 이루어짐)

b. 치환문(=)이나 수식 내에서 타입이 일치하지 않을 때

 

ex) long m = 25; // 25는 int 타입. 25가 long 타입으로 자동 변환되는 사례

ex) double d = 3.14 * 10; // 실수 연산을 하기 위해 10이 10.0으로 자동 변환

                                 // 다른 피연산자가 3.14가 실수이기 때문

 

2) 강제 타입 변환

a. 자동 타입 변환이 안 되는 경우 : 큰 타입이 작은타입으로 변환할 때

b. 강제 타입 변환 

개발자가 필요하여 강제로 타입 변환을 지시 but 강제 변환은 값 손실 우려 조심!!

 

8.Scanner

1) Scanner 클래스이란?

    System.in에게 키를 읽게 하고, 읽은 바이트를 문자, 정수, 실수 , 불린 , 문자열 등 다양한 타입으로 변환하여 리턴

객체 생성

2) Scanner를 이용한 키 입력받기

a. Scanner는 입력되는 키 값을 공백으로 구분되는 아이템 단위로 읽음

b. 공백 문자: '\t' , '\f' , '\r' , ' ' , '\n'

c. 개발자가 원하는 다양한 타입의 값으로 바꾸어 읽을 수 있음

 

3) Scanner 주요 메소드

많이 쓰는 것들은 외우기! 알아서 외워지겠지만.. 머쓱

9. 연산자

 

1) 연산자

 

2) 산술 연산자

a. 더하기(+), 빼기(-), 곱하기(*), 나누기(/), 나머지(%) , /% 응용

 

 

3) 증감 연산

a. 1 증가 혹은 감소 시키는 연산

 

4) 대입 연산

a. 연산의 오른쪽 결과는 왼쪽 변수에 대입

 

 

5) 비교 연산

a. 두 피연산자를 비교하여 true 또는 false의 논리 값을 내는 연산

 

6) 논리 연산

a. 논리 값으로 NOT, OR, AND, XOR 논리 연산. 논리 값을 내는 연산

 

10. if 문

 

1) 단순 if문

a. if의 괄혼 안에 조건식(논리현 변수나 논리 연산) 

b. 실행문장이 단일 문장인 경우 둘러싸는 {,} 생략 가능

 

2) if-else 문

a. 조건식이 true면 실행문장1 실행 후 if-else 문을 벗어남

b. false인 경우에 실행문장2 실행 후, if-else 문을 벗어남

 

3) 다중 if-else 문

a. if-else가 연속되는 모양

b. 조건문이 너무 많은 경우, switch 문 사용 권장

 

 

11. switch문

1) switch문은 식과 case 문의 값과 비교

a. case의 비교 값과 일치하면 해당 case의 실행문장 수행

b. break를 만나면 switch문을 벗어남

c. case의 비교 값과 일치하는 것이 없으면 default 문 실행

 

2) default문은 생략 가능

3) switch문에서 벗어나기

a. break문 만나면 switch문 벗어남

b. case 문에 break문이 없다면, 다음 case문으로 실행 계속

c. 언젠가 break를 만날 때까지 계속 내려 가면서 실행

 

4) case 문의 값

a. 문자, 정수, 문자열 리터럴만 허용

b. 실수 리터럴은 허용되지 않음