printf()
형식 지정자
%d : 정수형(Integer)으로 출력
→ System.out.printf("%d", 100);
%f : 실수형(Float)으로 출력(실수형 기본은 Double)
→ System.out.printf("%f", 10.123);
%c : 문자형(Character)으로 출력
→ System.out.printf("%c", 'a');
%s : 문자열(String)으로 출력
→ System.out.printf("%s", "안녕하세요");
● 입력
사용자가 개발자에게 데이터를 넘겨주는 행위
● 입력상태
○ 개발자가 사용자에게 데이터를 넘겨달라고 기다리는 상태
○ 값이 입력되지 않으면 다음으로 진행이 불가능하다.
○ 개발자가 할 수 있는 일은 사용자에게 입력상태로 만들어주는 것 까지이다.
○ 그 아래 코드들은 사용자가 값을 입력했다고 가정하고 작성한다.
○ 입력상태에서는 사용자가 잘 입력할 수 있도록 먼저 출력을 해준다.
입력메소드를 이용하려면 Scanner 클래스를 사용해야 한다.
이 Scanner 클래스를 사용하려면 Scanner을 import해야 한다.
Scanner sc = new Scanner(System.in);
↑ scanner 객체를 생성해준다. 그러면 자동으로 import해준다.
● next()
○ 메소드 사용부분 통째로 사용자가 입력한 문자열 값
○ 공백 또는 엔터를 구분점으로 판단하고 분리하여 입력받는다.
→ 김 민주 : "김 민주" 이렇게 출력이 되는 것이 아니라
공백때문에 "김"만 출력이 된다.
● nextLine()
○ 메소드 사용부분 통째로 사용자가 입력한 문자열 값
○ 공백도 문자로 입력받는다.
○ 단점이 있는데 엔터를 가져오기 때문에 공백이 출력이 된다.
→ 앞에 nextLine이 아닌 다른 입력이 있다면 의미없는 nextLine()을
하나 미리 사용해야 한다.
● nextInt()
○ 메소드 사용부분 통째로 사용자가 입력한 정수 값
import java.util.Scanner;
public class HomeWork {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int num = 0;
int num2 = 0;
System.out.println("----입력----");
System.out.print("첫번째 정수 : ");
num = sc.nextInt();
System.out.print("두번째 정수 : ");
num2 = sc.nextInt();
System.out.println();
int add = num + num2;
int mi = num - num2;
int mu = num * num2;
float di = num / (float)num2;
System.out.print("----결과----");
System.out.printf("덧셈결과 : %d\n", add);
System.out.printf("뺄셈결과 : %d\n", mi);
System.out.printf("곱셈결과 : %d\n", mu);
System.out.printf("나눗셈결과 : %.3f\n", di);
}
}
자동 형변환(묵시적, 암시적) 정수 +(연산)실수 = 실수 10 + 0.0 = 10.0 문자 + 정수 = 정수 정수, 실수, .... + 문자열 = 문자열
강제 형변환(명시적)
명시적으로 코드를 작성하여 강제로 형변환을 한다.
(자료형) : 형변환 연산자
(자료형)값
(double)10
int → char : (char)65 : 'A'
char → int : (int)'A' : 65
float → int : (int)1.6f : 1
int → float : (float)10 : 10.0f
문자를 정수로 : Integer.parseInt("10");
문자를 실수로 : Double.parseDouble("10.1");
정수를 문자로 : Integer.toString(5);
실수를 문자로 : Double.toString(10.1);
기능이 있는 특수문자 또는 단어
한 문장안에 다양한 연산자가 있을 때 먼저 계산해주는 순위
최우선 연산자
단항 연산자
산술 연산자
쉬프트 연산자
관계 연산자
논리 연산자
삼항 연산자
대입 연산자
한 문장안에 우선순위가 같은 연산자가 여러개 있을 때
알맞은 방향으로 결합되어 연산되는 성질
(1 + 2) + 3 + 4
(3 + 3) + 4
6 + 4
10
+ - * /
a%b : a를 b로 나눈 나머지 (10%3 → 1)
1 bit : 컴퓨터 용량의 최소단위, 0 또는 1이 담길 수 있는 최소 용량
1 byte : 8 bit / 메모리의 최소단위, 데이터의 최소단위, 의미를 가지는 최소단위
a<< b : a를 b만큼 좌측으로 비트이동
17<<1 : 10001 << 1 → 100010 → 34
17>>1 : a를 b만큼 우측으로 비트이동
17>>1 : 10001 >> 1 → 1000 → 8
● 이진법 구하는 법:
2로 계속 나눠주다가 1이 남으면 그거포함해서 위로 올려준게 이진법
17을 2로 나눠주면 8이 나오고 1이 남음
8을 2로 나눠주면 4가 나오고 0이 남음
4를 2로 나눠주면 2가 나오고 0이 남음
2를 2로 나눠주면 1이 나오고 0이 남음
→ 이진법 : 10001이 나옴
● 조건을 제시하는 식, 조건을 나타내는 식
● 주장하는 식
● 결과가 참 또는 거짓, 둘 중 하나로 나오는 식
● 관계 연산자를 이용하여 만들어진다.
자바에서는 0과 1 대신 true, false 라는 값을 사용한다.
논리형 boolean 1byte true, fasle
>, < : 초과, 미만
>=, <= : 이상, 이하
== : 같다
!= : 다르다(같으면 fasle, 다르면 true)
조건식의 다양한 예
90 <= x && x <= 100 // 정수 x가 90이상 100이하일 때
x < 0 || x > 100 // 정수 x가 0보다 작거나 100보다 클 때
x % 3 == 0 && x % 2 != 0 // 정수 x가 3의 배수지만 2의 배수는 아닐 때
ch == 'y' || ch == 'Y' // 문자 ch가 'y' 또는 'Y'일 때
ch == ' ' || ch == '\t' || ch == '\n' // 문자 ch가 공백이거나 탭 또는 개행 문자일 때
'A' <= ch && ch <= 'Z' // 문자 ch가 대문자일 때
'a' <= ch && ch <= 'z' // 문자 ch가 소문자일 때
'0' <= ch && ch <= '9' // 문자 ch가 숫자일 때
str.equals("yes") // 문자열 str의 내용이 "yes"일 때(대소문자 구분)
str.equalsIgnoreCase("yes") // 문자열 str의 내용이 "yes"일 때(대소문자 구분안함)
조건식들의 관계를 설정해주는 연산자
A && B : 양 옆의 조건식의 결과값이 둘 다 true이면 true
A || B : 둘 중 하나라도 true면 true, 둘 다 false면 false
!A : 뒤의 조건식의 결과값이 true면 false, false면 true가 나온다.