(1) 자료형, 변수, 연산자 (기초)
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