본문 바로가기

Java

Java(2) - 변수, 진수, 데이터 타입, 연산자

728x90
반응형

<목차>

1) 변수

   1-1) 변수의 교환

2) 진수

3) 데이터 타입(자료형)

   3-1) 문자형(char), 탈출 문자, 텍스트 블록

4) 연산자

   4-1) 산술 연산자

   4-2) 대입 연산자

   4-3) 관계 연산자

   4-4) 복합 관계 연산자

   4-5) 증감 연산자

   4-6) 논리 연산자

   4-7) 삼항 연산자

5) eclipse 실습 코드

 

 

 

1) 변수

1-1) 변수의 교환

package chapter01.basic;

public class Basic_Example02 {

	public static void main(String[] args) {
		/*
		 변수의 교환
		 출력 결과 :
		     교환 전
		     x = 200;
		     y = 100;
		     교환 후
		     x = 100;
		     y = 200;
		 */
		
		int x = 200;
		int y = 100;
		System.out.println("교환 전");
		System.out.println("x = " + x);
		System.out.println("y = " + y);
		
		System.out.println("교환 후");
		int t;
		t = x;
		x = y;
		y = t;
		System.out.println("x = " + x);
		System.out.println("y = " + y);

	}

}

 

 

 

 

2) 진수

package chapter02.data;

public class Radix {

	public static void main(String[] args) {
		// radix(기수, 진수)
		int a = 10;
		int b = 015; // 0으로 시작하면 8진수
		int c = 0x10; // 0x, 0X로 시작하면 16진수
		int d = 0b1001; // 0b, 0B로 시작하면 2진수
		
		System.out.println(a);
		System.out.println(b);
		System.out.println(c);
		System.out.println(d);

	}

}

 

 

 

 

3) 데이터 타입(자료형)

3-1) 문자형(char), 탈출 문자, 텍스트 블록

package chapter02.data;

public class CharType {

	public static void main(String[] args) {
		// 문자형(char)
		char ch1 = '한';
		char ch2 = '\uD55C'; // "\"를 사용하면 "유니코드"를 사용하겠다는 의미이다!!
		System.out.println(ch1);
		System.out.println(ch2);
		int i = ch1;
		System.out.println(i);
		
		// 탈출문자(escape sequence)
		// " 문자열 안 "에서 특수한 기능을 수행하는 명령어
		System.out.println(" 안 녕 하 \n 세 요 ");
		System.out.println(" 안 녕 하 \t 세 요 ");
		System.out.println(" 안 녕 하 \' 세 요 ");
		System.out.println(" 안 녕 하 \" 세 요 ");
		System.out.println(" 안 녕 하 \\ 세 요 ");
		System.out.println("그가 말했다. \"안녕?\" ");
		
		// 텍스트 블록(text block)
		// java 15 때 도입됨!
		String str = """
				아름다운 이 땅에 금수강산에
				단군 할아버지가 "터" 잡으시고
				'홍익인간' 뜻으로 나라 세우니
				대대손손 훌륭한 인물도 많아.
				""";
		System.out.println(str);

	}

}

 

 

 

 

4) 연산자

4-1) 산술 연산자 : 사칙 연산에 사용

  • + (덧셈)
  • - (뺄셈)
  • * (곱셈)
  • / (몫)
  • % (나머지)

 

4-2) 대입 연산자 : 변수에 값을 대입하는 연산자

int num = 100;

 

 

4-3) 관계 연산자 : 두 항을 비교하여 결과를 true or false로 변환(논리형 데이터 타입)

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

num > 3;
num < 3;
num >= 3;
num <= 3;
num == 3;
num != 3;

 

 

4-4) 복합 관계 연산자 : 대입 연산자와 다른 연산자를 조합해 하나의 연산자처럼 사용

+=, -=, *=, /=, %=

num += 3  -->  num = num + 3
num -= 3  -->  num = num – 3
num *= 3  -->  num = num * 3
num /=3  -->  num = num / 3
num %= 3  -->  num = num % 3

 

 

4-5) 증감 연산자 : 변수에 값을 1만큼 증가시키거나 감소시키는 연산자

// num++; or ++num;
// num--; or --num;

int num = 100;
int result = 0;
result = num++;

// result 출력 결과 : 100

 

 

4-6) 논리 연산자 : 두 명제의 결과를 연산하여 ture or false로 반환(논리형 데이터 타입)

// and 연산자
true && true  -->  true
true && false  -->  false
false && true  -->  false
false && false  -->  false

// or 연산자
true || true  -->  true
true || false  -->  true
false || true  -->  true
false || false  -->  false

// not 연산자
! (true)  -->  false
! (false)  -->  true

 

 

4-7) 삼항 연산자(조건식 ? 결과1 : 결과2) = 조건 연산자 : 조건식이 true인지 false인지의 여부에 따라 결과를 다르게 출력

int num = 100;
char result;
result = (num > 50) ? ‘T’ : ‘F’;

 

 

+) eclipse 연습 코드

package chapter03.operator;

public class Arithmetic {

	public static void main(String[] args) {
		// 산술 연산자
		int a = 6, b = 4;
		System.out.println(a + " + " + b + " = " + (a+b));
		System.out.println(a + " - " + b + " = " + (a-b));
		System.out.println(a + " * " + b + " = " + (a*b));
		System.out.println(a + " / " + b + " = " + (a/b));
		System.out.println(a + " / " + b + " = " + ((float) a/b));
		// (float) a / b
		// 6.0 / 4
		// 6.0 / 4.0
		// 1.5
		// 연산이 가능한 두 타입 중 큰 타입에 자동 형 변환이 일어난다!!
		System.out.println(a + " % " + b + " = " + (a%b));

	}

}

 

 

 

package chapter03.operator;

public class Operator1 {

	public static void main(String[] args) {
		// 대입 연산자
		int a = 3, b = 4, c = 5, sum;
		sum = a + b + c;
		System.out.println(sum);
		
		// 관계 연산자
		int num = 10;
		System.out.println(num > 3);
		System.out.println(num < 3);
		System.out.println(num >= 3);
		System.out.println(num <= 3);
		System.out.println(num == 3);
		System.out.println(num != 3);
		
		// 복합 관계 연산자
		int num2 = 3;
		System.out.println(num2 += 3); // num2 = num2 + 3
		System.out.println(num2 -= 3); // num2 = num2 - 3
		System.out.println(num2 *= 3); // num2 = num2 * 3
		System.out.println(num2 /= 3); // num2 = num2 / 3
		System.out.println(num2 %= 3); // num2 = num2 % 3

	}

}

 

 

 

package chapter03.operator;

public class Operator2 {

	public static void main(String[] args) {
		// 증감 연산자
		int value = 2;
		int a = ++value;
		System.out.println("value = " + value + ", a = " + a);
		
		value = 2;
		a = value++;
		System.out.println("value = " + value + ", a = " + a);
		
		// 부호 연산자
		int value2 = 8;
		System.out.println(value2);
		value2 = -value2;
		System.out.println(value2);
		
		// 문자열 연결
		System.out.println(4 + 5);
		System.out.println("영구와 " + "땡칠이");
		System.out.println("응답하라 " + 1999);
		System.out.println(19 + 99 + "응답하라");
		System.out.println("" + 19 + 99 + "응답하라");
		
		String str = "안녕" + "하세요" + 13313;
		System.out.println(str);

	}

}

 

 

 

package chapter03.operator;

public class Operator3 {

	public static void main(String[] args) {
		// 논리 연산자
		int num1 = 10;
		int num2 = 20;
		
		// and 연산자( && )
		boolean flag = (num1 > 0) && (num2 > 0);
		System.out.println(flag);
		
		// or 연산자( || ) <-- shift + 백슬러시
		flag = (num1 < 0) || (num2 > 0);
		System.out.println(flag);
		
		// not 연산자( ! )
		System.out.println( !flag );
		System.out.println("=========");
		
		// 논리 연산자의 함정
		int num = 10;
		int i = 2;
		
		boolean value = ((num = num + 10) < 10) && ((i = i + 2) < 10);
		System.out.println(value);
		System.out.println(num);
		System.out.println(i); // && 논리 연산자의 경우, 앞의 조건이 "false"이면 뒤의 조건 결과에 상관없이 어차피 "false"라 뒤의 조건은 수행하지 않기 때문에 i=2가 출력된다!
		
		num = 10;
		i = 2;
		
		value = ((num = num + 10) > 10) || ((i = i + 2) < 10);
		System.out.println(value);
		System.out.println(num);
		System.out.println(i); // || 논리 연산자의 경우, 앞의 조건이 "true"이면 뒤의 조건 결과에 상관없이 어차피 "true"라 뒤의 조건은 수행하지 않기 때문에 i=2가 출력된다!

	}

}

 

 

 

package chapter03.operator;

public class Operator4 {

	public static void main(String[] args) {
		// 삼항 연산자, 조건 연산자
		// 조건식 ? true일 경우 결과값 : false일 경우 결과값
		int fatherAge = 45;
		int motherAge = 47;
		
		String result = fatherAge > motherAge ? "아빠가 연상" : "엄마가 연상";
		System.out.println(result);

	}

}

 

 

 

 

 

5) eclipse 실습 코드

패키지 chapter03.operator

1. Oper_Example01.class

package chapter03.operator;

import java.util.Scanner;

public class Oper_Example01 {

	public static void main(String[] args) {
		/*
		 상품가격과 받은 금액을 입력받아서 거스름돈을 출력
		 출력결과 :
		          받은 금액 : 10000
		          상품 가격 : 1500
		          거스름돈 : 8500
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("받은 금액 : ");
		int cash = scan.nextInt();
		System.out.print("상품 가격 : ");
		int price = scan.nextInt();
		int change = cash - price;
		System.out.println("거스름돈 : " + change);

	}

}

 

 

 

2. Oper_Example02.class

package chapter03.operator;

import java.util.Scanner;

public class Oper_Example02 {

	public static void main(String[] args) {
		/*
		 과목 3개를 입력받아 점수에 따른 합격여부를 출력한다.
		 합격조건 :
		   1) 세 과목의 평균점수가 60점 미만일 것
		   2) 한 과목이라도 40점 미만일 경우 과락으로 불합격
		   
		 출력 결과 :
		           국어: 80
		           영어: 80
		           수학: 35
		           합격여부: false
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("국어: ");
		int korean = scan.nextInt();
		System.out.print("영어: ");
		int english = scan.nextInt();
		System.out.print("수학: ");
		int math = scan.nextInt();
		
		double avg = (korean + english + math) / 3.0;
		System.out.println(avg);
		
		boolean result = avg >= 60 && korean >= 40 && english >= 40 && math >= 40;
		
		System.out.println("합격여부: " + result);
		
        /*
        // 합격여부 String 타입으로 출력하는 코드
		String result2 = (korean + english + math) / 3 >= 60 && korean >= 40 && english >= 40 && math >= 40
				? "true"
				: "false";
		
		System.out.println("합격여부: " + result2);
        */

	}

}

 

 

 

3. Oper_Example03.class

package chapter03.operator;

import java.util.Scanner;

public class Oper_Example03 {

	public static void main(String[] args) {
		/*
		 각 자릿수의 합 구하기
		 출력결과: 
		         0 ~ 999 사이의 정수를 입력하세요
		         315
		         각 자릿수의 합: 9
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.println("0 ~ 999 사이의 정수를 입력하세요");
		int input = scan.nextInt();
		int num100 = input / 100;
		int num10 = (input % 100) / 10;
		int num1 = (input % 100) % 10;
		
		int sum = num100 + num10 + num1;
		System.out.println("각 자릿수의 합: " + sum);

	}

}

 

 

 

4. Oper_Example04.class

package chapter03.operator;

import java.util.Scanner;

public class Oper_Example04 {

	public static void main(String[] args) {
		/*
		정수 3개를 입력받아 각 변수(kor, eng, math)에 값을 넣고,
		총합(sum)과 평균(avg)을 출력하세요.
		평균값은 소수점을 포함한 점수로 출력하세요.
		hint) 평균에 소수점 구하기 --> 연산 중에 자동 형 변환 참고
		
		출력결과 :
		         kor 점수: 80
		         eng 점수: 75
		         math 점수: 35
		         총합: 190 평균: 63.333333333333336
		*/
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("kor 점수: ");
		int kor = scan.nextInt();
		System.out.print("eng 점수: ");
		int eng = scan.nextInt();
		System.out.print("math 점수: ");
		int math = scan.nextInt();
		
		int sum = kor + eng + math;
		double avg = sum / 3.0;
		System.out.print("총합: " + sum + " 평균: " + avg);

	}

}

 

 

 

5. Oper_Example05.class

package chapter03.operator;

import java.util.Scanner;

public class Oper_Example05 {

	public static void main(String[] args) {
		/*
		 정수 3개를 입력받아 각 변수(a, b, c)에 값을 넣고,
		 입력받은 값 중 최대값(max)을 출력하세요.
		 hint) 삼항 연산자(중복 사용)
		 출력결과 :
		          첫번째 정수: 2
		          두번째 정수: 4
		          세번째 정수: 1
		          최대값: 4
		 */
		
		Scanner scan = new Scanner(System.in);
		
		System.out.print("첫번째 정수: ");
		int firstNum = scan.nextInt();
		System.out.print("두번째 정수: ");
		int secondNum = scan.nextInt();
		System.out.print("세번째 정수: ");
		int thirdNum = scan.nextInt();
		
		int maxNum1 = firstNum > secondNum ? firstNum : secondNum;
		int maxNum2 = maxNum1 > thirdNum ? maxNum1 : thirdNum;
		
		System.out.println("최대값: " + maxNum2);

	}

}