[JAVA] 자료형과 기본 연산자, 조건문 (+추가 팁)

지수·2021년 6월 28일
0

플레이데이터

목록 보기
1/50
post-thumbnail

1. 변수와 상수, 기본 자료형

정적타입과 동적타입의 변수 선언

💡 정적타입 언어(Statically typed language)
: 컴파일 시 변수이 타입이 결정되는 언어, 프로그래머가 변수의 자료형은 명시하고, 그에 맞는 값을 대입해야 함.

💡 동적타입 언어(Dynamically typed language)
: 컴파일 시 자료형을 정하는 것이 아니라 런타임 시 자료형이 결정되는 언어, 프로그래머가 따로 변수의 자료형을 명시하지 않아도, 변수만 선언하여 값을 지정할 수 있음

자바는 변수를 사용하기 앞서,
아래와 같이 자료형을 명시해주어야하는 정적타입 언어

int num = 1;

▶ 변수에 대입할 값의 특성에 맞추어 적절한 자료형을 선언하고,
▶ 값 대입 이전에 변수 선언만 해두었다면, 자료형에 맞는 값을 대입해야 한다.


기본 자료형 종류

💡 자바에서 제공하는 기본 자료형

long num1 = 12345678900L;
  • 정수 값의 기본은 int형
    정수 값을 long형으로 처리하기 위해서는
    자료형을 long으로 명시하는 것 외에 식별자인 L이나 l을 필수적으로 사용해야 함
float num2 = 12.2F;
  • 실수 값의 기본은 double형
    실수 값을 float형으로 처리하기 위해서는
    자료형을 float으로 명시하는 것 외에 식별자인 Ff을 필수적으로 사용해야 함

형 변환

💡 묵시적 형 변환(=업 캐스팅=자동 형 변환)
1) 바이트 크기가 작은 자료형 ➡ 큰 자료형
2) 덜 정밀한 자료형 ➡ 더 정밀한 자료형

byte >> short, char >> int >> long >> float >> double

위의 순서대로 묵시적 형 변환이 가능
(명시적 형 변환과 달리) 괄호 안 자료형 명시 없이, 연산 시 자동적으로 일어남
위의 원칙에 따라 형 변환이 이루어진 경우, 자료 손실 없음

💡 명시적 형 변환(=다운 캐스팅=강제 형 변환)
: 묵시적 형 변환에 반하여 거꾸로 형 변환이 이루어지는 경우
1) 바이트 크기가 큰 자료형 ➡ 작은 자료형
2) 더 절밀한 자료형 ➡ 덜 정밀한 자료형

int inum = 10;
byte bnum = (byte)iNum;  // 강제로 형 변환 시 바꿀 형을 괄호 명시
float temp = 36.5F;
int temp2 = (int)temp;  // 형 변환되면서 소수점 이하 부분 생략

자료 값이 변환된 자료형이 표현할 수 있는 범위를 넘는 경우, 자료 손실 있음


상수 선언

💡 상수(constant)
: 값이 변하는 '변수(variable)'와 달리, 항상 변하지 않는 값

final int MAX_SCORE = 100;
  • final 예약어를 사용해 선언
  • 상수 이름은 대문자 사용
  • 이름에 두 단어 이상이 들어갈 경우, _ 사용 (camel X)



2. 여러가지 연산자

기본 연산자

💡 항과 연산자
: 연산에 사용하는 값을 항(operand), 연산에 사용하는 기호를 연산자(operator)라고 함

💡 기본 연산자 종류


증가/감소 연산자의 위치 차이

💡 증가/감소 연산자
: 증가/감소 연산자는 단항 연산자로, 항의 앞이나 뒤에 붙어 값을 1만큼 늘리거나 1만큼 줄임

  • ++ : 항의 값에 1을 더함
  • -- : 항의 값에 1을 뺌

🧨 증가/감소 연산자의 위치에 따라 결과 값이 달라질 수 있음

1) 증가/감소 연산자가 피연산자 앞에 있을 때
: 문장이 끝나기 전에(; 전에) 피연산자 값이 증가하거나 감소

int value = 10;
int num = ++value;  // value 값에 1을 더한 후 num에 대입
// num에 11이 대입됨

2) 증가/감소 연산자가 피연산자 뒤에 있을 때
: 문장이 끝난 후에(다음 문장부터) 피연산자 값이 증가하거나 감소

int value = 10;
int num = value++;  // 초기 value 값을 num에 대입
// 이후에 value 값이 1을 더함
// num에 10이 대입됨

논리 연산자와 비트 논리 연산자 차이(단락 회로 평가)

💡 논리 연산자
: 명제 기반 참, 거짓 판단 연산

  • &&(논리 곱) : 두 항이 모두 참인 경우에만 참
  • ||(논리 합) : 두 항 중 하나만 참이면 참
  • !(부정) : 참은 거짓으로, 거짓은 참으로 바꿈

💡 비트 논리 연산자
: 비트 단위로 이루어지는 논리 연산

  • & : 두 비트 값이 모두 1인 경우에만 1
  • | : 두 비트 값 중 하나라도 1인 경우 1
  • ^ : 두 비트 값이 같은 값이면 0, 다른 값이면 1
  • ~ : 0은 1로, 1은 0으로 비트 값을 바꿈

🧨 논리 연산자의 단락 회로 평가
논리 연산자(&&, ||)는 앞 조건의 결과로 최종 결과가 나와버리면
뒷 조건은 연산하지 않음(=짧은 단위의 논리 연산)

반면, 비트 논리 연산자(&,|)는 앞 조건 결과와 상관 없이 끝까지 연산함

int num1 = 5;
int num2 = 100;

boolean flag = (num1 > 10) && (++num2 > 20);
// (num1 > 10)이라는 앞 조건이 false라서 flag는 false
// 때문에 (++num2 > 20)은 연산되지 않음
// ++num2가 실행되지 않아, num2 값은 그대로 100


3. 조건문

if문과 else-if문

💡 if문, if-else문
: '만약 ~이라면', '만약 ~이라면, 그렇지 않다면'의 구조로 이루어진 조건문
🔽 나이 값에 따라 학교를 다니는지/다니지 않는지 출력하는 예제

int age = 10;

if (age >= 8) {
	System.out.println("학교에 다닙니다.");
}
else {
	System.out.println("아직 학교에 다니지 않습니다.");
}

=> 나이 값에 대해 조건이 (age >= 8) 하나 뿐

💡 else-if 문
: 하나의 상황에 조건이 여러 개 인 경우 사용하는 조건문
🔽 나이 값에 따라 미취학아동/초등학생/중,고등학생/성인을 출력하는 예제

int age = 10;
String status;

if (age < 8) {
	status = "미취학아동";
}
else if (age < 14) {
	status = "초등학생";
}
else if (age < 20) {
	status = "중고등학생";
}
else {
	status = "성인";
}

System.out.println("귀하는 "+status+"입니다.");

=> 나이 값에 대해 조건이 여러가지


switch-case문

💡 switch-case문
: 조건식의 결과가 정수 또는 문자열 값이고(대상을 하나의 값으로 비교할 수 있는 경우), 그 값에 따라 수행되는 경우가 각각 다른 경우 사용하는 조건문

🔽 시험 점수에 따라 성적(A/B/C/F)를 출력하는 예제

int score = 95;
char grade;

switch(score/10) {  // 산술연산을 통해 10의 자리 수만 추출
	case 10 : grade = 'A';
    		  break;
	case 9 : grade = 'B';
    		  break;
	case 8 : grade = 'C';
    		  break;
	default : grade = 'F';
}

각 case가 끝날 때마다 잊지 말고 break; 해주어야 함
break를 해주지 않으면 해당 케이스 이외에 default 코드도 진행



⚡추가 팁⚡

eclipse 단축키

  • sysout + Ctrl + space : System.out.println();

  • Ctrl + F11 : 최근 클래스 Run

  • Ctrl + d : 해당 코드 한 줄 지우기

  • Ctrl + Alt + 아래 방향키 : 해당 코드 아래에 한 줄 복사

  • Ctrl + i : 인덴트 맞추기

  • Ctrl + / : 라인 주석 처리/해제

  • Ctrl + Shift + / : 블럭 주석 설정

  • Ctrl + Shift + \ : 블럭 주석 해제

  • Shift + Alt + R : 변수 이름 한번에 바꾸기

  • Ctrl + Shift + O : 필요한 패키지 자동 import


패키지, 클래스, 메소드, 변수 이름 정하기

  • 패키지 이름은 소문자로 ex) project1
  • 클래스 이름은 대문자로 ex) JavaBasic
  • 메소드 이름은 소문자로 ex) sample()
  • 변수 이름은 소문자로 ex) num

카멜(camel) 표기법

: 각 단어의 첫 문자를 대문자로 표기하고 붙여쓰되,
맨 처음 문자는 소문자로 표기함
ex) studentNumber, backgroudColor


주석 처리 방법

  • 라인 주석 : 한 줄 주석
// 이것이 라인 주석입니다.
  • 블럭 주석 : 여러 줄 주석
/*
 * 이것이 블럭 주석입니다.
 */
  • 문서화 주석
/**
 * 이것은 문서화 주석입니다.
 */
profile
사부작 사부작

0개의 댓글