Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-02-09(수) 010일차 [Java] 증감 연산자, 삼항 연산자, 논리 연산, 관계연산

옌炎 2022. 4. 10. 15:22
728x90

수업내용


1교시 (09:30-10:20)

  • 어제 배운 내용 복습
배열 : 데이터를 순차적으로 나열하는 것
	자바 배열 : 같은 데이터타입(자료형) 순차적으로 나열한 것이다.

	배열의 개수 : n
	배열의 길이 : n
	배열의 인덱스 : n - 1 (0부터 시작)

	자료형 참조변수 [] = new 자료형[n];
	기초자료형
	참조자료형
		String <== rt.jar에 있는 모든 클래스
		사용자정의 클래스
	참조변수: 기초자료형도 배열로 사용하면 객체가 된다.
	int i;
	int ii[];
	new 인스턴스 과정에서 배열의 상자가 기본값으로 초기화된다.
		byte short int long = 0
		char = ' ' '\u0000'
		float double = 0.0
		String, 사용자정의클래스, rt.jar : 객체 = null;

	1차원 배열
	자료형 참조변수[] = new 자료형[n];
	자료형 참조변수[] = new 자료형[]{};
	자료형 참조변수[] = {};
	자료형 참조변수[];
	참조변수 = new 자료형[]{};

	배열의 길이를 구하는 속성의 이름 : length 필드
	
논리연산자 boolean 1byte
	false true

Flow Control * 연산자
	if switch
	for while do~while

	if문은 true참일 때만 수행된다.
	else문은 if문장의 true가 아닌 false 경우에만 수행된다.

===========================================================================
명령행 인수: main 함수의 파라미터인 스트링 배열이다.
	main(String args[]) {}
	java 패키지명.클래스이름 데이터1 데이터2
	--------------------------------------------------------
	String args[] = new String[]{"데이터1", "데이터2"};
	String args[] = {"데이터1", "데이터2"};

	String s0 = args[0];
	String s1 = args[1];
	
	java 패키지명.클래스이름 데이터1 데이터2 데이터3
	--------------------------------------------------------
	String args[] = new String[]{"데이터1", "데이터2", "데이터3"};
	String args[] = {"데이터1", "데이터2", "데이터3"};

	String s0 = args[0];
	String s1 = args[1];
	String s2 = args[2];

	java 패키지명.클래스이름 테 이 터1 테이터2 데이터3
	--------------------------------------------------------
	String args[] = new String[]{"데", "이", "터1", "데이터2", "데이터3"};
	String args[] = {"데", "이", "터1", "데이터2", "데이터3"};

	String s0 = args[0];
	String s1 = args[1];
	String s2 = args[2];
	String s3 = args[3];
	String s4 = args[4];
	
	java 패키지명.클래스이름 "데 이 터1" 테이터2 데이터3
	----------------------------------------
	String args[] = new String[]{"데 이 터1", "데이터2", "데이터3"};
	String args[] = {"데 이 터1", "데이터2", "데이터3"};

	String s0 = args[0];
	String s1 = args[1];
	String s2 = args[2];

===========================================================================

2교시 (10:30-11:20)

  • Scanner 사용하여 입력값 받기
package a.b.c.ch1;

import java.util.Scanner;

public class Exam_FlowControl_5 {

	public int add(int x, int y) {
		return x + y;
	} // end of add()

	public static void main(String args[]) {
		
		System.out.println("연산할 수를 잘 입력하시오 >>> : ");
		Scanner sc = new Scanner(System.in);

		// public int nextInt()
		int x = sc.nextInt();
		System.out.println("x >>> : " + x);
		int y = sc.nextInt();
		System.out.println("y >>> : " + y);

		Exam_FlowControl_5 ef5 = new Exam_FlowControl_5();
		
		int addSum = ef5.add(x, y);

		System.out.println("addSum >>> : " + addSum);

	} // end of main()

} // end of Exam_FlowControl_5 class

/*
C:\00.KOSMO108\10.JExam\ch1>java a.b.c.ch1.Exam_FlowControl_5
연산할 수를 잘 입력하시오 >>> :
1
x >>> : 1
2
y >>> : 2
addSum >>> : 3
*/

3교시 (11:30-12:20)

  • API에서 클래스 찾아서 import해서 사용하기
package a.b.c.ch1;

/*
	1. import 규칙
	   java.lang.* 패키지에 있는 클래스를 제외한 모든 패키지에서는 꼭 import 키워드를 사용해야 한다.
	2. import할 때는 패키지명.클래스이름으로 사용해야 한다. <-- 이유: 소스 코드 가독성 때문에
	3. 빌트인 클래스의 참조변수에는 주소값을 보여주는 경우도 있고 아닌 경우도 있다.
	4. 클래스를 메모리에 올리는 동작은 new 키워드 말고도 다른 것들이 여러 가지가 있다.(앞으로 공부할 예정)
*/
import java.util.Scanner;
import java.util.Date;
import java.util.Calendar;

public class Exam_FlowControl_5 {

	public int add(int x, int y) {
		return x + y;
	} // end of add()

	public static void main(String args[]) {
		
		Date d = new Date();
		// public static int identityHashCode(object x)
		System.out.println("System.identityHashCode(d) >>> : " + System.identityHashCode(d));
		System.out.println("d >>> : " + d + "\n");

		Calendar c = Calendar.getInstance();
		System.out.println("System.identityHashCode(c) >>> : " + System.identityHashCode(d));
		System.out.println("c >>> : " + c + "\n");


		System.out.println("연산할 수를 잘 입력하시오 >>> : ");
		// public static final InputStream in
		Scanner sc = new Scanner(System.in);

		// public int nextInt()
		int x = sc.nextInt();
		// public static final PrintStream out
		System.out.println("x >>> : " + x);
		int y = sc.nextInt();
		System.out.println("y >>> : " + y);

		Exam_FlowControl_5 ef5 = new Exam_FlowControl_5();
		
		int addSum = ef5.add(x, y);

		System.out.println("addSum >>> : " + addSum);

	} // end of main()

} // end of Exam_FlowControl_5 class

/*
C:\00.KOSMO108\10.JExam\ch1>java a.b.c.ch1.Exam_FlowControl_5
연산할 수를 잘 입력하시오 >>> :
1
x >>> : 1
2
y >>> : 2
addSum >>> : 3
*/
  • 문자 숫자
package a.b.c.ch1;

public class Exam_numString {

	public static void main(String args[]) {
	
		// 문자 숫자: 숫자를 문자열로 표현한 것 : 숫자를 더블 쿼테이션으로 묶은 것
		String sX = "1";
		String sY = "2";

		System.out.println(sX + sY);

		int iX = Integer.parseInt(sX);
		int iY = Integer.parseInt(sY);
		System.out.println(iX + iY);
		System.out.println("문자열 더하기하면 숫자도 문자열이 된다. >>> : ");
		System.out.println("" + (iX + iY));
		System.out.println("" + iX + iY);

	} // end of main()

} // end of Exam_numString class

4교시 (12:30-13:20)

  • 문자 숫자를 숫자로 변환 / 숫자를 문자로 변환
package a.b.c.ch1;

public class Exam_numString {

	public static void main(String args[]) {
	
		// 문자 숫자: 숫자를 문자열로 표현한 것 : 숫자를 더블 쿼테이션으로 묶은 것
		String sX = "1";
		String sY = "2";

		System.out.println(sX + sY);

		int iX = Integer.parseInt(sX);
		int iY = Integer.parseInt(sY);
		System.out.println(iX + iY);
		System.out.println("문자열 더하기하면 숫자도 문자열이 된다. >>> : ");
		System.out.println("" + (iX + iY));
		System.out.println("" + iX + iY);

		// 문자 숫자를 숫자로 변환 : parse
		String sI = "1";
		String sL = "11";
		String sF = "1.123";
		String sD = "1.1";
		
		// public static int parseInt(String s)
		int iVal = Integer.parseInt(sI);
		// public static long parseLong(Strings)
		long lVal = Long.parseLong(sL);
		// public static float parseFloat(String s)
		float fVal = Float.parseFloat(sF);
		// public static double parseDouble(String s)
		double dVal = Double.parseDouble(sD);

		System.out.println("iVal >>> : " + iVal);
		System.out.println("lVal >>> : " + lVal);
		System.out.println("fVal >>> : " + fVal);
		System.out.println("dVal >>> : " + dVal);

		// 숫자를 문자로 변환
		int nInt = 100;
		long nLong = 101L;
		float nFloat = 1.01F;
		double nDouble = 1.001D;

		// public static String toString(int i)
		String sInt = Integer.toString(nInt);
		// public static String toString(long i)
		String sLong = Long.toString(nLong);
		// public static String toString(float f)
		String sFloat = Float.toString(nFloat);
		// public static String toString(double d)
		String sDouble = Double.toString(nDouble);

		System.out.println("sInt >>> : " + sInt);
		System.out.println("sLong >>> : " + sLong);
		System.out.println("sFloat >>> : " + sFloat);
		System.out.println("sDouble >>> : " + sDouble);

		// public static Integer valueOf(String s)
		String s0 = String.valueOf(nInt);
		// public static Long valueOf(String s)
		String s1 = String.valueOf(nLong);
		// public static Float valueOf(String s)
		String s2 = String.valueOf(nFloat);
		// public static Double valueOf(String s)
		String s3 = String.valueOf(nDouble);

		System.out.println("s0 >>> : " + s0);
		System.out.println("s1 >>> : " + s1);
		System.out.println("s2 >>> : " + s2);
		System.out.println("s3 >>> : " + s3);

		String ss = nInt + ""; // 사용을 지양하자
		System.out.println("ss >>> : " + ss);

	} // end of main()

} // end of Exam_numString class

5교시 (14:30-15:20)

  • 증감 연산자
package a.b.c.ch1;

public class Exam_Operator {

	public static void main(String args[]) {

		/*
			증감 연산자 increment and decrement operators
			++x		x를 먼저 1 증가시킨 후 그 값을 사용
			--x		x를 먼저 1 감소시킨 후 그 값을 사용
			x++		x값을 먼저 사용한 후 1 증가
			x--		x값을 먼저 사용한 후 1 감소
		*/

		int aX = 10;
		System.out.println(aX);

		aX++; // aX = aX + 1 --> 11 = 10 + 1
		System.out.println(aX);
		
		++aX; // 11 
		System.out.println(aX); // 12

		int aXX = 100;
		System.out.println(aXX); // 100

		int aa = aXX++; // int aa = aXX = aXX + 1 // 100
		System.out.println(aa); // 101

		aa = ++aXX;
		System.out.println(aa); // 102
		

	} // end of main()

} // end of Exam_Operator class
  • [교재 81p] 조건연산자
    • 지역변수는 항상 디폴트 값으로 초기화한다.
    package a.b.c.ch1;
    
    public class Exam_Operator {
    
    	public void inc_dec_Oper() {
    
    		/*
    			증감 연산자 increment and decrement operators
    			++x		x를 먼저 1 증가시킨 후 그 값을 사용
    			--x		x를 먼저 1 감소시킨 후 그 값을 사용
    			x++		x값을 먼저 사용한 후 1 증가
    			x--		x값을 먼저 사용한 후 1 감소
    		*/
    
    		int aX = 10;
    		System.out.println(aX);
    
    		aX++; // aX = aX + 1 --> 11 = 10 + 1
    		System.out.println(aX);
    		
    		++aX; // 11 
    		System.out.println(aX); // 12
    
    		int aXX = 100;
    		System.out.println(aXX); // 100
    
    		int aa = aXX++; // int aa = aXX = aXX + 1 // 100
    		System.out.println(aa); // 101
    
    		aa = ++aXX;
    		System.out.println(aa); // 102
    	}
    
    	public static void main(String args[]) {	
    
    		Exam_Operator eo = new Exam_Operator();
    		System.out.println("eo >>> : " + eo);
    
    		// Exam_Operator 클래스의 eo 참조변수로 inc_dec_Oper() 함수를 호출한다.(invoke)
    		eo.inc_dec_Oper();
    
    		// 삼항 연산자 ternary operator
    		// 조건식 ? 결과1 : 결과2;
    		// 조건식의 결과가 TRUE이면 결과1, FALSE이면 결과2
    		int fatherAge = 45;
    		int motherAge = 47;
    
    		// char ch = ' '; char 자료형 빈 문자로 초기화하기
    		char ch = '\\u0000'; // char 자료형 유니코드로 초기화하기
    
    		boolean bool = fatherAge > motherAge;
    		System.out.println("bool >>> : " + bool);
    
    		ch = (fatherAge > motherAge) ? 'T' : 'F';
    		System.out.println("ch >>> : " + ch);
    
    		if (fatherAge > motherAge) {
    			System.out.print("true >>> : ");
    		} else {
    			System.out.print("false >>> : ");
    		}
    
    		// 하기 로직은 사용을 지양한다.
    		if (fatherAge > motherAge)
    			System.out.print("ture >>> : ");
    			// System.out.print("true >>> : <<<<<<<<<>>>>>>>>>);
    		else
    			System.out.print("false >>> : 1");
    			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 2");
    			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 3");
    
    	} // end of main()
    
    } // end of Exam_Operator class
    

6교시 (15:30-16:20)

  • Short Circuit 현상
package a.b.c.ch1;

public class Exam_Operator {

	public void inc_dec_Oper() {

		/*
			증감 연산자 increment and decrement operators
			++x		x를 먼저 1 증가시킨 후 그 값을 사용
			--x		x를 먼저 1 감소시킨 후 그 값을 사용
			x++		x값을 먼저 사용한 후 1 증가
			x--		x값을 먼저 사용한 후 1 감소
		*/

		int aX = 10;
		System.out.println(aX);

		aX++; // aX = aX + 1 --> 11 = 10 + 1
		System.out.println(aX);
		
		++aX; // 11 
		System.out.println(aX); // 12

		int aXX = 100;
		System.out.println(aXX); // 100

		int aa = aXX++; // int aa = aXX = aXX + 1 // 100
		System.out.println(aa); // 101

		aa = ++aXX;
		System.out.println(aa); // 102
	}
	
	// 삼항 연산자
	public void ternary_Oper() {

		// 삼항 연산자 ternary operator
		// 조건식 ? 결과1 : 결과2;
		// 조건식의 결과가 TRUE이면 결과1, FALSE이면 결과2
		int fatherAge = 45;
		int motherAge = 47;

		// char ch = ' '; char 자료형 빈 문자로 초기화하기
		char ch = '\u0000'; // char 자료형 유니코드로 초기화하기

		boolean bool = fatherAge > motherAge;
		System.out.println("bool >>> : " + bool);

		ch = (fatherAge > motherAge) ? 'T' : 'F';
		System.out.println("ch >>> : " + ch);

		if (fatherAge > motherAge) {
			System.out.print("true >>> : ");
		} else {
			System.out.print("false >>> : ");
		}

		// 하기 로직은 사용을 지양한다.
		if (fatherAge > motherAge)
			System.out.print("ture >>> : ");
			// System.out.print("true >>> : <<<<<<<<<>>>>>>>>>);
		else
			System.out.print("false >>> : 1");
			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 2");
			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 3");

	}

	public static void main(String args[]) {	

		Exam_Operator eo = new Exam_Operator();
		System.out.println("eo >>> : " + eo);

		// Exam_Operator 클래스의 eo 참조변수로 inc_dec_Oper() 함수를 호출한다.(invoke)
		eo.inc_dec_Oper();
		// Exam_Operator 클래스의 eo 참조변수로 ternary_Oper() 함수를 호출한다.(invoke)
		eo.ternary_Oper();

		// Short Circuit 현상
		// 단락 회로 평가 Short Circuit Evaluation : SCE
		// 논리 곱(&&) 연산과 논리 합(||) 연산을 할 때 두 항을 모두 살행하지 않더라도
		// 결과 값을 알 수 있는 경우에 나머지 항은 실행되지 않는다.
		/*
			&&연산			||연산
			T AND T = T		T OR T = T
			T AND F = F		T OR F = T
			F AND T = F		F OR T = T
			F AND F = F		F OR F = F
		*/
		int num1 = 10;
		int i = 2;

		boolean b0 = (num1 = num1 + 10) < 10; // false
		boolean b1 = (i = i + 2) < 10; // true
		boolean b2 = b0 && b1; // false
		System.out.println("b0 >>> : " + b0);
		System.out.println("b1 >>> : " + b1);
		System.out.println("b2 >>> : " + b2);
		
		boolean value = ((num1 = num1 + 10) < 10) && ((i = i + 2) < 10); // F && T = F
		System.out.println("value >>> : " + value);
		System.out.println("num1 >>> : " + num1);
		System.out.println("i >>> : " + i);

		boolean b3 = (num1 = num1 + 10) > 10; // true
		boolean b4 = (i = i + 2) < 10; // true
		boolean b5 = b3 || b4; //true
		System.out.println("b3 >>> : " + b3);
		System.out.println("b4 >>> : " + b4);
		System.out.println("b5 >>> : " + b5);

		boolean value1 = ((num1 = num1 + 10) > 10 || ((i = i + 2) < 10)); // T || T = T
		System.out.println("value1 >>> : " + value1);
		System.out.println("num1 >>> : " + num1);
		System.out.println("i >>> : " + i);

	} // end of main()

} // end of Exam_Operator class

7교시 (16:30-17:20)

  • 관계 연산
package a.b.c.ch1;

public class Exam_Operator {

	// 증감 연산자
	public void inc_dec_Oper() {

		/*
			증감 연산자 increment and decrement operators
			++x		x를 먼저 1 증가시킨 후 그 값을 사용
			--x		x를 먼저 1 감소시킨 후 그 값을 사용
			x++		x값을 먼저 사용한 후 1 증가
			x--		x값을 먼저 사용한 후 1 감소
		*/

		int aX = 10;
		System.out.println(aX);

		aX++; // aX = aX + 1 --> 11 = 10 + 1
		System.out.println(aX);
		
		++aX; // 11 
		System.out.println(aX); // 12

		int aXX = 100;
		System.out.println(aXX); // 100

		int aa = aXX++; // int aa = aXX = aXX + 1 // 100
		System.out.println(aa); // 101

		aa = ++aXX;
		System.out.println(aa); // 102
	}
	
	// 삼항 연산자
	public void ternary_Oper() {

		// 삼항 연산자 ternary operator
		// 조건식 ? 결과1 : 결과2;
		// 조건식의 결과가 TRUE이면 결과1, FALSE이면 결과2
		int fatherAge = 45;
		int motherAge = 47;

		// char ch = ' '; char 자료형 빈 문자로 초기화하기
		char ch = '\u0000'; // char 자료형 유니코드로 초기화하기

		boolean bool = fatherAge > motherAge;
		System.out.println("bool >>> : " + bool);

		ch = (fatherAge > motherAge) ? 'T' : 'F';
		System.out.println("ch >>> : " + ch);

		if (fatherAge > motherAge) {
			System.out.print("true >>> : ");
		} else {
			System.out.print("false >>> : ");
		}

		// 하기 로직은 사용을 지양한다.
		if (fatherAge > motherAge)
			System.out.print("ture >>> : ");
			// System.out.print("true >>> : <<<<<<<<<>>>>>>>>>);
		else
			System.out.print("false >>> : 1");
			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 2");
			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 3");

	}

	// 논리 연산
	public void shortCircuit_Oper() {
		
		// Short Circuit 현상
		// 단락 회로 평가 Short Circuit Evaluation : SCE
		// 논리 곱(&&) 연산과 논리 합(||) 연산을 할 때 두 항을 모두 살행하지 않더라도
		// 결과 값을 알 수 있는 경우에 나머지 항은 실행되지 않는다.
		/*
			&&연산			||연산
			T AND T = T		T OR T = T
			T AND F = F		T OR F = T
			F AND T = F		F OR T = T
			F AND F = F		F OR F = F
		*/
		int num1 = 10;
		int i = 2;

		boolean b0 = (num1 = num1 + 10) < 10; // false
		boolean b1 = (i = i + 2) < 10; // true
		boolean b2 = b0 && b1; // false
		System.out.println("b0 >>> : " + b0);
		System.out.println("b1 >>> : " + b1);
		System.out.println("b2 >>> : " + b2);
		
		boolean value = ((num1 = num1 + 10) < 10) && ((i = i + 2) < 10); // F && T = F
		System.out.println("value >>> : " + value);
		System.out.println("num1 >>> : " + num1);
		System.out.println("i >>> : " + i);

		boolean b3 = (num1 = num1 + 10) > 10; // true
		boolean b4 = (i = i + 2) < 10; // true
		boolean b5 = b3 || b4; //true
		System.out.println("b3 >>> : " + b3);
		System.out.println("b4 >>> : " + b4);
		System.out.println("b5 >>> : " + b5);

		boolean value1 = ((num1 = num1 + 10) > 10 || ((i = i + 2) < 10)); // T || T = T
		System.out.println("value1 >>> : " + value1);
		System.out.println("num1 >>> : " + num1);
		System.out.println("i >>> : " + i);

	}

	public static void main(String args[]) {	

		Exam_Operator eo = new Exam_Operator();
		System.out.println("eo >>> : " + eo);

		// Exam_Operator 클래스의 eo 참조변수로 inc_dec_Oper() 함수를 호출한다.(invoke)
		eo.inc_dec_Oper();
		// Exam_Operator 클래스의 eo 참조변수로 ternary_Oper() 함수를 호출한다.(invoke)
		eo.ternary_Oper();
		// Exam_Operator 클래스의 eo 참조변수로 shortCircuit_Oper() 함수를 호출한다.(invoke)
		eo.shortCircuit_Oper();

		// 관계 연산
		boolean bool0 = 1 > 2; // false
		boolean bool1 = 'a' > 'b'; // 97 > 98, 자바는 숫자 int만 안다. 연산을 하면 int형으로 형변환한다.
		boolean bool2 = 'A' > 'b';
		// boolean bool3 = "A" > "B";
		/*
		Exam_Operator.java:130: error: bad operand types for binary operator '>'
                boolean bool3 = "A" > "B";
                                    ^
		first type:  String
		second type: String
		1 error
		*/
		// boolean bool4 = "A" > 'b';
		// boolean bool5 = "가" > "나";
		boolean bool6 = '가' > '나';
		System.out.println("bool0 >>> : " + bool0);
		System.out.println("bool1 >>> : " + bool1);
		System.out.println("bool2 >>> : " + bool2);
		// System.out.println("bool3 >>> : " + bool3);
		// System.out.println("bool4 >>> : " + bool4);
		// System.out.println("bool5 >>> : " + bool5);
		System.out.println("bool6 >>> : " + bool6);

		// == 상등 연산자, 등가 연산자는 숫자 연산만 한다.
		int iX = 10;
		int iY = 10;
		boolean bVal0 = iX == iY; // true
		System.out.println("bVal0 >>> : " + bVal0);

		// equals() 함수는 문자열 연산만 한다.
		// java.lang.String
		// public boolean equals(Object anObject)
		// public boolean equalsIgnoreCase(String anotherString)
		String s0 = "abc";
		String s1 = "abc";
		String s2 = "Abc";
		String s3 = "Abc  ";
		
		boolean bVal4 = s0.equals(s1);
		System.out.println("bVal4 >>> : " + bVal4); // true
		boolean bVal5 = s0.equals(s2);
		System.out.println("bVal5 >>> : " + bVal5); // false
		boolean bVal6 = s0.equalsIgnoreCase(s2);
		System.out.println("bVal6 >>> : " + bVal6); // true
		boolean bVal7 = s0.equalsIgnoreCase(s3);
		System.out.println("bVal7 >>> : " + bVal7); // false

	} // end of main()

} // end of Exam_Operator class
  • 총 정리
package a.b.c.ch1;

public class Exam_Operator {

	// 증감 연산자
	public void inc_dec_Oper() {

		/*
			증감 연산자 increment and decrement operators
			++x		x를 먼저 1 증가시킨 후 그 값을 사용
			--x		x를 먼저 1 감소시킨 후 그 값을 사용
			x++		x값을 먼저 사용한 후 1 증가
			x--		x값을 먼저 사용한 후 1 감소
		*/

		int aX = 10;
		System.out.println(aX);

		aX++; // aX = aX + 1 --> 11 = 10 + 1
		System.out.println(aX);
		
		++aX; // 11 
		System.out.println(aX); // 12

		int aXX = 100;
		System.out.println(aXX); // 100

		int aa = aXX++; // int aa = aXX = aXX + 1 // 100
		System.out.println(aa); // 101

		aa = ++aXX;
		System.out.println(aa); // 102
	}
	
	// 삼항 연산자
	public void ternary_Oper() {

		// 삼항 연산자 ternary operator
		// 조건식 ? 결과1 : 결과2;
		// 조건식의 결과가 TRUE이면 결과1, FALSE이면 결과2
		int fatherAge = 45;
		int motherAge = 47;

		// char ch = ' '; char 자료형 빈 문자로 초기화하기
		char ch = '\u0000'; // char 자료형 유니코드로 초기화하기

		boolean bool = fatherAge > motherAge;
		System.out.println("bool >>> : " + bool);

		ch = (fatherAge > motherAge) ? 'T' : 'F';
		System.out.println("ch >>> : " + ch);

		if (fatherAge > motherAge) {
			System.out.print("true >>> : ");
		} else {
			System.out.print("false >>> : ");
		}

		// 하기 로직은 사용을 지양한다.
		if (fatherAge > motherAge)
			System.out.print("ture >>> : ");
			// System.out.print("true >>> : <<<<<<<<<>>>>>>>>>);
		else
			System.out.print("false >>> : 1");
			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 2");
			System.out.print("false >>> : <<<<<<<<<>>>>>>>>> 3");

	}

	// 논리 연산
	public void shortCircuit_Oper() {
		
		// Short Circuit 현상
		// 단락 회로 평가 Short Circuit Evaluation : SCE
		// 논리 곱(&&) 연산과 논리 합(||) 연산을 할 때 두 항을 모두 살행하지 않더라도
		// 결과 값을 알 수 있는 경우에 나머지 항은 실행되지 않는다.
		/*
			&&연산			||연산
			T AND T = T		T OR T = T
			T AND F = F		T OR F = T
			F AND T = F		F OR T = T
			F AND F = F		F OR F = F
		*/
		int num1 = 10;
		int i = 2;

		boolean b0 = (num1 = num1 + 10) < 10; // false
		boolean b1 = (i = i + 2) < 10; // true
		boolean b2 = b0 && b1; // false
		System.out.println("b0 >>> : " + b0);
		System.out.println("b1 >>> : " + b1);
		System.out.println("b2 >>> : " + b2);
		
		boolean value = ((num1 = num1 + 10) < 10) && ((i = i + 2) < 10); // F && T = F
		System.out.println("value >>> : " + value);
		System.out.println("num1 >>> : " + num1);
		System.out.println("i >>> : " + i);

		boolean b3 = (num1 = num1 + 10) > 10; // true
		boolean b4 = (i = i + 2) < 10; // true
		boolean b5 = b3 || b4; //true
		System.out.println("b3 >>> : " + b3);
		System.out.println("b4 >>> : " + b4);
		System.out.println("b5 >>> : " + b5);

		boolean value1 = ((num1 = num1 + 10) > 10 || ((i = i + 2) < 10)); // T || T = T
		System.out.println("value1 >>> : " + value1);
		System.out.println("num1 >>> : " + num1);
		System.out.println("i >>> : " + i);

	}

	// 관계 연산
	public void relational_Oper() {
		
		// 관계 연산
		boolean bool0 = 1 > 2; // false
		boolean bool1 = 'a' > 'b'; // 97 > 98, 자바는 숫자 int만 안다. 연산을 하면 int형으로 형변환한다.
		boolean bool2 = 'A' > 'b';
		// boolean bool3 = "A" > "B";
		/*
		Exam_Operator.java:130: error: bad operand types for binary operator '>'
                boolean bool3 = "A" > "B";
                                    ^
		first type:  String
		second type: String
		1 error
		*/
		// boolean bool4 = "A" > 'b';
		// boolean bool5 = "가" > "나";
		boolean bool6 = '가' > '나';
		System.out.println("bool0 >>> : " + bool0); // false
		System.out.println("bool1 >>> : " + bool1); // false
		System.out.println("bool2 >>> : " + bool2); // false
		// System.out.println("bool3 >>> : " + bool3);
		// System.out.println("bool4 >>> : " + bool4);
		// System.out.println("bool5 >>> : " + bool5);
		System.out.println("bool6 >>> : " + bool6); //false

		// == 상등 연산자, 등가 연산자는 숫자 연산만 한다.
		int iX = 10;
		int iY = 10;
		boolean bVal0 = iX == iY; // true
		System.out.println("bVal0 >>> : " + bVal0); // true

		// equals() 함수는 문자열 연산만 한다.
		// java.lang.String
		// public boolean equals(Object anObject)
		// public boolean equalsIgnoreCase(String anotherString)
		String s0 = "abc";
		String s1 = "abc";
		String s2 = "Abc";
		String s3 = "Abc  ";
		
		boolean bVal4 = s0.equals(s1);
		System.out.println("bVal4 >>> : " + bVal4); // true
		boolean bVal5 = s0.equals(s2);
		System.out.println("bVal5 >>> : " + bVal5); // false
		boolean bVal6 = s0.equalsIgnoreCase(s2);
		System.out.println("bVal6 >>> : " + bVal6); // true
		boolean bVal7 = s0.equalsIgnoreCase(s3);
		System.out.println("bVal7 >>> : " + bVal7); // false

	} // end of relational_Oper()

	public static void main(String args[]) {	

		Exam_Operator eo = new Exam_Operator();
		System.out.println("eo >>> : " + eo);

		// Exam_Operator 클래스의 eo 참조변수로 inc_dec_Oper() 함수를 호출한다.(invoke)
		eo.inc_dec_Oper();
		// Exam_Operator 클래스의 eo 참조변수로 ternary_Oper() 함수를 호출한다.(invoke)
		eo.ternary_Oper();
		// Exam_Operator 클래스의 eo 참조변수로 shortCircuit_Oper() 함수를 호출한다.(invoke)
		eo.shortCircuit_Oper();
		// Exam_Operator 클래스의 eo 참조변수로 relational_Oper() 함수를 호출한다.(invoke)
		eo.relational_Oper();

	} // end of main()

} // end of Exam_Operator class
  • 연산자 활용
package a.b.c.ch1;

public class Exam_Operator_1 {

	public boolean idCheck(String id, String pw) {
		
		// 지역변수는 그 자료형의 default 값으로 초기화해서 사용한다.
		boolean bool = false;

		if (	id != null && id.length() > 0
			&&	pw != null && pw.length() > 0) {
			
			System.out.println("Exam_Operator_1.idCheck ::: id >>> : " + id);
			System.out.println("Exam_Operator_1.idCheck ::: pw >>> : " + pw);

			if ("PGW".equals(id) && "PGW00".equals(pw)) {
				
				bool = true;
			}
				
		}

		System.out.println("Exam_Operator_1.idCheck ::: bool >>> :" + bool);
		return bool;

	} // end of idCheck()

	public static void main(String args[]) {

		/*
			초기화 연습
			String s0 = "";
			String s1 = null;
		*/
		String id = "PGW";
		String password = "PGW00";
	
		// 문자열 null 체크는 하기와 같이 한다.
		if (	id != null && id.length() > 0
			&&  password != null && password.length() > 0) {
			System.out.println("Exam_Operator_1.main ::: id >>> : " + id);
			System.out.println("Exam_Operator_1.main ::: password >>> : " + password);		   

			Exam_Operator_1 eo1 = new Exam_Operator_1();

			// public boolean idCheck(String id, String pw)
			boolean bool = eo1.idCheck(id, password);
			System.out.println("Exam_Operator_1.main ::: bool >>> : " + bool);

			if (bool) {
				System.out.println("로그인 성공 >>> : ");
			} else {
				System.out.println("로그인 실패 >>> : ");
			}

		} else {
			System.out.println("아이디와 패스워드를 잘 입력하시오 >>> : ");
		}

	} // end of main()

} // end of Exam_Operator_1 class

8교시 (17:30-18:30)

  • 오늘 배운 내용 복습 및 질문 시간

Notes

  • import 할 때 어떤 클래스를 import 할지 찾아서 쓰기. * 쓰지 말기 (단, 연구 시에는 가능)
  • 프로그래밍 잘 하는 방법 : 변수와 함수 → 상수 → 문자와 숫자
  • Boolean은 꼭 로그를 찍어보면서 한다.

728x90