Salted Caramel

[수업 2일차] 2021.08.03 /형변환,printf,단축배정연산법 본문

coding/[2021.08.02~2022.01.24] 수업복습

[수업 2일차] 2021.08.03 /형변환,printf,단축배정연산법

꽃무늬라떼 2021. 8. 3. 21:45
  • 02_Variable-Ex03
  • 형변환
bybe by2 = (byte)num2;

자료형의 형변환 작업(묵시적 형변화)

int num1 = by;
int num1 = (int)by;

작은 자료형 데이터를 큰자료형에다가 넣을 경우에는 형변환을 앞에 써주지 않아도 되지만

 

큰자료형의 자료를 작은 자료에 넣을 때 오류가 생기는데

문제 해결: 큰자료형 데이터를 작은 자료형 데이터에다가 넣을 경우에는 반드시 형변환을 해줘야한다.

 

범위가 맞지 않는 자료형을 넣어주면 쓰레기값이 나온다. 

 

// by2 변수의 값이 -106이 나온 이유
		// byte 자료형의 범위(-128 ~ 127 )를 벗어났기 때문에 
		//쓰레기 값이 나오게 되었음.
		System.out.println("by2 >>> " +by2);

자료의 손실이 발생 할 수 있음. 

그 자료형의 범위를 벗어나게 되면 이상한 값이 나오게 된다. 

 

p74

  형변환(casting) : 해당 데이터 값의 자료형을 다른 타입의 자료으로 변환하는 것을 말함.
 - 형변환은 boolean형을 제외한 7가지 자료형은 서로 형변환이 가능함.
   
  1. 묵시적 형변환
    ==> 자료형의 크기가 작은 데이터를 큰 자료형의 데이터에 저장.
        이 때는 형변환 작업을 안 해 주어도 된다. 
  2. 명시적 형변환
     ==> 자료형의 크기가 큰 데이터를 작은 자료형의 데이터에 저장.
        이 때는 반드시 형변환 작업을 해 주어야 한다. 
         자료의 손실이 발생 할 수 있음.

 

  • printf문(form형) :출력 양식을 도와주는 메서드
System.out.printf();

이 위치에서 출력되는 값

 %,d: 이 위치에 값을 출력하는데 1000단위 컴마(,)을 표시해서 출력해주세요

 %d: 정수값을 출력

 %f: 실수값을 출력

 %s: 문자열을 출력

 

	//방법1
		System.out.println("num3 >>> " + num3);
	
    //방법2
     	System.out.printf("num3 >>> %d\n", num3);

 

소수점 이하 6자리까지만 출력 (반올림)

System.out.printf("avg >>> %f\n", avg);

 

소수점 이하 3자리까지 출력 

System.out.printf("avg >>> %.3f\n", avg);

 

소수점 이하 2자리까지 출력

System.out.printf("avg >>> %.2f\n", avg);

소수점 이하 1자리까지 출력

System.out.printf("avg >>> %.1f\n", avg);
package sist;

public class Ex03 {

	public static void main(String[] args) {
		
		//변수 선언 및 변수 초기화
		byte by = 127;
		
		System.out.println("by >>> " + by);
		
		// 자료형의 형변환 작업(묵시적 형변환)
		int num1 = by;
		
		System.out.println("num >>> " + num1);
		
		int num2 = 150;
		
		System.out.println("num2 >>> " + num2);
		
		
		// 자료형의 형변환 작업(명시적 형변환)
		byte by2 = (byte)num2;
		
		// by2 변수의 값이 -106이 나온 이유
		// byte 자료형의 범위(-128 ~ 127 )를 벗어났기 때문에 
		//쓰레기 값이 나오게 되었음.
		System.out.println("by2 >>> " +by2);
		
		/*
		 * 형변환(casting) : 해당 데이터 값의 자료형을 다른 타입의 
		 * 				      자료으로 변환하는 것을 말함.
		 * - 형변환은 boolean형을 제외한 7가지 자료형은 서로 형변환이 가능함.
		 * 
		 * 1. 묵시적 현변환
		 *    ==> 자료형의 크기가 작은 데이터를 큰 자료형의 데이터에 저장.
		 *        이 때는 형변환 작업을 안 해 주어도 된다. 
		 * 2. 명시적 형변환
		 *    ==> 자료형의 크기가 큰 데이터를 작은 자료형의 데이터에 저장.
		 *        이 때는 반드시 형변환 작업을 해 주어야 한다. 
		 *        자료의 손실이 발생 할 수 있음. 
		 *    
		 */
	
		int num3 =2147483647;
		
		System.out.println("num3 >>> " + num3);
		System.out.printf("num3 >>> %d\n", num3);
		
		System.out.printf("num3 >>> %,d\n", num3);
		
		double avg = 91.346666666666666;
		
		System.out.println("avg >>> " + avg);
		
		System.out.printf("avg >>> %f\n", avg);
		
		System.out.printf("avg >>> %.3f\n", avg);
		
		System.out.printf("avg >>> %.2f\n", avg);
		
		System.out.printf("avg >>> %.1f\n", avg);
		
		
		/*
		 *  출력 양식 메서드 - printf()
		 *  -%d : 정수값 출력
		 *  -%f : 실수값 출력
		 *  
		 */
		

	}

}

 

 


  • 02_Variable-Ex04

 

값을 저장할 때는 뒤에f를 붙여서 출력해도된다. 

변수에 있는 값을 저장할 때는 변수형으로 바꿔야 하지만

 

실수자료형은 형변환을 해줘도 상관 없는데 

명사자료형은 형변환을 하게 되면 자료의 손실이 발생할 수 있기 때문에 불편함이 있다.

 

  • 형변환
float fNum1 = 120.45;  //오류

float fNum1 = (float)120.45;  //해결1

float fNum1 = 120.45f;   //해결2 :float 자료형 변수를 실수 값 뒤에 f를 붙여서
 * 실수자료형 : 소숫점이 존재함 - float < double(기본형)
 * - float : 소숫점 이하 7(6)자리까지 표현이 가능함.
 * - double: 소숫점 이하 15~16자리까지 표현이 가능함.
 * - float 자료형의 변수에 실수 값을 저장 시에는 반드시 실수 값
 *   뒤에 f를 붙여 주어야함(생략하면 error)
 * - 실수형 데이터의 맨 뒤에 f를 붙이거나 데이터의 앞에(float) 명시를 
 *   안하면 오류가 발생하는 이유 ==> 실수형의 기본자료형은 double형이기 때문임.
 * - 실수 자료형에서 명시적 형변환을 진행하게 되면 자료의 손실이 거의 발생하지 않음.
package sist;

public class Ex04 {

	public static void main(String[] args) {
		
		double dNum = 123.45666;
		
		System.out.println("dNum >>> " + dNum);
		
		float fNum = (float)dNum;
		
		System.out.println("fNum >>> " + fNum);
		
		float fNum1 = 120.45f;
		

	}

}


  • 02_Variable-Ex05

유니코드

System.out.println(ch + 1);  // 66
System.out.println((char)(ch + 1));  // b
package sist;

/*
 *  - 단일 문자형 : char형(0 ~ 65535)  ==> 2byte
 *  - 자바에서는 유니코드 체계로 단일문자 처리가 됨
 */

public class Ex05 {

	public static void main(String[] args) {
		
		char ch = 'A';
		
		System.out.println("ch >>> " + ch);
		System.out.println((char)(ch + 1));  // 66
		System.out.println((char)(ch + 7));  // 72

	}

}

 


  • 02_Variable-Ex06
* 논리자료형(boolean형)
 * - 참이나 거짓을 처리하는 자료형.
 * - true : 참인 값.
 * - false : 거짓인 값.
 * - boolean형의 기본 값은 false 이다.
 * - True /False (x) ==> 반드시 소문자로 작성해야함.
package sist;

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


public class Ex06 {

	public static void main(String[] args) {
		
		boolean test = true;
		
		System.out.println("test 결과 >>> " + test);

	}

}

  • 02_Variable-Ex07
package sist;

// 두 수를 서로 교환해 보자.

public class Ex07 {

	public static void main(String[] args) {
		
		int su1 = 47;
		
		int su2 = 81;
		
		System.out.println("변경하기 전....");
		System.out.println("su1 : " + su1 + ", su2 : " + su2);
		
		//방법1
		//int temp = su1;
		
		//su1 = su2;
		
		//su2 = temp;
		
		//방법2
		
		int temp = su2;
		
		su2 = su1;
		
		su1 =temp;
		
		System.out.println("변경한 후....");
		System.out.println("su1 : " + su1 + ", su2 : " + su2);
		

	}

}

02_Variable-Ex07


1. 빈 package explorer에 커서를 가져가서 오른쪽마우스-new-java project

2. src 폴더-new-package

3. sist packgae(sist는 package 만들때 사용한 name)-new-class -main 메서드 체크 후 finish

 


  • 03_Operator-Ex01

 

연산: 주어진 식을 계산하여 결과를 얻어내는 과정.
 * - 피연산자 : 연산자의 작업 대상(예 : 20 + 10 ==> 20, 10 피연산자라고함)

 

+ 가 연산자

 

 * 연산: 주어진 식을 계산하여 결과를 얻어내는 과정.
 * - 피연산자 : 연산자의 작업 대상(예 : 20 + 10 ==> 20, 10 피연산자라고함)
 * - java에서 연산자의 종류
 * 	 1. 산술연산자
 * 	 2. 관계연산자(비교연산자)
 *   3. 논리연산자
 *   4. 단항연산자 / 3항연산자
 *   5. 배정연산자 / 단축배정연산자
 *   6. 비트연산자
 *   7. 쉬프트연산자
 */

/*
 *  1. 산술연산자
 *     - 덧셈(=), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)
 */
package sist;

public class Ex01 {

	public static void main(String[] args) {
		
		//같은 자료형의 경우에는 ,로 구분해서 한줄에 나열해도 된다. 
		int su1 = 10, su2 = 3;
		
		//덧셈연산
		System.out.println("덧셈결과 >>> " + (su1 + su2));
		System.out.println();   //빈 한 줄 추가
		
		//뺄셈연산
		System.out.println("뺄셈결과 >>> " + (su1 -su2));
		System.out.println();
		
		//곱셈연산
		System.out.println("곱셈결과 >>> " + (su1 * su2));
		System.out.println();
		
		//나눗셈연산
		System.out.println("나눗셈결과(몫) >>> " + (su1 / su2));
		System.out.println();
		
		//나머지연산
		System.out.println("나머지연산 >>> " + (su1 % su2));
		
		/*
		 * 나머지(%) 연산자
		 * - 나머지를 구하는 연산자.
		 * - 홀수, 짝수를 판별할 때 많이 사용. 
		 * - 배수 판별 시에도 사용. 
		 */
		
		

	}

}

 


  • 03_Operator-Ex02
System.out.println("su1 >= su2 결과 >>> " + (su1 >= su2));   ///su1 >= su2 결과 >>> true
 * 2.관계연산자(비교연산자)
 *   - >=(크거나 같은지), >(큰지), <=(작거나 같은지),
 *     <(작은지), ==(같은지), !=(같지 않은지)
 *   - 결과는 boolean형으로 반환됨. ==> true /false로 결과가 나옴.
 *   - 관계연산자는 제어문(조건문)에서 많이 사용되는 연산자. 
 *
package sist;

public class Ex02 {

	public static void main(String[] args) {
		
		int su1 = 10, su2 =5;
		System.out.println("su1 >= su2 결과 >>> " + (su1 >= su2));
		System.out.println();
		
		System.out.println("su1 > su2 결과 >>> " + (su1 > su2));
		System.out.println();
		
		System.out.println("su1 <= su2 결과 >>> " + (su1 <= su2));
		System.out.println();
		
		System.out.println("su1 < su2 결과 >>> " + (su1 < su2));
		System.out.println();
		
		System.out.println("su1 == su2 결과 >>> " + (su1 == su2));
		System.out.println();
		
		System.out.println("su1 ! = su2 결과 >>> " + (su1 != su2));
		System.out.println();
	}

}

 


boolean test = (su1 >= su2) && (su2 >= 5); 

System.out.println("test 결과 >>> " + test);
System.out.println();

 

boolean을 처음에만 지정한 이유

변수는 값이 변할 수 있기 때문에 

test하기 용도 이기 때문에 true / false를 판단하기 위한 용도이기 때문에 

 

 


  • 03_Operator-Ex03
 * 3. 논리연산자
 * 	  - 논리곱(&&) : 주어진 조건이 모두 참일 떄 결과가 true가 됨.
 *   			      그 나머지는 모두 false가 됨.
 * 	  - 논리합(||) : 주어진 조건 중 하나라도 참이면 결과는 true가 됨.
 *   			      그 나머지는  false가 됨
 *    - 부정(!) : true -> false가 되고 false -> true가 됨.
 *    - 논리연산자는 우선적으로 관계연산자를 실행한 후에 그 결과값을 가지고
 *      논리연산을 수행하게 됨.
package sist;

/*
 * 3. 논리연산자
 * 	  - 논리곱(&&) : 주어진 조건이 모두 참일 떄 결과가 true가 됨.
 *   			      그 나머지는 모두 false가 됨.
 * 	  - 논리합(||) : 주어진 조건 중 하나라도 참이면 결과는 true가 됨.
 *   			      그 나머지는  false가 됨
 *    - 부정(!) : true -> false가 되고 false -> true가 됨.
 *    - 논리연산자는 우선적으로 관계연산자를 실행한 후에 그 결과값을 가지고
 *      논리연산을 수행하게 됨.
 */

public class Ex03 {

	public static void main(String[] args) {
		
		int su1 = 10, su2 =7;
		
		
		//논리곱인 경우
		//true && true ==> true
		boolean test = (su1 >= su2) && (su2 >= 5); 
		
		System.out.println("test 결과 >>> " + test);
		System.out.println();
		
		// true && false ==> false
		test = (su1 >= su2) && (su2 <= 5);
		System.out.println("test 결과 >>> " + test);
		System.out.println();
		
		// false && true ==> false
		test = (su1 <= su2) && (su2 >= 5);
		System.out.println("test 결과 >>> " + test);
		System.out.println();
		
		// false && false ==> false
		test = (su1 <= su2) && (su2 <= 5);
		System.out.println("test 결과 >>> " + test);
		System.out.println();
		
		//논리합인 경우
		
		//true || true ==> true
		boolean test1 = (su1 >= su2) || (su2 >= 5);

		System.out.println("test1 결과 >>> " + test1);
		System.out.println();

		// true || false ==> true
		test1 = (su1 >= su2) || (su2 <= 5);
		System.out.println("test1 결과 >>> " + test1);
		System.out.println();

		// false || true ==> true
		test1 = (su1 <= su2) || (su2 >= 5);
		System.out.println("test1 결과 >>> " + test1);
		System.out.println();

		// false || false ==> false
		test1 = (su1 <= su2) || (su2 <= 5);
		System.out.println("test1 결과 >>> " + test1);
		System.out.println();
		
		

	}

}

 


  • 03_Operator-Ex04

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

 

++은 이 변수에 값을 하나 증가 시켜주세요

 

 

System.out.println("su1++ >>> " + su1++);  //10
//출력을 한 뒤에 하나를 증가시켜세요
        
System.out.println("++su2 >>> " + ++su2);  //11
        
10에서 하나 증가시켜주세요

 

4. 단항연산자 / 이항연산자 / 3항연산자
 * 	  - 단항연산자 : 1개의 항을 대상으로 연산을 수행.
 * 	  - 이항연산자 : 2개의 항을 대상으로 연산을 수행.
 *    - 3항연산자 : 3개의 항을 대상으로 연산을 수행.
단항연산자(++, --)  
		 * - 전위연산자 : 단항연산자가 변수명 앞에 오는 경우(++su2)
		 * 			     변수의 값을 하나 증가 또는 감소시킨 후 처리한다.
		 * - 후위연산자 : 단항연산자가 변수명 뒤에 오는 경우(su2++)
		 *             변수를 처리한 후 값을 하나 증가 또는 감소시킨다.
 * 3항연산자
		 * 형식)
		 *       (조건)  ? 수식1 : 수식2;
		 *       		  ==> 수식1 : 해당 조건이 참인 경우 실행 문장. 
		 *       		  ==> 수식2 : 해당 조건이 거짓인 경우 실행 문장.
		 * - 간단한 조건문 대신에 사용할 수 있는 연산자.
package sist;

/*
 * 4. 단항연산자 / 이항연산자 / 3항연산자
 * 	  - 단항연산자 : 1개의 항을 대상으로 연산을 수행.
 * 	  - 이항연산자 : 2개의 항을 대상으로 연산을 수행.
 *    - 3항연산자 : 3개의 항을 대상으로 연산을 수행.
 */ 


public class Ex04 {

	public static void main(String[] args) {
		
		//단항연산자(++, --)
		int su1 = 10, su2 =10;
		
		System.out.println("su1++ >>> " + su1++);  //10(후위연산자)
		System.out.println("++su2 >>> " + ++su2);  //11(전위연산자)
		System.out.println();
		
		/*
		 * 단항연산자(++, --)  
		 * - 전위연산자 : 단항연산자가 변수명 앞에 오는 경우(++su2)
		 * 			     변수의 값을 하나 증가 또는 감소시킨 후 처리한다.
		 * - 후위연산자 : 단항연산자가 변수명 뒤에 오는 경우(su2++)
		 *             변수를 처리한 후 값을 하나 증가 또는 감소시킨다.
		 */
		
		int su3 =10, su4 =20;
		
		System.out.println(++su3 + su4++);
		System.out.println();
		
		System.out.println((++su3 % 3) + (su3 * ++su4));
		
		/*
		 * 3항연산자
		 * 형식)
		 *       (조건)  ? 수식1 : 수식2;
		 *       		  ==> 수식1 : 해당 조건이 참인 경우 실행 문장. 
		 *       		  ==> 수식2 : 해당 조건이 거짓인 경우 실행 문장.
		 * - 간단한 조건문 대신에 사용할 수 있는 연산자.
		 * 
		 */
		
		
		int num1 = 45, num2 =23;
		
		//String 자료형은 문자열을 저장할 때 사용하는 자료형
		String result =
				(num1 > num2) ? "num1 값이 크다" : "num2 값이 크다";
		System.out.println(result);
		
		
		
		
		
		

	}

}

 

 


  • 03_Operator-Ex05
 *  5. 배정연산자 / 단축배정연산자.
 *     - 배정연산자
 *       형식) 변수 = 변수 or 값 or 수식
 *       * 좌변에는 항상 변수명이 온다. 
 *       * 우변에는 숫자, 변수명, 수식이 온다.
 *     - 단축배정연산자
 *       * 배정연산자를 간편한게 사용하는 연산자.
package sist;

/*
 *  5. 배정연산자 / 단축배정연산자.
 *     - 배정연산자
 *       형식) 변수 = 변수 or 값 or 수식
 *       * 좌변에는 항상 변수명이 온다. 
 *       * 우변에는 숫자, 변수명, 수식이 온다.
 *     - 단축배정연산자
 *       * 배정연산자를 간편한게 사용하는 연산자. 
 *       
 */

public class Ex05 {

	public static void main(String[] args) {
		
		// 배정연산자
		// 형식) 변수 = 숫자(값)
		int su1 = 10, su2 =28, result = 0;
		
		// 형식) 변수 = 변수;
		su1 = su2;
		
		// 형식) 변수 = 수식
		su1 = su2 +27;
				
		System.out.println("su1 >>> " + su1);
		
		// result = result + 10;
		
		//단축배정연사자를 이용하여 처리
		result += 10;
		
		System.out.println("result >>> " + result);
		System.out.println();
		
		int su = 15;
		
		/*
		System.out.println("su >>>" + (su = su +5));  // su =20
		System.out.println();
		
		System.out.println("su >>>" + (su = su -5));  // su =15
		System.out.println();
		
		System.out.println("su >>>" + (su = su *5));  // su = 75
		System.out.println();
		
		System.out.println("su >>>" + (su = su /5));  // su = 15
		System.out.println();
		
		System.out.println("su >>>" + (su = su %5));  // su = 0
		System.out.println(); */
		
		
		
		//단축배정연산법
		System.out.println("su >>>" + (su += 5));  // su =20
		System.out.println();
		
		System.out.println("su >>>" + (su -= 5));  // su =15
		System.out.println();
		
		System.out.println("su >>>" + (su *= 5));  // su = 75
		System.out.println();
		
		System.out.println("su >>>" + (su /=5));  // su = 15
		System.out.println();
		
		System.out.println("su >>>" + (su %=5));  // su = 0
		System.out.println();
		
		

	}

}

 

String 자료형은 문자열을 저장할 때 사용하는 자료형

 

 

단축 배정연산법

result = result + 10;

result += 10;

 

두가지는 같은 말이다.

 

 


  • 03_Operator-Ex06
 * 6. 비트연산자
 *     - 비트(0,1)를 이용하여 연산하는 연산자. 
 *     - &(and) : 두 비트의 조건이 참(1)인 경우 1을 반환, 그 외에는 0을 반환.
 *     - | (or) : 두 비트 중 하나만 조건이 참(1)이어도 1을 반환, 그 이외에는 0을 반환.
 *     - ^ (xor) : 두 비트 중 서로 다른 경우에만 1을 반환, 그 이외에는 0을 반환.
package sist;

/*
 * 6. 비트연산자
 *     - 비트(0,1)를 이용하여 연산하는 연산자. 
 *     - &(and) : 두 비트의 조건이 참(1)인 경우 1을 반환, 그 외에는 0을 반환.
 *     - | (or) : 두 비트 중 하나만 조건이 참(1)이어도 1을 반환, 그 이외에는 0을 반환.
 *     - ^ (xor) : 두 비트 중 서로 다른 경우에만 1을 반환, 그 이외에는 0을 반환. 
 */


public class Ex06 {

	public static void main(String[] args) {
		
		//십진수
		int num1 = 10, num2 = 5, result;

		//비트연산을 하기 위해서는 십진수를 이진수로 변환
		//num = 1010, num2 = 0101
		
		// and 연산 
		result = num1 & num2;   // 1010 & 0101 = 0000
		System.out.println("and result >>> " + result);
		System.out.println();
		
		//or 연산
		result =num1 | num2;   //1010 | 0101 = 1111
		System.out.println("or result >>> " + result);
		System.out.println();
		
		//xor 연산
		num2 = 8;
		result = num1 ^ num2;  //1010 ^ 1000 = 0010
		System.out.println("xor result >>> " + result);
		System.out.println();
		
	}

}

 

^ (xor) : 두 비트 중 서로 다른 경우에만 1을 반환, 그 이외에는 0을 반환. 

 

 

 


  • 03_Operator-Ex07

7. 쉬프트연산자 (속도 때문에 사용 C 언어나 C++에서 사용한다)

 * 7. 쉬프트연산자
 *    - 비트를 대상으로 왼쪽 / 오른쪽으로 비트를 밀어서 연산을 수행하는 연산자.
 *    - 왼쪽쉬프트(<<) : 왼쪽으로 비트수만큼 이동하는 연산자. 
 *    				  오른쪽에 비어 있는 빈 칸(비트)은 0으로 채워줌
 *    
 *    - 오른쪽쉬프트(>>) : 오른쪽으로 비트수만큼 이동하는 연산자.
 *    					왼쪽에 비어 있는 빈 칸(비트)은 부호비트로 채워줌.
 *                      (부호비트-양수면 빈칸을 채우고 음수면 1을 넣어준다)
 *    - 오른쪽쉬프트(>>>) : 오른쪽으로 비트수만큼 이동하는 연산자
 *                      왼쪽에 비어있는 빈 칸(비트)은 0으로 채워줌
package sist;

/*
 * 7. 쉬프트연산자
 *    - 비트를 대상으로 왼쪽 / 오른쪽으로 비트를 밀어서 연산을 수행하는 연산자.
 *    - 왼쪽쉬프트(<<) : 왼쪽으로 비트수만큼 이동하는 연산자. 
 *    				  오른쪽에 비어 있는 빈 칸(비트)은 0으로 채워줌
 *    
 *    - 오른쪽쉬프트(>>) : 오른쪽으로 비트수만큼 이동하는 연산자.
 *    					왼쪽에 비어 있는 빈 칸(비트)은 부호비트로 채워줌.
 *                      (부호비트-양수면 빈칸을 채우고 음수면 1을 넣어준다)
 *    - 오른쪽쉬프트(>>>) : 오른쪽으로 비트수만큼 이동하는 연산자
 *                      왼쪽에 비어있는 빈 칸(비트)은 0으로 채워줌
 */
public class Ex07 {

	public static void main(String[] args) {
		
		int num1 = 10, num2 =5;
		
		// 쉬프트 연산자도 비트연산자와 마찬가지로 
		// 십진수를 이진수로 변환
		// num1 = 1010, num2= 0101;
		System.out.println(num1 << 2);
		System.out.println();
		
		System.out.println(num2 >> 1);
		
		
	}

}

 

 

 


  • 03_Operator-Ex08 (키보드로 숫자 입력을 받아보자)
package sist;

public class Ex08 {

	public static void main(String[] args) {
		
		//키보드로 두 개의 숫자를 입력 받아 보자.
		String su1 = args[0];
		String su2 = args[1];
		
		System.out.println("su1 + su2 >>> " + (su1 + su2));
		System.out.println();
		
		int num1 = Integer.parseInt(su1);
		int num2 = Integer.parseInt(su2);
		
		System.out.println("num1 + num2 >>> " + (num1 + num2));
	}

}

[ ]: ch5체서 배울 내용 -배열

 

변수는 하나의 값만 저장할 수 있음

배열은 여러 개의 값을 저장할 수 있음 (ch 5에서)

 

//키보드로 두 개의 숫자를 입력 받아 보자.
		args[0];

[] 배열의 주소값

 

 

 

 

 

 

아래 두 줄로 표현한 방법이

int num1 = Integer.parseInt(su1);
int num2 = Integer.parseInt(su2);

 

아래 한 줄로 표현한 코드와 같다

int su1 = Integer.parseInt(args[0]);

 


  • 03_Operator-Ex09

1. Run 버튼 옆에 화살표 표시 클릭

2. Run configurations 클릭

 

3. Main class -Search로 타겟하는 class를 선택

4. Arguments - Program arguments 란에 세로로 순차적으로 입력.

package sist;

public class Ex09 {

	public static void main(String[] args) {
		
		// 1. 키보드로부터 두 개의 숫자를 입력을 받자. 
		//    입력 받은 두 수를 숫자로 변환을 시키자.
		int su1 = Integer.parseInt(args[0]);
		int su2 = Integer.parseInt(args[1]);
		
		//2. 두 수를 가지고 산술연산을 진행해 보자. 
		System.out.println("덧셈 >>> " + (su1 + su2));
		System.out.println("뺼셈 >>> " + (su1 - su2));
		System.out.println("곱셈 >>> " + (su1 * su2));
		System.out.println("나눗셈 >>> " + (su1 / su2));
		System.out.println("나머지 >>> " + (su1 % su2));
	}

}

 

 

개발 코드는 키보드로 입력 받는것이 좋다. 

 


total / 4

 

int / int 를 나누면 실수값이 되고 나머지가 나오지 않음

double 타입으로 변수 지정

 

 


  • 03_Operator-Exam_01.java
package sist;

/*
 * [문제] 이름과 국어, 영어, 수학, 자바 점수를 
 *       키보드로 입력받아서 성적을 처리해 보자. 
 *       총점, 평균을 구해 보자. 
 *       
 */

public class Exam_01 {

	public static void main(String[] args) {
		
		// 1. 키보드로 이름, 국어, 영어, 수학,
		//    자바 점수를 입력을 받자.
	 String name = args[0];    //이름을 키보드로 입력
	 int kor = Integer.parseInt(args[1]);  //국어 점수 키보드로 입력
	 int eng = Integer.parseInt(args[2]);  //영어 점수 키보드로 입력
	 int mat = Integer.parseInt(args[3]);  //수학 점수 키보드로 입력
	 int java = Integer.parseInt(args[4]);  //자바 점수 키보드로 입력
	 
	 	// 2. 총점을 구해야 한다. 
	 	//    총점 = 국어 + 영어 + 수학 + 자바점수
	 
	 int total = kor + eng + mat + java;
	 
	 	// 3. 평균을 구해야 한다. 
	  	//    평균 = 총점 / 과목 수
	 
	 double avg = total / 4.0;
	 
	 	// 4. 화면에 성적을 출력해 주자. 
	 System.out.println("이     름 : " + name);
	 System.out.println("국어점수 : " + kor + "점");
	 System.out.println("영어점수 : " + eng + "점");
	 System.out.println("수학점수 : " + mat + "점");
	 System.out.println("자바점수 : " + java + "점");
	 System.out.println("총     점 : " + total + "점");
	 System.out.printf("평     균 : %.2f점\n", avg);
	 
	 
	}
}

 

 

 

 

 

 

 

 

 

왜이렇게 재미있지? 적성을 찾은 것일까 생각이 된다. 아직 초반이라서 그런건가 싶기도 하고 하지만 코딩을 배우는게 재미있다. 9시부터 6시까지 수업을 듣는 과정은 고등학생으로 돌아간 기분이라서 힘이 들지만, 내가 작성하는 코드가 콘솔 화면에서 잘 나타날때의 쾌감은 지금은 좋다. 빨간글씨가 뜰때마다 눈 동그랗게 뜨고 오탈자 찾는 과정을 거치고 혼자서 알아냈을 때의 쾌감도 좋다.  (AM 3:07복습 완료)

 

참고도서. 자바의 정석