자바(JAVA)

(1) 자료형, 변수, 연산자 (기초)

주니홍 2022. 6. 7. 19:48
0607 정리

1. 크기 및 관계

프로젝트 > 패키지 > 클래스 > 메소드 > 코드(명령어)의 관계를 가지고 있다

 

오늘배운 자료형의 크기**

(다른 자료형의 크기도 정리한 표를 따로 만들어 놓자)

 

실수 정수 문자 진위형(논리형
double - 8byte int - 4byte char - 2byte bloolean - 1byte

 

2. 첫 시작이 대문자와 소문자

대문자 = 클래스

ex) String

 

소문자 = 프로젝트, 패키지, 메소드, 변수, 객체 등등

ex) day01

      int num = 10;

      char

      main

      ...

 

3. 기본이 되는 메소드

1) public static void main(String[] args)

 

접근제어자 4가지 중 **

(수업중 나오면 그때 다시 정리)

private

protected

public

- 어느곳에서든 해당 객체를 참조할수 있다는 의미

defualt

 

static - 객체와 무관한 정정함수임을 의미

 

void - 리턴되는 값이 없다 (실행만 하겠다)

 

2) System.out.println();

콘솔에 출력하는 메소드

괄호안에 " 사이에 문자'열'을 콘솔창에 출력한다 " ;

 

 

4. 변수(Variable)

- 프로그램이 실행되는 동안 계속해서 변하는 값을 저장하는 메모리 공간

 

- 변수의 3요소

공간 ( Scope)
자료형 (DataType)
이름 (Name)

 

int num = 10;

- 값까지 정해주는 경우에는 변수를 "초기화" 했다 라고 표현한다

 

int는 자료형

num은 변수의 이름

int 값의 4byte의 공간을 만들어놓을 것이다

 

ex) int num;

- 변수를 선언했다

- "초기화"가 아니다 **

 

 

4 - 1 변수명 규칙 및 표기법

- 변수는 특수기호, 한글, 띄어쓰기를 쓰지않는다

- 변수는 대문자로 사용은 가능하지만 "유지보수"를 위해 클래스와 혼동을 겪지않기위해 소문자로 시작함 **

- 변수의 이름은 의미가 들어가야 "유지보수" "가독성"에 좋다 (나만 이해하는 언어는 의미가없다)

 

int A_to_Z;

- 띄어쓰기 부분을 " _ "으로 대체해서 사용

- web 개발에서는 " _ " 오류가 일어날 수 있기때문에 쓰지않는다 **

 

int applePieCake;

- 카멜 표기법

-띄어쓰기 부분을 대문자로 대체해서 사용

 

 

5. 연산자

+ - * / =

= (대입연산자)는 대입연산자를 기준으로 오른쪽을 먼저읽고 왼쪽으로 넘어온다

 

ex) 10 = age; 는 왜 틀린것인가 **

- 10은 변수명의 위치 age는 값의 위치를 하고있기 때문에

- 변수명은 숫자부터 시작할 수 없기 때문에

- 대입연산자는 대입연산자 기준으로 오른쪽부터 읽고 왼쪽으로 읽기때문에

 

 

6. 형변환 ( 타입 캐스팅 )

int a = (int)3.14;    명시적 형변환

- 큰 데이터 값(3.14 = 8byte)을 작은 데이터에 넣으려면 형변환을 해야한다

- 데이터 손실 발생여지가 있다

 

double b = 5;   자동 형변환

- 작은 데이터 값을 큰 데이터에 넣는 것이 가능하며 자동으로 형변환이 된다

 

int c = 'a';     자동 형변환

- 아스키코드로 a는 97로 저장되어있다 결과값은 int 값 97로 표기된다

 

char d = 65;   자동 형변환

- 아스키코드로 65는 A로 저장되어있다 결과값은 char 값 'A'로 표기된다

 

 

7. 연산자 우선순위

double score = (10+20+31)/3;
System.out.println(score);

- score 결과값이 20.3333 이 아닌 20.0이 나온이유는
  (10+20+31)/3 은 정수로만 이용되어 4byte로 사용하여먼저 연산하고
  대입연산자와 만나 double을 마지막에 만나기 때문에 데이터 손실이 일어남
  연산자 우선순위에 의해 데이터 손실이 일어난 것

 

double score2 =(10+20+31)*1.0/3; 
System.out.println(score2);

- "유지보수"에 유리하기 때문에 /3.0 보다 가독성이 좋다 **
- 정수는 4byte 지만 8byte인 *1.0으로 연산함으로서
   나머지(8byte)수를 표현가능하기 때문에 데이터 손실이 없다

 

 

8. 복합대입연산자

int a = 1000;

int b = 2000;

int c = 3000;

 

int total = 0;

- 슈퍼마켓을 떠올리면 된다. 계산할때 0원으로 시작한다

 

total += a;  // total = total + a;
total += b;  // total = total + b;
total += c;  // total = total + c;

 

System.out.println( total );

- total의 값은 6000이 된다

 

8 - 1 복합대입연산자의 연산자 우선순의

num = num + 1
num += 1;
num ++
++ num

- 4개 모두 같은 뜻이다

- num ++ 의 연산자 우선순위는 매우낮다 ** (대입연산자 보다 늦음 **)

 

int a = 10;

int b = a++;

int c = ++a;

이후 a b c의 값은?

 

풀이

- a = 10

- b = a(10), a = 11 // b=a 라는 (대입연산자)가 먼저 사용되고 그 이후 a++을 더해준다

- a = 12, c = a   // 끝

 

결과

a = 12

b = 10

c = 12

 

9. 디버깅표 ****

알고리즘(순서도)이 정확하게 작성되었는지 최종적으로 검증하는 표

숙제

int a = 5;
int b =  --a;
int c = a++ - b--;

syso(a);
syso(b);
syso(++c);

 

디버깅표 작성

- ? 번으로 순서를 표기

a b c
5 (1번) 4 (2-2번) 0 (3-1번)
4 (2-1번) 3 (3-3번) 1 (4번)
5 (3-2번)    

 

10.  단축키 및 좋은 버릇 

(나중에 따로 모아서 글로 작성할것***)

1. 프로젝트 생성

- ctrl + Shift + n

- 아래방향키로 project 선택

 

2. 패키지 + 클래스 생성

- ctrl + n

- 아래방향키로 class 선택

 

3. 메인메소드 생성

- class 대괄호 안에

- main + ctrl + spece bar ( + enter)

- public static void main(String[] arg) {}

 

4. 출력 메소드

- syso + ctrl + enter

- System.out.println();

 

5. 줄 맞춤 ***

- ctrl + shift + f

- "유지보수"에 중요함  

 

6. 주석 ***

- //

- 이후 뒤에 쓰는글은 컴퓨터가 못읽음

- 주로 코드들의 의미를 설명해줄때 사용

- "유지보수"에 중요함

- 주석하고 싶은 부분을 드래그 이후 ctrl + / 누르면 전체 주석

 

7. 저장 ***

- ctrl + s

- 이후 실행한다

 

8. 실행

- ctrl + f11

 

 

} // main

}// class