모니터로 변수값 출력하기

println(내용); : 괄호안의 내용을 출력하고 행을 바꿔라

print(내용); : 괄호 안의 내용을 출력만 해라

printf(내용); : 괄호 안의 첫 번째 문자열 형식대로 내용을 출력해라

printf("형식문자열", 값1, 값2, '''')

%형는 형식 문자열의 시작을 뜻함

conversion에는 제공되는 값의 따라 d(정수), f(실수), s(문자열)

형식 문자열에 포함될 값이 2개 이상일 경우 값의 순번을 알려줘야함

System.out.printf("전화: %1$s-%2$s-%3$s", "010", 123, 4567);

 

flags는 빈 자리를 채우는 방법, 생략되면 왼쪽 공백으로 채워지고, -가 오면 오른쪽 공백으로 채워짐 

0은 공백 대신 0으로 채움

%6d : 6자리 정수, 왼쪽 빈 자리 공백 =123

%-6d : 6자리 정수, 오른쪽 빈 자리 공백 = ___123

%06d : 6자리 정수, 왼쪽 빈 자리 공백 0 채움 = 000123

%10.2f : 소수점 이상 7자리, 소수점 이하 2자리, 왼쪽 빈 자리 공백 : ___123.45

 

Scanner

 

 

 

 

package chap02_2;

import java.util.Scanner;

public class scanner_01 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		
		System.out.println("입력>");
		while(true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열: \"" + inputData + "\"");
			
			boolean result = inputData.equals("김씨");
			System.out.println(result);
//			
			
			if (inputData.equals("q")) {
				break;
			}
			
		}
				System.out.println("종료");
		
	}

}

 

 

연산자와 연산식

연산에 사용되는 표시나 기호를 연산자, 연산되는 데이터 피연산자, 연산의 과정 기술 한 것은 연산식

산술 연산자일 경우는 숫자 타입 ( byte, short, int, long, float, double ) 으로 결과값

비교 연산자와 논리 연산자는 논리 타입(boolean)으로 결과값

연산식은 반드시 하나의 값을 산출

*, /, % 는 같은 우선순위 왼쪽에서 오른쪽 방향으로 연산

단항 연산자(++, --, ~, !), 부호 연산자(+, -), 대입 연산자(=, +=, -=, ..)는 오른쪽에서 왼쪽 방향으로 연산

( ) 괄호 부분의 연산은 최우선순위 필요할 때 사용

 

연산자의 종류

 

단항 연산자 

부호 연산자(+, -), 증감 연산자(++, --), 논리 부정 연산자( ! )

int x = -100;

int result1 = +x; 

int result2 = -x;

result1은 음수 -100이 그대로 저장

result2은 양사 100이 저장

byte 타입 변수를 부호연산하면 int 타입으로 변환

 

증감 연산자

package sec02.exam01;

public class SignOpEx {

	public static void main(String[] args) {
		int x = 10;
		int y = 10;
		int z;
		
		System.out.println("-----------------");
		x++;
		++x;
		System.out.println("x=" + x);// 12
		
		System.out.println("-----------------");
		y--;
		--y;
		System.out.println("y=" + y);// 8
		
		System.out.println("-----------------");
		z = x++;
		System.out.println("z=" + z);//12
		System.out.println("x=" + x);//13
		
		System.out.println("-----------------");
		z = ++x;
		System.out.println("z=" + z);//14
		System.out.println("x=" + x);//14
		
		System.out.println("-----------------");
		z = ++x + y++;
		System.out.println("z=" + z);//23
		System.out.println("x=" + x);//15
		System.out.println("y=" + y);//9
		
		boolean play = true;
		System.out.println(!play);//false
		
		boolean play2 = !true;
		System.out.println(!play2);//true
		
		float f1 = 0.1f;
		System.out.printf("%1.20f\n", f1);//0.10000000149011612000 
										// 소수점 이상 1, 소수점 이하 20 
										// ( float은 소수점 이하 7자리까지 맞음 ) 
		
		double d1 = 0.1;
		System.out.printf("%1.20f\n", d1);//0.10000000000000000000
										// 소수점 이상 1, 소수점 이하 20 
										// ( double은 소수점 이하 15자리까지 맞음 )
		

		
		
		
		
	}

}

 

이항 연산자

/ 나누기, %나머지

long타입을 제외한 정수 타입 연산은 int타입으로 산출되고

피연산자 중 하나라도 실수 타입이면 실수 타입으로 산출

byte + byte -> int + int = int

int + long -> long + long = long

int + double -> double + double = double

package sec02.exam01;

public class sjh {

	public static void main(String[] args) {
//		잘못된 코딩 예
		byte byte1 = 1;
		byte byte2 = 1;
//		byte byte3 = byte1 + byte2; 컴파일 에러
//		올바른 코딩 예
		int result3 = byte1 + byte2;
		

	}

}

 

package sec02.exam01;

public class sjh {

	public static void main(String[] args) {
		int int1 = 10;
		int int2 = 4;
		
		int result2 = int1 / int2;
		double result3 = int1 / int2;
		double result4 = (double)int1 / int2;
		System.out.println(result2); // 2
		System.out.println(result3); // 2.0
		System.out.println(result4); // 2.5

	}

}

int1 / int2 연산 후의 결과가 2이므로 2를 실수화해서 2.0이 저장됨

2.5 결과를 얻고 싶다면 int1과 int2 중 하나를 (double) 강제 타입 변환해야 됨

 

 

문자열 결합 연산자(+)

package sec02.exam01;

public class sjh {

	public static void main(String[] args) {
		String str1 = "JDK" + 6.0;
		String str2 = str1 + "특징";
		System.out.println(str1); // JDK6.0
		System.out.println(str2); // JDK6.0특징
		
		System.out.println("JDK" + 3 + 3.0); // JDK33.0
		System.out.println(3 + 3.0 + "JDK"); // 6.0JDK
		
		
	}

}

 

비교연산자 

피연산자가 char 타입이면 유니코드 값으로 비교 연산을 수행,

'A'의 유니코드는 65이고, 'B'의 유니코드는 66이므로 비굔 연산자는 65와 66을 비교

('A' < 'B') -> (65 < 66)

비교 연산자에서도 연산을 수행하기 전에 피연산자의 타입을 일치 시킴

'A' == 65 -> 65 == 65 -> true

3 == 3.0에서 3이 double 타입으로 변환되어 3.0 == 3.0 비교

3 == 3.0 -> 3.0 == 3.0 -> true

한 가지 예외는 0.1 == 0.1f와 같은 경우에는 false가 됨

0.1f는 0.1의 근사값(0.100000223234) 표현되기 때문에

해결법은 모두 float타입은 바꾸거나 정수로 변경

 

논리 연산자

&&, || 는 앞의 피연산자가 true, false면 뒤의 피연산자를 평가하지 않고 바로 결과 내림

 

 

 

대입 연산자

 

package sec02.exam01;

public class Ex002 {

	public static void main(String[] args) {
		int result = 0;
		result +=10;
		System.out.println("result=" + result);
		result -=5;
		System.out.println("result=" + result);
		result *=3;
		System.out.println("result=" + result);
		result /=5;
		System.out.println("result=" + result);
		result %=3;
		System.out.println("result=" + result);

	}

}
//결과
//result=10
//result=5
//result=15
//result=3
//result=0

 

삼항 연산자

 

조건식을 연산하여 true가 나오면 삼항 연산자의 결과는 피연산자2가 됨

반대로 조건식을 연산하여 false가 나오면 삼항 연산자의 결과는 피연산자3

 

실습

scanner

package chap02_2;

import java.util.Scanner;

public class scanner_01 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		
		System.out.println("입력>");
		while(true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열: \"" + inputData + "\"");
			
			boolean result = inputData.equals("김씨");
			System.out.println(result);
//			
			
			if (inputData.equals("q")) {
				break;
			}
			
		}
				System.out.println("종료");
		
	}

}
package chap02_2;

import java.util.Scanner;

public class scanner_02 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		System.out.print("첫번째 수:");
		String strNum1 = scanner.nextLine();
		int num1 = Integer.parseInt(strNum1);
		
		
		System.out.print("두번째 수:");
		String strNum2 = scanner.nextLine();
		int num2 = Integer.parseInt(strNum2);
		
		int result = num1 + num2;
		System.out.println("합계"+result);

	}

}
package sec02.exam01;

import java.awt.GraphicsDevice;
import java.util.Scanner;

public class study {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int kor, math, eng, tot, grade;
		double avg;
		int score = 100;
		
		
		
		System.out.print("국어");
		kor = Integer.parseInt(scanner.nextLine());
		System.out.print("수학");
		math = Integer.parseInt(scanner.nextLine());
		System.out.print("영어");
		eng = Integer.parseInt(scanner.nextLine());
		System.out.print("학생");
		String name = scanner.nextLine();
		
		tot = kor + math + eng; 
		avg = tot / 3.0;
		grade = (kor >= 90 ) ? 'A' : ((kor >=80) ? 'B' : 'C');
		System.out.printf("국어점수: %d (%c)\n", kor, grade);
		grade = (math >= 90 ) ? 'A' : ((math >=80) ? 'B' : 'C');
		System.out.printf("수학점수: %d (%c)\n", math, grade);
		grade = (eng >= 90 ) ? 'A' : ((eng >=80) ? 'B' : 'C');
		System.out.printf("영어점수: %d (%c)\n", eng, grade);
		
		System.out.println("학생이름:" + name);
		System.out.println("국어점수:" + kor);
		System.out.println("수학점수:" + math);
		System.out.println("영어점수:" + eng);
		System.out.println("총점:" + tot);
		System.out.printf("평균:%3.2f\n:" , avg);
		
		
		
		
	}

}
package sec02.exam01;

import java.util.Scanner;

public class study2 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		int kor, math, eng, tot, grade;
		double avg;
		int score = 100;
		
		System.out.print("국어");
		kor = Integer.parseInt(scanner.nextLine());
		System.out.print("수학");
		math = Integer.parseInt(scanner.nextLine());
		System.out.print("영어");
		eng = Integer.parseInt(scanner.nextLine());
		System.out.print("학생");
		String name = scanner.nextLine();
		
		tot = kor + math + eng;
		avg = tot / 3.0;
		
		if (kor >= 90) {
			grade = 'A';
		}else if(kor >= 80) {
			grade = 'B';
		}else {
			 grade = 'C';
			
		}
		System.out.printf("국어점수: %d (%c)\n", kor, grade);
		
		if (math >= 90) {
			grade = 'A';
		}else if(math >= 80) {
			grade = 'B';
		}else {
			 grade = 'C';
			
		}
		System.out.printf("국어점수: %d (%c)\n", kor, grade);
		
		if (eng >= 90) {
			grade = 'A';
		}else if(eng >= 80) {
			grade = 'B';
		}else {
			 grade = 'C';
			
		}
		System.out.printf("국어점수: %d (%c)\n", kor, grade);

	}

}

 

나머지 실습

package sec02.exam01;

public class tests {

	public static void main(String[] args) {
		String name = "감자바";
		int age = 25;
		String tel1="010", tel2="123", tel3="4567";
		
		System.out.println("이름:" + "감자바");
		System.out.print("나이: 25\n");
		System.out.printf("전화: %1$s-%2$s-%3$s", "010", 123, 4567);
		
		int x11 = 10;
		int x12 = 3;
		System.out.println(x11/x12); // 몫
		System.out.println(x11%x12); // 나머지
	}

}
//삼항
package sec02.exam01;

import java.awt.desktop.ScreenSleepEvent;

import javax.swing.plaf.basic.BasicInternalFrameTitlePane.IconifyAction;

public class Ex003 {

	public static void main(String[] args) {
		int score = 85;
		char grade = (score > 90) ? 'A' : ((score > 80) ? 'B' : 'C');
		System.out.println(score + "점은" + grade + "등급입니다.");
	}	 
		
	}

 

package sec02.exam01;

public class Ex001 {

	public static void main(String[] args) {
		int num1 = 10;
		int num2 = 10;
		boolean result1 = (num1 == num2);
		boolean result2 = (num1 != num2);
		boolean result3 = (num1 <= num2);
		System.out.println("result1" + result1);
		System.out.println("result2" + result2);
		System.out.println("result3" + result3);
		
		char char1 = 'A';
		char char2 = 'B';
		boolean result4 = (char1 < char2);
		System.out.println("result4" + result4);
		

	}

}

//결과
//result1true
//result2false
//result3true
//result4true

 

'프로젝트 기반 자바(JAVA) 응용 SW개발자 취업과정' 카테고리의 다른 글

2023-05-23 6일차  (0) 2023.05.23
2023-05-22 5일차  (0) 2023.05.22
2023-05-18 3일차  (0) 2023.05.18
2023-05-17 2일차  (0) 2023.05.17
2023-05-16 1일차  (0) 2023.05.16

+ Recent posts