코딩 이야기

JAVA 3일차수업 본문

JAVA

JAVA 3일차수업

별메아리 2023. 1. 31. 11:30
728x90

변수와 시스템 입출력

모니터로 변수값 출력하기

                System.       +          out.     +              println(리터럴 또는 변수);

시스템이 가지고 있는 + 출력장치로+괄호 안의 내용을 출력하고 행을 바꿔라

println()에서 ln는 line 줄임말로 행을 바꾸라는 의미

출력장치 out은 println()이외에 print(), printf() 메소드도 제공합니다.

 

printf() 메소드의 괄호에는 다음과 같이 출력 형식 문자열과 제공될 값을 쉼표로 나열해주면 됩니다.

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

           변환문자        형식화딘 문자열에 제공될 내용

 

% [argument_index$] [flags]      [width]      [.precision]   conversion

      값의 순번              -,0       전체자릿수   소수자릿수   변화문자

 

형식 문자열에서 %와 conversion(변환 문자)은 필수로 작성하고 그 외의 항목은 모두 생략할 수 있습니다. %는 형식 문자열의 시작을 뜻하고, conversion에는 제공되는 값의 타입에 따라 d(정수),f(실수),s(문자열)을 입력합니다.

 

형식 문자열에 포함될 값이 2개 이상일 경우에는 값의 순번(argument_index$)를 알려주어야 합니다. 예를 들어 1$는 첫번째 값을 2$는 두번째 값을 뜻합니다.

System.out.printf("이름: %1$s, 나이: %2$d", "김자바" ,25);  → 이름 :김자바 , 나이: 25

 

flags는 빈 자리를 채우는 방법인데 생략되면 왼쪽이 공백으로 채워지고, -가 오면 오른쪽이 공백으로 채워집니다. 0은 공백 대신 0으로 채웁니다. width는 전체 자릿수이며, precision 소수 자릿수 입니다.

 

printf() 메소드 사용 방법

package ch02;

public class PrintfExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int value = 123;
		System.out.printf("상품의 가격:$%d원\n", value);
		System.out.printf("상품의 가격:$6%d원\n", value);
		System.out.printf("상품의 가격:$%-6d원\n", value);
		System.out.printf("상품의 가격:$%06d원\n", value);
		
		double area = 3.14159 * 10 * 10;
		System.out.printf("반지름이 %d인 원의 넒이:%10.2f\n",10,area);
		
		String name = "홍길동";
		String job = "도적";
		System.out.printf("%6d | %-10s| %10s\n",1,name,job);
	}

}

키보드에서 입력된 내용을 변수에 저장하기

 

키보드에서 키 하나를 입력하면 프로그램에서는 숫자로 된 키코드를 읽을 수 있습니다.

키코드를 읽기 위해서는 System.in의 read()를 이용하면 됩니다.

int keyCode =             System.              +     in               +             read()

                        시스템이가지고있는      입력장치에서             입력된 키코드를 읽어라

읽은 키코드를 대입 연산자 (=) 를 사용해 int 변수에 저장합니다.

 

주요 키에 대한 키코드

 숫자  알파벳  기능키  방향 키
0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57
A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 65
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
 = 90
a = 97 
b = 98
c = 99
d = 100
e = 101
f = 102
g = 103
h = 104
i = 105
j = 106
k = 107
l = 108
m = 109
n = 110
o = 111
p = 112
q = 113
r = 114
s = 115
t = 116
u = 117
v = 118
w = 119
x = 120
y = 121
z = 122

 Backspace = 8
Tab = 9
Enter = 13, 10
Shift = 16
Ctrl = 17
Alt = 18
ESC = 27
Space = 32
Pageup = 33
Pagedown = 34
← = 37
↑ = 38
→ = 39
↓ = 40

입력된 키코드를 변수에 저장

package ch02;

public class KeyCodeExample {

	public static void main(String[] args)throws Exception {
		// TODO Auto-generated method stub
		int keyCode;
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);
		
		keyCode = System.in.read();
		System.out.println("keyCode: " + keyCode);
	}

}

main() 메소드 끝에 throws Exception은 System.in.read()에 대한 예외 처리 코드입니다. throws Exception은 단순히 모니터에 예외 내용을 출력합니다.

 

입력된 키의 개수와 상관없이 키코드를 읽고 p를 누르면 반복종료.

package ch02;

public class ContinueKeyCodeReadExammple {

	public static void main(String[] args) throws Exception {
		// TODO Auto-generated method stub
		int keyCode;
		
		while(true) {
			keyCode = System.in.read();
			System.out.println("keyCode: " + keyCode);
			if(keyCode == 113) {
				break;
			}
		}
		
		System.out.println("종료");
	}

}

System.in.read()의 단점은 키코드를 하나씩  읽기 때문에 2개 이상의 키가 조합된 한글을 읽을 수 없다는 것입니다. 그리고 키보드로부터 입력된 통 문자열을 읽지 못합니다. 이러한 단점을 보완하기 위해 자바는 Scanner 클래스를 제공하고 있다.

 

                생성된 Scanner 변수에 저장

Scanner scanner = new Scanner(System.in);

Scanner 변수선언       시스템의 입력 장치로 부터 읽은 Scanner 생성

 

        읽은 문자열을 String 변수에 저장

String inputData = scanner.nextLine();

String 변수선언         Enter키 이전 까지 입력된 문자열을 읽음

 

키보드에서 입력된 내용을 문자열로 얻기

package ch02;

import java.util.Scanner;

public class ScannerExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Scanner scanner = new Scanner(System.in);
		String inputData;
		
		while(true) {
			inputData = scanner.nextLine();
			System.out.println("입력된 문자열: \"" + inputData + "\"");
			if(inputData.equals("q")) {
				break;
			}
		}
		
		System.out.println("종료");
	}

}

import java.util.Scanner는 import문이라고 하는데, Scanner가 java.util에 있다는 것을 컴파일러에게 알려주는 역활을 합니다. 이 코드가 생략되면 Scanner를 찾을 수 없다는 컴파일에러가 발생합니다.

 

System.in.read()로 읽으면 int 타입이 키코드를 얻었고, Scanner.next.Line()로 읽으면 String 타입의 문자열을 얻기 때문에

기본 타입의 값을 비교할땐 == 를 사용하지만, 문자열(String)이 동일한지 비교할 때는 equals()메소드를 사용합니다.

 

bloolean result   =    inputData.       equals("비교문자열");

                             저장된문자열 

                                                  비교

                                      같은면 true, 다르면 false

         값 저장     

 

연산자와 연산식

연산에 사용되는 표시나 기호를 연산자 연산자와 함께 연산되는 데이터를 피연산자라고 하고, 연산자와 피연산자를 이용하여 연산의 과정을 기술한 것을 연산식이라 부른다.

 

연산자의 종류

연산의 방향과 우선순위

  1. 단항, 이항, 삼항 연산자 순으로 우선순위를 가집니다.
  2. 산술,비교,논리,대입 연산자 순으로 우선 순위를 가집니다.
  3. 단항,부호,대입 연산자를 제외한 모든 연산의 방향은 왼쪽에서 오른쪽입니다.(→)
  4. 복잡한 연산식에는 괄호()를 사용해서 우선순위를 정합니다.

부호 연산자(+,-)

package ch02;

public class SignOperatorExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x = -100;
		int result1 = +x;
		int result2 = -x;
		System.out.println("result1=" + result1);
		System.out.println("result2=" + result2);
		
		byte b = 100;
		// byte result3 = -b;      byte값을 부호 연산하면  int 타입 값으로 바뀌므로 컴파일 에러발생
		int result3 = -b;
		System.out.println("result3=" + result3);
	}

}

증감 연산자(++,--)

증감 연산자는 변수의 값을 1 증가(++)시키거나 1 감소 (--)시키는 연산자를 말합니다. boolean타입을 제외한 모든 기본 타입의 피연산자에 사용할 수 있습니다.

 

증감연산자의 위치에 따라 연산식의 결과가 다르므로 주의해야한다.

변수 앞에 증감연산자가 위치할땐 변수값을 1증가후 연산식을 처리하고

변수 뒤에 증감연산자가 위치할경우 연산식을 처리한후 변수 값을 증가 시킨다.

 

증감 연산자(++,--)

package ch02;

public class IncreaseDecreaseOperatorExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int x = 10;
		int y = 10;
		int z;
		
		System.out.println("--------------------");
		x++;
		++x;
		System.out.println("x=" + x);
		
		System.out.println("---------------------");
		y--;
		--y;
		System.out.println("y=" + y);
		
		System.out.println("---------------------");
		z = x++;
		System.out.println("z=" + z);
		System.out.println("x=" + x);
		
		System.out.println("---------------------");
		z = ++x;
		System.out.println("z=" + z);
		System.out.println("x=" + x);
		
		System.out.println("---------------------");
		z = ++x + y++;
		System.out.println("z=" + z);
		System.out.println("x=" + x);
		System.out.println("y=" + y);
	}

}

논리 부정 연산자(!)

논리 부정 연산자는 true를 false로 false를 true로 변경하기 때문에 boolean타입에만 사용할 수 있습니다.

package ch02;

public class DenyLogicoperatorExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		boolean play = true;
		System.out.println(play);
		
		play = !play;
		System.out.println(play);
		
		play = !play;
		System.out.println(play);
	}

}

이항 연산자

산술 연산자(+,-,*,/,%)

산술 연산자는 사칙연산자인 덧셈(+),뺄셈(-),곱셈(*),나눗셈(/)과 나머지를 구하는 % 까지 총5개 입니다.

산술연산자는 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있습니다.

package ch02;

public class ArithmeticOperatorExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int v1 = 5;
		int v2 = 2;
		
		int result1 = v1 + v2;
		System.out.println("result1=" + result1);
		
		int result2 = v1 - v2;
		System.out.println("result2=" + result2);

		int result3 = v1 * v2;
		System.out.println("result3=" + result3);
		
		int result4 = v1 / v2;
		System.out.println("result4=" + result4);
		
		int result5 = v1 % v2;
		System.out.println("result5=" + result5);
		
		double result6 = (double)  v1 / v2;
		System.out.println("result6=" + result6);
	}

}

char 타입의 산술 연산

 

package ch02;

public class CharPoerationExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char c1 = 'A' + 1;
		char c2 = 'A';
		//char c3 = c2 +1; 컴파일오류 int 값으로 바뀌기 때문
		System.out.println("c1: " + c1);
		System.out.println("c2: " + c2);
		// System.out.println("c3: " + c3);
	}

}

문자열 결합 연산자(+)

package ch02;

public class String_concatExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 = "JDK" + 6.0;
		String str2 = str1 + "특징";
		System.out.println(str2);
		String str3 = "JDK" + 3 + 3.0;
		String str4 = 3 + 3.0 + "JDK";
		System.out.println(str3);
		System.out.println(str4);
	}

}

 

728x90

'JAVA' 카테고리의 다른 글

자바 배열 (4일)  (0) 2023.02.01
JAVA 참조 타입과 참조 변수  (0) 2023.02.01
JAVA 4일  (0) 2023.02.01
자바 2일차  (0) 2023.01.30
JAVA 1일  (0) 2023.01.27
Comments