TIL. 변수와 형변환 그리고 연산자

hyuko·2023년 1월 2일
0

Java

목록 보기
13/26

변수

  • 변수란?

    데이터를 담을 수 있는 공간(각각의 데이터에 따라 사이즈 즉 크기가 다를 수 있다.)

변수에는 각각의 공간에 담을 수 있는 데이터의 종류가 다르게 설정되어 있고, 맞지 않는 데이터는 담을 수가 없다.

자료형 : 데이터를 지정해서 담는 용도
변수명 : 데이터 공간의 이름

변수의 선언 -> 자료형 + 변수명;

변수명의 제약사항

  1. 변수 이름은 영문자나 숫자를 사용할 수 있으며, 영문자는 대문자와 소문자를 구분한다.
  2. 변수 이름은 숫자로 시작할 수 없다.
  3. 이미 자바에서 쓰고 있는 예약어는 사용할 수 없다.
ex) 자료형 g_Level; // 가능하다

되지 않는것
	자료형 41age; (숫자가 앞에 오면 안된다.)
    
    (이미 자바에서 정해져 있는 예약어)
    자료형 while;
    자료형 for;

변수의 표기법

변수는 무조건 소문자로 시작한다.

  1. 카멜 표기법

    int korScore (이어지는 단어의 시작을 대문자로 써서 구분한다.)

  2. 헝가리안 표기법(스네이크 표기법)

    int FIRSTSCORE (이어지는 단어 앞에 언더바를 이용해 구분한다.)


자바 자료형

자료형의 종류

자료형키워드크기기본값표현되는 값의 범위
논리형boolean1bitfalsetrue 또는 false(0또는1)
문자형char2byte\u00000~65,535
정수형byte1byte0-128 ~ 127
short2byte0-32768~ 32767
int(기본)4byte0-2147483648 ~ 2147483647
long8byte0-9223372036854775808 ~ 9223372036854775807
실수형float4byte0.0-3.4E38 ~ +3.4E38
double(기본)8byte0.0-1.7E308 ~ +1.7E308

상수와 리터럴

  • 상수란?

    항상 변하지 않는 값
    상수는 자료형 앞에 final을 붙여 표현하고 항상 대문자 변수명을 사용한다.

  • 특징:

  1. 상수는 초기화가 이루어진 이 후에는 새로 초기화해서 사용할 수 없다.
  2. 상수는 선언을 하였으면 무조건 초기화 해야한다.

  • 리터럴이란?

    기본적으로 우리는 컴퓨터의 안에 데이터를 볼 수가 없고
    이 데이터를 예를 들어 100을 선언한다고 하였을 때
    int num = 100; 과 같은 형태로 선언을 할 수 있다.
    이 때 100이라는 숫자도 int 100 = 이진수; 로 이루어진
    변수이다. 하지만 이 변수는 우리가 설정하는 것이 아니고
    이 변수는 항상 같은 값을 유지 해야 하기에 이러한 개념을
    리터럴 상수라고 한다.

이러한 리터럴 때문에 우리가 정수나 선언하는 것들을 일일이
2진수로 변환해서 사용할 필요가 없다.

기본적으로 리터럴 상수는
정수 = int, 실수 = double이다.

그렇기 때문에 정수형 중에 Long자료형을 쓸 때는
뒤에 L을 붙여서 표현한다.
실수도 마찬가지로 float자료형을 쓸 때는
뒤에 F를 붙여서 표현해 준다.


형 변환

  • 업캐스팅

    문자 -> 정수 -> 실수
    (값이 작은 범위에서 큰 범위로의 형 변환)
    작은 곳에서 큰 곳으로 가기에 묵시적 형 변환이 가능하다 (형 변환 타입을 생략 가능하다.)

  • 다운캐스팅

    명시적 형 변환으로 큰 곳에서 작은 곳으로 가기 때문에
    큰 것을 작은 것으로 변환 하기 위해 타입을 꼭 명시해주어야한다.

예시코드

public class Casting3 {
	public static void main(String[] args) {
		double kor = 87.5;
		double eng = 95.7;
		double math = 80.5;
		
		// 각각의 점수들의 소수점을 빼고 합계를 내라 
		// 그 합계의 평균을 실수형으로 표시해라.
		
		int total = (int) kor + (int) eng + (int) math ;
		double avg = (double) total / 3.0;
		
		System.out.println("total: " + total);
		System.out.println("avg: " + avg);
		
	}
}

결과 창


연산자

  • 항과 연산자

    • 항은 값이다.
    • 연산자는 어떠한 방법으로 계산을 할 것인지 결정하는 기호이다.

연산자의 종류

  • 단항 연산자 : 항이 하나 인 것
  • 이항 연산자 : 항이 두 개인 연산자
  • 삼항 연산자 : 항이 세 개인 연산자

※ 연산을 하게 되면 항상 결과가 나온다.

  1. 대입 연산자 (=) : 변수에 값을 대입하는 연산자.
  2. 부호 연산자 (+, -): 양수, 음수
  3. 산술 연산자 (+,-,*,/,%) : 더하기, 빼기, 곱하기, 나누기 몫, 나누기 나머지

    산술 연산자 실습

public class Operation1 {
	public static void main(String[] args) {
		int add = 1 + 3 ;
		int sub = 10 - 5;
		int mul = 10 * 2;
		int div = 10 / 5;
		int remainder = 10 % 5;
		
		System.out.println(add); // 더하기
		System.out.println(sub); // 빼기
		System.out.println(mul); // 곱하기
		System.out.println(div); // 나누기 몫(정수 끼리의 나누기 경우)
		System.out.println(remainder); // 나머지 (배수를 구할 때) (짝수/ 홀수 구할 때)
		
		System.out.println(remainder == 0 ? "5의 배수이다." : "5의 배수가 아니다.");
	}
}

결과 콘솔창


  1. 증감 연산자 (++, --): ++ 항의 값에 1을 더 한다.
    -- 항의 값에 1을 뺀다.

    실습 코드

public class Operation2 {
	public static void main(String[] args) {
		int num = 10;
		
		num = num + 1;
//		++num; 해당 라인에서 바로 1을 더해서 변수에 대입(선 증가)
//		num++; 해당 라인에서 1을 더 하지만 변수에 대입은 되어있지 않다 (후 증가)
		
		System.out.println(num++);
		System.out.println(num);
	}
}

콘솔 결과창


  1. 관계 연산자 (>, <, >=, <=, ==, !=)
  2. 논리 연산자 (&&, ||, !)

    관계 연산자와 논리연산자 코드

/*
 * 
 *  논리 연산자
 *  AND(곱) T && T , T && F 하나라도 F이면 F이다.
 *  
 *  OR(합) T || T , T || F , F || F  모두 F 여야 F이다.
 *  
 *  NOT(부정) !T 참이면 거짓, 거짓이면 참
 *  
 */
public class Operation3 {
	public static void main(String[] args) {
		int num = 11;
		
		boolean flag1 = true;
		boolean flag2 = true;
		boolean flag3 = num % 2 == 0;
		
		
		System.out.println(flag1 && flag2);
		System.out.println(flag1 && flag3);
		
		System.out.println(!(flag1 || flag3 && flag2));
	}
}

결과 콘솔창


  1. 조건 연산자 : 조건식? 결과1 : 결과2
public class Operation6 {
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		/*
		 * 	시험 성적을 학점으로 계산하는 프로그램
		 * 	
		 * 	정수 자료형 score 변수 선언
		 * 	88 점으로 초기화
		 * 
		 * 	문자 자료형 grade 변수 선언
		 * 
		 * 	조건 
		 * 	score 가 0점보다 작거나 100점보다 크면  X를 출력
		 * 	score 가 90에서 100점이면 A학점
		 * 	score 가 80에서 89점이면 B학점
		 * 	score 가 70에서 79점이면 C학점
		 * 	score 가 60에서 69점이면 D학점
		 * 	score 가 0에서 59점이면 F학점
		 * 
		 * 
		 */
		
		int score = 58;
		
		char grade = score > 100 || score < 0 ? 'X'
				: score > 89 ? 'A' 
				: score > 79 ? 'B' 
				: score > 69 ? 'C'
				: score > 59 ? 'D': 'F';
				
		char plus = score > 100 || score < 60 ? '\0' : score % 10 > 4  || score == 100 ? '+' : '\0';
				
				
	    System.out.println("점수(" + score + "): " + grade + plus + "학점"  );
		
		
	}
}

결과 콘솔창


profile
백엔드 개발자 준비중

0개의 댓글