AWS BACK DAY 2. "Java 변수, 자료형, 상수, 형 변환, 연산자 개념 정리"

이강용·2023년 1월 2일

Java 기초

목록 보기
2/26
post-thumbnail

📌 변수

변수란? 프로그래밍에서 처음에 사용한 값과 다르게 변하는 값을 변수라 한다.

자료형 + 변수명
변수명 _ 제약사항

변수 이름은 영문자(대문자,소문자)나 숫자를 사용할 수 있고 구분하며, 특수 문자 중에는 $,_ 만 사용할 수 있다.

변수 이름은 숫자로 시작할 수 없다. ex) 27day,10eight

자바에서 이미 사용 중인 예약어는 사용할 수 없다. ex) while,for,int,if 와 같은....

📌 카멜 표기법 (Camel Name)

두 단어 이상의 변수명을 표현할 때 두 번째 단어부터 철 글자를 대문자로 표기하는 방법

  • 클래스 명
    • 맨 앞 글자를 대문자로 한다.
    • 두 번째로 오는 의미있는 단어의 앞 글자도 대문자이다.
      ex) public MyClass{}
  • 변수 명
    • 맨 앞 글자를 소문자로 한다.
    • 두 번째로 오는 의미있는 단어의 앞 글자는 대문자이다.
      ex) String myName;
  • 메소드 명
    • 맨 앞 글자를 소문자로 한다.
    • 두 번째로 오는 의미있는 단어의 앞 글자는 대문자이다.
    • 단, 메소드의 이름은 가급적 동사로 시작할 수 있도록 명명하는것이 좋다
      ex) public String createMyName(){}

📌 헝가리안 표기법(Hungarian Notation)

고안자인 찰스 시모니가 헝가리인이여서 헝가리안 표기법이라 불림

변수를 표기할 때 앞에 접두어로 자료형을 알아볼 수 있도록 표기

ex) int nNum , float fNum, argument of String -> args

Data TypeprefixExample
booleanbbContinue
intnnIndex
shortnnNum
charccFirstInitial
Strings(str)sCustomerName(strCustomerName)
  • 자료형 + 변수명

    선언과 초기화

    int level;

    level = 10;

    int level = 10;

📌 기본 자료형

자료형키워드크기기본값표현 범위
논리형boolean1bitfalse
문자형char2byte\u000
정수형byte1byte0
정수형short2bye0
정수형int4byte0
정수형long8byte0
실수형float4byte0.0
실수형double8byte0.0

정수형 int의 선언 & 초기화

 int num = 10; // 선언과 동시에 초기화
		int num2; // 4byte의 메모리 공간을 할당할 것이고 그 공간의 이름을 num2으로 선언
		num2 = 10; // num2 변수명을 가진 메모리 공간의 데이터를 비우고 10의 값을 대입 (초기화)
		
		System.out.println(num);
  final int NOW_AGE = 20; // 상수 자료형 앞에 final이 붙는다.
    // 상수는 상수명을 무조건 대문자로 사용을 한다
	NOW_AGE = 30; //  한 번 설정된 값은 변하지 않는다 (Error)
	System.out.println(NOW_AGE); //20

정수 = int, 실수 = double

long과 float

  • 정수 자료형

    long

    long num = 12345678900L;

  • 실수 자료형

    Float

    float fnum = 3.14F;

📌 상수와 리터럴

상수 : 항상 변하지 않는 값 final 예약어로 선언

final double PI = 3.14;
final int MAX_NUM = 100;

📌 형 변환

형 변환이란? 각 변수의 자료형이 다를때 자료형을 같게 바꾸는 것을 의미

  1. byte 크기가 작은 자료형에서 큰 자료형으로 형 변환은 자동으로 이루어진다.
  2. 정밀한 자료형에서 정밀한 자료형으로 형 변환은 자동으로 이루어진다.
  • 업캐스팅, 다운캐스팅

    • 형변환타입 변수 2 = (형변환타입) 변수 1

UpCasting : 문자 -> 정수 -> 실수

  • 값이 작은 범위에서 큰범위로의 형 변환

  • 묵시적 형 변환(형 변환 타입 생략 가능)

DownCasting : 실수 -> 정수 -> 문자

  • 강제 형변환
  • 명시적 형변환

명시적 형변환과 묵시적 형변환의 예

char char_a = 'a';
		int num = (int)char_a; //UpCasting - 묵시적 형변
		
		System.out.println(num);
		
		char char_b = (char)(num+1); //DownCasting - 명시 꼭해야함
		System.out.println(char_b);
``


>97
>답 b

문제 1)
```java
double kor = 87.5;
		double eng = 95.7;
		double math = 80.5;
		
		int total = 0;  //정수	
		double avg = 0;  // 실수 

		
		total = (int)kor +(int)eng+(int)math;// 실수 > 정수 = DownCasting, 강제 형변 필요

		avg = (double)total/3.0; 
		
		System.out.println("합계: "+total);
		System.out.println("평균: "+ avg);

답 : 합계: 262
평균: 87.333333333333

why? (왜 그런지 이유를 늘 생각하기)

kor, eng, math 각변수를 강제 형변환 시킨뒤 (소수점 날리기)

total / 3

(double)total/3 =>3이 묵시적 형변환으로 3.0 또는

total / 3.0 =>total이 묵시적 형변환

대입 연산자

변수에 값을 대입하는 연산자

int age = 24;

부호 연산자

+,-

산술 연산자

+,-,*,/,%

증감 연산자

++,--

++ : 항의 값에 1을 더한다

-- : 항의 값에 1을 뺀다

  • (증감연산자) 변수 : 전위 연산자 -> 선증감 후처리

  • 변수 (증감연산자) : 후위 연산자 -> 선처리 후증감

관계 연산자

// > , < , >= , <= , ==, !=

논리연산자

AND (곱) &&

OR (합) ||

NOT (부정) !=

조건 연산자(삼항 연산자)

조건식 ? 결과1 : 결과2

조건식이 참이면 결과1을 반환, 거짓이면 결과2를 반환

int num1 = 10;
		int num2 = 5;
		int result = num1 > num2 ? num1*-1:num2*-1;
			
		System.out.println(result);

결과 : -10

int num = 89;
		
		int result2 = num / 90  == 1 ? 90
					: num / 80 == 1 ? 80 
					: num / 70 == 1 ? 70 
					: 0;
		System.out.println(result2);

결과 : 80

문제1)

/*
		 *  시험 성적을 학점으로 계산하는 프로그램을 작성하시오.
		 * 정수 자료형 score변수 선언
		 * 88점으로 초기화
		 * 조건
		 * score가 0점보다 작거나 100점보다 크면 X를 출력
		 * score가 90~100점이면 A학점
		 * score가 80~89점이면 B학점
		 * score가 70~79점이면 C학점
		 * score가 60~69점이면 D학점
		 * score가 0 ~ 59점이면 F학점
		 */

1안

int score = 59;
if(score < 0 || score > 100) {
			System.out.println("X");
		}
		else if(score > 89 && score < 101) {
			System.out.println("점수(" + score + "): A학점" );
		}
		else if(score > 79 && score < 90) {
			System.out.println("점수(" + score + "): B학점" );
		}
		else if(score > 69 && score < 80) {
			System.out.println("점수(" + score + "): C학점" );
		}
		else if(score > 59 && score < 70) {
			System.out.println("점수(" + score + "): D학점" );
		}
		else if(score > 0 && score < 60) {
			System.out.println("점수(" + score + "): F학점" );
		}

2안

int score = 60;
				char grade =  
				score < 0 || score > 100 ? 'X' 
				: score > 89 && score < 101 ? 'A'
				: score > 79 && score < 90 ? 'B'
				: score > 69 && score < 80 ? 'C'
				: score > 59 && score < 70 ? 'D'
				:  'F';
				
				System.out.println("점수(" + score + "): " + grade+"학점");

3안

int score = 101;
				char grade =  
				score < 0 || score > 100 ? 'X' 
				: score > 89  ? 'A'
				: score > 79  ? 'B'
				: score > 69  ? 'C'
				: score > 59  ? 'D'
				:  'F';
				
				System.out.println("점수(" + score + "): " + grade +"학점");

심화버전) A+, B+ ~ 만들기

int score = 90;
		char grade =  
		score < 0 || score > 100 ? '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 +"학점");
  • 문자열 합치기

    문자와 문자열은 + 연산자로 합칠 수 있다

  • 표준입력

    Scanner Class

    String class

    콘솔에서 키보드 입력을 받는 클래스

    API에서 제공하는 java.util.Scanner class를 이용

    각 자료형에 맞는 문법이 따로 존재
import java.util.Scanner;


Scanner scanner = new Scanner(System.in); //Cntl + shift + O ( 객체 생성까지 했을 때 자동완성 )
int a = scanner.nextInt();

기본적인 문법 형태

profile
HW + SW = 1

0개의 댓글