
- 입력
사용자가 개발자에게 값을 넘겨주는 행위
- 입력 상태
커서가 깜빡이면서 값이 들어오기를 기다리는 상태
개발자가 할 수 있는 일은 사용자게에 입력 상태로 만들어주는 것까지이다.
값이 입력되지 않으면 다음으로 진행이 불가능하다.
따라서 개발자는 다음에 적힐 코드들은 값이 입력되었다고 가정하고 작성한다.
입력 받기 전 사용자가 잘 입력할 수 있도록 먼저 출력해준다.
. (하위 연산자)
A.b : A안의 b, A의 b를 의미한다.
- 입력 메소드
입력을 받기 위한 준비과정
import java.util.Scanner; // Scanner을 자동완성하면 main 위에 만들어짐.
// 이게 있어야 Scanner메소드 사용가능
Scanner sc = new Scanner (System.in);
sc.next();
입력메소드 | 의미 |
next() | 통째로 사용자가 입력한 문자열 값 공백 또는 엔터를 구분점으로 판단하고 분리하여 입력받는다. 홍 길동 : "홍" "길동"으로 분리하여 "홍"만 입력받는다. --> 따라서 값의 개수 만큼 next()을 사용해주어야한다. |
nextLine() | 통째로 사용자가 입력한 문자열 값 공백도 문자로 입력받는다. 이전에 nextLine()이 아닌 다른 입력이 있다면 의미 없는 nextLine()을 한번 미리 써주어야한다. |
nextInt() | 통째로 사용자가 입력한 정수값 |
next()으로 이름, 주소 입력받기!
// next()으로 이름, 주소 입력받기
Scanner sc = new Scanner(System.in);
System.out.println("이름을 입력하세요 : ");
String name = sc.next();
System.out.println("반갑습니다~ " + name + "님");
Scanner sc1 = new Scanner(System.in);
System.out.println("주소를 입력하세요 : ");
String addr1 = sc1.next();
String addr2 = sc1.next();
System.out.println("당신의 주소는 "+ addr1 + addr2 + "입니다.");

nextLine()으로 이름, 주소 입력받기
Scanner sc = new Scanner(System.in);
System.out.println("이름을 입력하세요 : ");
String name = sc.nextLine();
System.out.println("반갑습니다 ~ " + name + "님");
System.out.println("주소를 입력하세요 : ");
Scanner sc1 = new Scanner(System.in);
String addr = sc.nextLine();
System.out.println("당신의 주소는" + addr + "입니다.");

nextLine()으로 이름, 주소 입력받기!
Scanner sc2 = new Scanner(System.in);
System.out.println("나이를 입력하세요 :");
int age = sc.nextInt();
System.out.println("당신의 5년 뒤 나이는 " + (age+5) + "입니다.");

next()로 두 개의 정수 입력받아서 더한 결과 출력하기!
//입력
Scanner sc = new Scanner(System.in);
System.out.println("두 개의 정수를 입력하세요 : ");
int num1 = Integer.parseInt(sc.next());
int num2 = Integer.parseInt(sc.next());
//처리 (입력받은 두 개의 정수 더하기)
int sum = num1 + num2;
//출력
System.out.println("입력하신 두 개의 정수의 합은 " +sum+ "입니다.");

- 형 변환
- 변수의 자료형을 변환한다는 의미
- 특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다.
- 암묵적 형변환과 명시적 형변환의 두 종류가 있다.
- 암묵적 형 변환, 자동 형변환
서로 다른 자료형을 연산 혹은 대입하는 경우, JAVA 컴파일러가 자료형을 통일한다.
int num1 = 1;
int num2 = 5;
double num3 = 10.0;
double num4 = 5.7;
String str1 = "자바";
char char1 = 'A'; // 아스키코드 : 각 문자마다 대응되는 숫자값들을 가지고있다.
// 정수 + 정수
int sum1 = num1 + num2;
System.out.println("정수 + 정수 :" + sum1);
// 문자 + 정수
int sum2 = char1 + num1; // 아스키코드 : 각 문자마다 대응되는 숫자값들을 가지고있다.
System.out.println("문자 + 정수 : " +sum2);
// 정수 + 문자열
String sum3 = num1 + str1;
System.out.println("정수 + 문자열 : " + sum3);
// 문자 + 문자열
String sum4 = char1 + str1;
System.out.println("문자 + 문자열 : " + sum4);
// 실수 + 문자열
String sum5 = num3 + str1;
System.out.println("실수 + 문자열 : " + sum5);

- 자동 형 변환이 허용되는 범위
1. 데이터 손실이 발생하지 않는 범위 내에 이루어진다.
2. double 형 데이터 20.5를 int에 대입하는 경우에는 0.5에 대한 데이터 손실이 불가피하므로
자동형 변환에서는 에러가 발생한다.
- 명시적 형변환 , 강제 형변환
데이터의 손실을 감수하더라도, 강제로 형 변환을 시키는 형태이다.
int num = 10;
System.out.println(num/3);
System.out.println((double)num/3);
- 아스키코드

- 연산자
기능이 있는 특수문자 또는 단어
- 연산자 우선순위
한 문장 안에 다양한 연산자가 있을 때 먼저 연산을 하는 순위
--> 최단산쉬관리삼대 (최우선 연산자, 단항 연산자, 산술 연산자, 쉬프트 연산자, 관계 연산자, 논리 연산자, 삼항 연산자, 대입 연산자)
- 결합성
한 문장 안에 우선순위가 같은 연산자가 있을 때, 맞는 방향으로 결합 후 연산되는 성질을 의미한다.
1+2+3+4+5
-> (1+2)+3+4+5 -> (3+3)+4+5 -> (6+4)+5 -> 10+5 -> 15
- 단항 연산자
연산자 종류 | 연산자 |
부호 연산자 | +(양수), -(음수) |
증감 연산자 | ++, -- |
형변환 연산자 | (type) 값 |
논리 연산자 | !(값) : 부정 |
비트 연산자 | ~(값) : 비트뒤집기 |
- 증감 연산자
덧셈 | 뺄셈 |
전위형 : x++ 해당 줄 부터 적용 현재 data의 값을 먼저 수식에 적용, 나중에 data에 대한 1증가처리를 한다. 후위형 : ++x 다음줄 부터 적용 먼저 현재 data에 대한 1증가처리 후, 그 결과를 수식에 적용한다. |
전위형 : x-- 해당 줄 부터 적용 현재 data의 값을 먼저 수식에 적용, 나중에 data에 대한 1감소처리를 한다. 후위형 : --x 다음 줄 부터 적용 먼저 현재 data에 대한 1감소처리 후, 그 결과를 수식에 적용한다. |
// 전위형
int data = 10;
System.out.println(++data); // 결과 : 11
System.out.println(data); // 결과 : 11
// 후위형
System.out.println(data++); // 결과 : 10
System.out.println(data); // 결과 : 11
- 누적 대입 연산자 (복합 대입 연산자, 누적 연산자)
+=, -=, *=, /=, %=
int data = 10;
data = data + 5;
data += 5;
data += 3+2;
String msg = "A";
msg = msg + "B"; //"AB" msg += "B"; 가능
msg = "B" + msg; // "BA" msg += "B"; 불가능
- 산술 연산자, 사칙 연산자
- 덧셈, 뺄셈, 곱셈, 나눗셈을 수행한다.
- 사칙 연산의 결과는 대입 연산자를 통하여 다른 변수에 대입이 가능하다.
- 나눗셈에 있어서 주의사항
더보기-> 10/3이면, 몫 : 3, 나머지 : 1 10/3 = 3으로 나오고, 10%3 = 1로 나온다.
- 모든 수는 0으로 나눌 수 없다.
- 곱셈, 나눗셈이 덧셈, 뺄셈보다 우선순위가 높다.
- 관계 연산자
왼쪽 기준으로 읽는다.
>, < | 초과, 미만 |
>=, <= | 이상, 이하 |
== | 같다 |
!= | 다르다, 같지 않다. |
- 논리 연산자
두 조건식의 관계를 설정해주는 연산자
양 옆에 조건식이 와야 한다. (true/false 값이 와야 한다는 의미)
- AND 연산자
"&&" : 두 개의 값을 비교하여, 모두 true인 경우에만 true값을 리턴한다.
int num1 = 10;
int num2 = 20;
boolean r1 = (num1 == num2) && (num1 != num2);
//-> false
boolean r2 = (num1 != num2) && (num1 < num2);
// -> true
boolean r3 = !(num1 >= num2) && (num1 != num2);
// -> true
- OR 연산자
"||" : 두개의 값을 비교하여, 둘 중 하나라도 true이면 true값을 리턴한다.
int num1 = 10;
int num2 = 20;
boolean r1 = (num1 == num2) || (num1 != num2);
-> true
boolean r2 = (num1 != num2) || (num1 < num2);
-> true
boolean r3 = !(num1 >= num2) || (num1 != num2);
-> true
- 비트 연산
1 bit : 1 또는 0이 저장될 수 있는 컴퓨터의 용량의 최소 단위
1 byte : 8bit, 컴퓨터 메모리의 최소 단위 (의미를 가지는 데이터의 최소 단위)
비트로 변환 후 연산하는 것들
14 (10진법) >> 01110 (2진법)
17 (10진법) >> 10001 (2진법)
& (AND) : 논리곱 --> 두 비트가 모두 1일 때 1
14 & 17 ---> 01110 & 10001 ---> 00000 ---> 0(10진법)
| (OR) : 논리합 --> 둘 중 하나라도 1이면 1
14 | 17 ---> 01110 | 10001 ---> 11111 ---> 31(10진법)
^ (XOR) : 배타 논리합 --> 두 비트가 서로 다를 때 1
14 ^ 17 ---> 01110 ^ 10001 ---> 11111 ---> 31 (10진법)
~(NOT) : 논리 부정, 비트 뒤집기 ---> 1은 0으로, 0은 1로 비트를 바꿔준다.
: 부호 비트도 뒤집어 준다. (양수 -> 음수, 음수-> 양수)
~14 ---> ~01110 ---> 10001 ---> -15 (10진법)
~a = -(a+1)

- 비트 이동 (쉬프트 연산)
a >> b : a를 b만큼 오른쪽으로 비트 이동
14 >> 1 : 01110 >> 1 ----> 00111(2진수) ----> 7(10진수)
a << b : a를 b만큼 왼쪽으로 비트 이동
14 << 1 : 01110 << 1 ---> 11100(2진수) ---> 28(10진수)
'WEB > JAVA' 카테고리의 다른 글
DAY 06 : 2차원 배열, 메소드 (0) | 2022.01.04 |
---|---|
DAY 05 : 반복문, 배열 (0) | 2022.01.03 |
DAY 04 : 조건식, 삼항 연산자, 조건문 (0) | 2022.01.03 |
DAY 02: 출력, 변수 (0) | 2022.01.02 |
DAY 01 : 자바(JAVA) (0) | 2021.11.09 |