JAVA_02

김민영·2024년 1월 25일

JAVA

목록 보기
3/10
post-thumbnail

변수 (Variable) ?

  • 프로그래밍에서 가장 기본적인 동작은 데이터를 저장하고, 저장된 데이터의 값을 읽어 오는 것
  • 데이터 값을 저장하려면 메모리에 값을 저장할 공간을 생성하고, 이름을 부여해야 함
  • 변수는 하나의 데이터(값)를 저장할 수 있는 메모리 공간을 의미함
  • 변수는 여러 개의 값을 저장할 수 없고, 오직 하나의 값만을 저장할 수 있음
  • 필요한 데이터를 저장할 곳을 미리 선언해 두고, 나중에 계속해서 사용하기 위해 변수를 만듦
  • 데이터를 저장하기 위해 생성되는 메모리 공간은 목적에 따라 크기와 특징이 다른데,
    이를 자료형이라고 함
    즉, 메모리 공간의 자료형에 다라 저장할 수 있는 값의 종류와 크기가 결정이 됨

변수 선언하는 방법

형식) 자료형 변수명;

  • 자료형 : java의 기본 자료형 (8가지)

    1. 정수형(정수자료형) : byte(1바이트), short(2바이트), int(4바이트-기본형), long(8바이트)
    2. 실수형(실수자료형) : float(4바이트), double(8바이트 - 기본형)
    3. 단일문자형 : char형 (2~3바이트)
    4. 논리형(논리자료형) : boolean(true / false)
    • 나머지 자료형은 참조자료형 : 5장부터 나오는 내용.
  • 변수형 : 사용자가 임의로 만들 수 있음.


변수 사용 절차

1. 변수 선언 ==> 자료형 변수명;
2. 변수 초기화 ==> 변수에 값을 저장 (= 기호를 사용)
3. 변수 이용 ==> 연산 및 출력

변수명(식별자) 만드는 규칙

  • 변수명, 메서드명, 클래스명 등의 이름을 지정할 때 사용.
    1. 예약어 (키워드 - 문법적으로 사용되는 단어) 사용 불가.
    2. 영문자 또는 특수문자(_or$)로 시작해야 함.
    3. 숫자로 시작해서는 안 됨. 예) 1sum (x)
    4. 대소문자는 구분함 - SUM과 sum은 다른 변수명으로 인식함.
    5. 변수명은 의미있게 만드는 것이 좋음.
    6. 변수명에 두 개의 단어가 결합이 된 경우에는 두 번째 글자의 첫 글자는 대문자로 작성하는 것이 관례임(CarlmelCase기법)
public class Variable_01 {

	public static void main(String[] args) {
		// 1. 변수 선언 ==> 자료형 변수명;
		byte su1;
		byte su2;
		// 2. 변수의 초기화 ==> 변수에 값을 저장.
		su1 = 73;
		su2 = 57;
		
		su1 = 100;
		
		System.out.println("su1 >>> "+su1);
		System.out.println("su12 >>> "+su2);

		System.out.println("su1 + su2 >>> "+(su1+su2));
	}

}
public class Variable_02 {

	public static void main(String[] args) {
		// 1. 변수 선언
		// int num;
		
		// 2. 변수 초기화
		// num = 130;
		
		// 1 + 2 : 변수 선언 및 변수 초기화
		int num = 135;
		
		num = num + 100;
		
		int num2 = num;
		
		// 3. 변수 연산 또는 변수 출력
		System.out.println("num >>> "+ num);
		System.out.println("num2 >>> "+ num2);

	}

}
public class Variable_03 {

	public static void main(String[] args) {
		
		int su1 = 67, su2 = 19; // 같은 변수일 때는 , 로 구분해서 한줄로 작성 가능
		
		System.out.println("su1변수의 값은 "+ su1 + " 입니다."); 
        
        // ctrl + alt + 화살표 : 같은 내용 그 방향으로 복사
        
		System.out.println("su2변수의 값은 "+ su2 + " 입니다."); 
		
		System.out.println("두 수의 합은 " + (su1+su2) +" 입니다.");

	}

형변환(casting)

=> 해당 데이터 값의 자료형을 다른 데이터 타입의 자료형으로 변환하는 것을 말함.

  • 형변환은 boolean 형을 제외한 7가지 자료형은 서로 형변환이 가능함

1. 묵시적 형변환

==> 자료형의 크기가 작은 데이터를 큰 자료형의 변수에 저장하는 경우
이 때는 형변환 직업을 안 해 주어도 됨.

2. 명시적 형변환

==> 자료형의 크기가 큰 데이터를 작은 자료형의 변수에
저장하는 경우. 이 때는 반드시 형변환 작업을 해 주어야 함.

※ 형변환 작업 시에는 자료의 손실이 발생할 수 있음.

public class Variable_04 {

	public static void main(String[] args) {
		
		// 변수 선언 및 변수 초기화
		byte su = 127;
		
		System.out.println("su >>> "+su);
		
		// 자료형의 형변환 작업 (묵시적 형변환) -- 기제 필요 없음
		int num1 = su; // int = 4byte
		
		System.out.println("num1 >>> "+ num1);
		
		int num2 = 130;
		
		System.out.println("num2 >>> "+ num2);
		
		// 자료형의 형변환 작업 (명시적 형변환) -- 반드시 형변환 기제 필요! 안하면 오류 발생
        
		byte su2 = (byte)num2; 
        // 큰 값을 작은 곳에 넣긴 어려움 -> 따라서 형변환 필요 ==> (byte)
		
		System.out.println("su2 >>> "+ su2);

	}

}

실수자료형 : 소수점이 발생하는 자료형

  • float : 소수점 이하 6~7 자리까지 표현이 가능함.
  • double : 소수점 이하 15 ~ 16 자리까지 표현이 가능함.

float 자료형의 변수에 실수 값을 저장 시 오류 발생

이유 : 실수 자료형의 기본형은 double형이기 때문임.

  • 따라서 float 자료형의 변수에 실수 데이터를 저장 시 반드시 실수 값 앞에
    float라고 형을 기재해 주거나 아니면 값 뒤에 f를 붙여주면 됨.(생략 시 error 발생)
  • 자료의 손실은 거의 발생하지 않음.
 public class Variable_05 {

	public static void main(String[] args) {
		
		double dNum = 123.45666; // double = 8byte
		
		System.out.println("dNum >>> "+dNum);
		
		float fNum = 1245.78954f; // float = 4byte  (float) 대신 맨 뒤에 f 써도 됨
		
		System.out.println("fNum >>> " + fNum);
		
		
	}

}

단일문자형 : char형(0 ~ 65535) ==> 2바이트

  • 자바에서는 유니코드(UTF-8) 체계로 단일문자가 처리가 됨
public class Variable_06 {

	public static void main(String[] args) {
		char ch1 = 'B';
		
		System.out.println("ch1 >>> " + ch1);
		
		System.out.println((char)(ch1 + 1)); 
        // B + 1 = C / (ch1 + 1) 숫자 = 67 --> 66 + 1 ==> 67(C)

	}

}

논리 자료형(boolean형)

  • 참이나 거짓을 판별(처리)하는 자료형
  • true : 참인 값
  • false : 거짓인 값
  • boolean형의 기본 값은 false
  • True / False(X) ==> 반드시 소문자로 작성해야 함
논리 자료형(boolean)
* - 참이나 거짓을 판별(처리)하는 자료형
* - true : 참인 값
* - false : 거짓인 값
* - boolean형의 기본 값은 false* - True / False(X) ==> 반드시 소문자로 작성해야 함

public class Variable_08 {

	public static void main(String[] args) {
		// 변수 선언 및 변수 초기화
		
		int su1 = 47, su2 = 83;
		
		System.out.println("변경하기 전....");
		
		System.out.println("su1 >>> " + su1);
		
		System.out.println("su2 >>> " + su2);
		
		// 두 변수의 값을 서로 바꾸는 방법
		
		//방법 1
		int temp = su1; // 임의 변수 선언
		
		su1 = su2; // su1 변수에 su2 값 삽입
		
		su2 = temp;
		
		/* 방법 2
		 * int temp = su2;
		 * su2 = su1;
		 * su1 = temp;
		 */

		System.out.println("변경 후....");
		
		System.out.println("su1 >>> " + su1);
		
		System.out.println("su2 >>> " + su2);
		
		
	}

}

<문제풀기>

[문제1] 국어, 영어, 수학, 자바 변수를 만들고 해당 변수에 점수를 입력 후 총점과 평균을 구하여 화면에 출력해보세요.

조건1) 평균은 소숫점 이하 2자리까지만 출력할 것.

import java.util.Scanner;

public class Exam_01 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("국어 점수 입력 : ");
		int k = sc.nextInt();
		
		System.out.print("영어 점수 입력 : ");
		int e = sc.nextInt();
		
		System.out.print("수학 점수 입력 : ");
		int m = sc.nextInt();
		
		System.out.print("자바 점수 입력 : ");
		int j = sc.nextInt();
		
		System.out.println();
		
		int sum = k+e+m+j;
		double avg = k+e+m+j/4.0;
		
		System.out.println("국어 점수 : " + k + "점");
		System.out.println("영어 점수 : " + e + "점");
		System.out.println("수학 점수 : " + m + "점");
		System.out.println("자바 점수 : " + j + "점");
		System.out.print("총    점 : " + sum);
		System.out.println("점");
		System.out.printf("평   균 : %.2f", avg);
		System.out.println("점");

		sc.close();



	}

}

[문제2] 임의의 정수 하나를 입력 받아서 그 수의 제곱, 세제곱을 구하여 화면에 출력해 보세요

import java.util.Scanner;

public class Exam_02 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("정수 입력 : ");
		int num = sc.nextInt();
		
		System.out.println();
		
		System.out.println("입력 받은 정수 ==> "+num);
		System.out.printf( num+"의 제곱 ==> %d\n",(num*num));
		System.out.printf( num+"의 세제곱 ==> %d ",(num*num*num));
	
		sc.close();
	}

}

[문제3] 키보드로 금액과 상품단가, 수량을 입력하면 부가세, 상품총액, 거스름돈을 화면에 보여주는 프로그램을 완성해 보세요.

※ 부가세 : (상품단가 수량) 의 10%
※상품총액 : (상품단가
수량) + 부가세

import java.util.Scanner;

public class Exam_03 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("입금액 입력 : ");
		int x = sc.nextInt();
		
		System.out.print("상품 단가 입력 : ");
		int y = sc.nextInt();
		
		System.out.print("상품 수량 입력 : ");
		int z = sc.nextInt();
		
		System.out.println();
		
		int i = (int) ((y * z) *0.1);
		int l = (int)((y * z) + i);
		int w = (int)(x - l);
		
		System.out.println("지불한 금액 : " + x + "원");
		System.out.println("제품 단가 : " + y + "원");
		System.out.println("수량 : " + z);
		System.out.println("부가세 : " + i + "원");
		System.out.println("상품 총액 : " + l + "원");
		System.out.printf("거스름 돈 : " + w + "원");
		
		sc.close();

	}

}

[문제3] 키보드로 임의의 숫자 4자리를 입력을 받는다.

오천원짜리 몇장, 천원짜리 몇장, 오백원짜리 몇개,백원짜리 몇개, 오십원짜리 몇개, 십원짜리 몇개, 일원짜리가 몇개로 구성되어 있는지 화면에 출력해 보세요.

- 예) 3781 = 천원짜리 3장, 오백원짜리 1개, 백원짜리 2개,
오십원짜리 1개, 십원짜리 3개, 일원짜리 1개

import java.util.Scanner;

public class Exam_04 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		
		System.out.print("4자리 숫자 입력 : ");
		int su = sc.nextInt();
		System.out.println();
		
		
		/* 
         * 변수를 나누기연산으로 장수를 구하고, 
         * 나머지연산을 이용하여 남은 수를 구해준다
         */
         
		int x = su/5000; su %= 5000; 
		int y = su/1000; su %= 1000;  
		int z = su/500; su %= 500;
		int i = su/100; su %= 100;
		int u = su/50; su %= 50;
		int o = su/10; su %= 10;
		int w = su/5; su %= 5;
		int p = su/1; su %= 1; 
		
		/* 
		 * 축약된 방법
		 * int x = su /5000;
		 * int y = su % 5000 / 1000;
		 * int z = su % 1000 / 500;
		 * int i = su % 500 / 100;
		 * int u = su % 100 / 50;
		 * int o = su % 50 / 10;
		 * int w = su % 10 / 5;
		 * int p = su %10;
		 */
		

		System.out.println("오천원 지폐 : " + x + "장");
		System.out.println("천원 지폐 : " + y + "장");
		System.out.println("오백원 동전 : " + z + "개");
		System.out.println("백원 동전 : " + i + "개");
		System.out.println("오십원 동전 : " + u + "개");
		System.out.println("십원 동전 : " + o + "개");
		System.out.println("오원 동전 : " + w + "개");
		System.out.println("일원 동전 : " + p + "개");
		
		sc.close();
		
	}

}
profile
나다

0개의 댓글