- 입력

사용자가 개발자에게 값을 넘겨주는 행위

 

 

- 입력 상태

커서가 깜빡이면서 값이 들어오기를 기다리는 상태

개발자가 할 수 있는 일은 사용자게에 입력 상태로 만들어주는 것까지이다.

값이 입력되지 않으면 다음으로 진행이 불가능하다.

 

따라서 개발자는 다음에 적힐 코드들은 값이 입력되었다고 가정하고 작성한다.

입력 받기 전 사용자가 잘 입력할 수 있도록 먼저 출력해준다.

 

 

. (하위 연산자)

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+ "입니다.");

 

위 코드의 결과

- 형 변환

  1. 변수의 자료형을 변환한다는 의미
  2. 특정 자료형의 값을 다른 자료형의 변수에 대입할 수 있다.
  3. 암묵적 형변환과 명시적 형변환의 두 종류가 있다.

 

- 암묵적 형 변환, 자동 형변환

서로 다른 자료형을 연산 혹은 대입하는 경우, 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"; 불가능

 

 

- 산술 연산자, 사칙 연산자

  1. 덧셈, 뺄셈, 곱셈, 나눗셈을 수행한다.
  2. 사칙 연산의 결과는 대입 연산자를 통하여 다른 변수에 대입이 가능하다.
  3. 나눗셈에 있어서 주의사항
    더보기
    -> 10/3이면, 몫 : 3, 나머지 : 1 10/3 = 3으로 나오고, 10%3 = 1로 나온다.
  4. 모든 수는 0으로 나눌 수 없다.
  5. 곱셈, 나눗셈이 덧셈, 뺄셈보다 우선순위가 높다.

 

 

- 관계 연산자

왼쪽 기준으로 읽는다.

>, < 초과, 미만
>=, <= 이상, 이하
== 같다
!= 다르다, 같지 않다.

 

 

- 논리 연산자

두 조건식의 관계를 설정해주는 연산자

양 옆에 조건식이 와야 한다. (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
복사했습니다!