JAVA-03

이강민·2022년 3월 18일
0

웹 개발반 - JAVA

목록 보기
3/19
post-thumbnail

JAVA - 03

입력 메소드

Scanner

입력 메소드를 이용하려면 Scanner 클래스를 사용해야 되며
이 Scanner 클래스를 이용하기 위해서는 Scanner를 import해야된다.
스캐너 클래스를 메인 메소드나 기타 메소드에서 자동완성을 하면 import가 자동적으로 생성된다.
scanner를 사용할때는 import 여부를 확인하자!

package day03(패키지명);

//스캐너를 자동완성하면 import가 자동생성된다.
import java.util.Scanener;

public class Test(클래스명) {
//메인 메소드 생성
	public static void main (String[] args){
    	//스캐너를 사용하기 위해 자동완성을 이용한다.
        Scanner sc = new Scanner(System.in);
    }
}

next()

  • 메소드 사용부분 통째로 사용자가 입력한 문자열 값
  • 공백 또는 엔터를 구분점으로 판단하고 분리하여 입력받는다.
  • 부산 영도구 : 부산 만 입력받는다.
package day03;

import java.util.Scanner;

public class InputTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
//		 바로 옆에다 입력하기 위해서 띄어쓰기를 하지 않았다.
		System.out.print("주소를 입력하세요 : ");
//		sc.next(); 자체는 값이 될 수 있다. 
		String address = sc.next();
		System.out.println("당신의 주소는 "+address+"이네요!");
	}
}

입력결과 :

nextLine()

  • 메소드 사용부분 통째로가 사용가가 입력받은 값
  • 공백도 문자로 입력받는다.
  • 앞에 nextLine()이 아닌 다른 입력이 있다면 공백을 받아낼 nextLine()을 미리 써줘야 한다.
package day03;

import java.util.Scanner;

public class InputTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.print("이름 : ");
		String name = sc.next();
		System.out.println("주소 : ");
//		아래와 같이 엔터라는 값을 받아낼 nextLine()이 필요하다.
		sc.nextLine();
		String address = sc.nextLine();
		System.out.println("당신의 이름 : "+name);
		System.out.println("당신의 주소 : "+address);
	}
}

입력 결과 :

nextInt()

  • 메소드 사용부분 통째로가 사용자가 입력한 정수 값
package day03;

import java.util.Scanner;

public class InputTest2 {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		System.out.println("다음 첫 번째 정수를 입력하세요");
		int num1 = sc.nextInt();
		System.out.println("다음 두 번재 정수를 입력하세요");
		int num2 = sc.nextInt();
		System.out.println("당신이 입력한 정수의 합은 "+(num1+num2));
	}
}

형변환

자동 형변환

  • 암시적, 묵시적 형변환
  • 자바는 정수와 정수의 연산 결과가 정수로 나온다.
    • 정수 / 정수 = 정수, 10 / 3 = 3;
    • 정수 * 실수 = 실수
    • 문자(char) + 정수 = 정수
    • 정수, 실수, .... + 문자열 = 문자열;
package day03;

public class Casting {
	public static void main(String[] args) {
//		정수와 정수간의 계산은 정수로만 나온다.
		System.out.println(10/3);
//		char 타입과 정수의 계산은 정수가 나온다. char 타입은 아스키코드로 숫자로 변환
		System.out.println('A' + 3);
//		문자열과 연산되는 값들은 문자열로만 나온다. 
		System.out.println("A" + 3);
//		괄호를 하면 연산자 우선순위로 인하여 정수와 정수가 계산되고 문자열로 출력된다.
		System.out.println("A" + (3+4));
//		자동형변환을 이렇게 이용하면 편하다
		System.out.println(10 + "" + 3);
//		아스키코드 : 각 문자마다 대응되는 숫자값들을 가지고 있고 그 값을 아스키코드라고 한다.
//		'A' : 65, / 'a': 97 / '0' : 48
		System.out.println((char)('A'+3));
//		숫자를 다시 char로 변환 할 수 있다. 이렇게 명시하면 명시적 형변환으로 강제 형변환이다.
		System.out.println((char)68);
//		문자열과은 문자열만 출력한다.
		System.out.println("10"+"5");
	}
}

강제 형변환

  • 명시적 형변환
  • (자료형) : 형변환 연산자
  • (자료형) 값
  • Integer.parseInt(문자열) : 정수로 변환
package day03;


public class NumTest {
	public static void main(String[] args) {
//		문자열 타입으로 각각의 숫자를 변수로 선언하였다.
		String data1 = "17";
		String data2 = "1"; 
//		담아낼 변수의 타입을 정수로 하여 다음과 같이 메소드를 이용하면 정수로 강제변환 된다.
		int num1 = Integer.parseInt(data1);
		int num2 = Integer.parseInt(data2);
//		값이 18로 계산되는 것을 알 수 있다.
		System.out.println(num1+num2);
	}
}

연산자

  • 기능이 있는 특수 문자 또는 언어

우선순위

  • 한 문장안에 다양한 연산자가 있을 때 먼저 연산하는 순위
    최 : 최우선 연산자
    단 : 단항 연산자
    산 : 산술 연산자
    쉬 : 쉬프트 연산자
    관 : 관계 연산자
    리 : 논리 연산자
    삼 : 삼항 연산자
    대 : 대입 연산자

결합성

  • 한 문장안에 우선 순위가 같은 연산자가 여러개 있을 때 알맞은 방향으로 결합되어 연산되는 성질
  • 보통은 왼쪽에서 오른쪽임

산술 연산자

  • +, -, *, -
  • a % b : a를 b로 나눈 나머지
  • 10 % 3 ---> 1이다.

쉬프트 연산자

  • 1bit
    • 컴퓨터 용량의 최소단위, 0 또는 1이 담길 수 있는 최소 용량
  • 1byte
    • 8bit, 메로리의 최소단위, 데이터의 최소단위, 의미를 가지는 최소 단위
  • a << b : a를 b만큼 좌측으로 비트 이동, 좌시프트 연산자
17 << 1 --> 10001 << 1비트 만큼 이동 --> 100010 --> 34
								    32 16 8 4 2 1
                                    1인 값들만 더하면 해당 10진수가 나온다.
  • a >> b : a를 b만큼 우측으로 비트 이동, 우시프트 연산자
17 >> 1 --> 10001 >> 1비트 만큼 이동 --> 01000 --> 8
								     16 8 4 2 1

조건식

  • 조건을 제시하는 식, 조건을 나타내는 식, 주장하는 식
  • 결과가 참 또는 거짓, 둘 중 하나로 나오는 식
  • 관계연산자를 이용하여 만들어 진다.
  • 자바에서는 0과 1대신 false, true라는 값을 사용한다.
    논리형 boolean, 1byte단위

관계 연산자

  • 10 > 3
	>, <		: 초과, 미만
	>=, <=		: 이상, 이하
	==			: 같다,
	!=			: 다르다,
package day03;

public class OperTest {
	public static void main(String[] args) {
		System.out.println(10>3);
		boolean check = true;
		System.out.println(!check); // false
		System.out.println(check); // true
	}
}

논리 연산자

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

  • 논리곱(and)

    • A && B : 양 옆의 조건식이 둘다 true여야 true임
  • 논리합(or)

    • A || B : 양 옆의 조건식 중 하나라도 결과값이 true 이면 true

      논리 연산자의 단축평가?
      논리 연산자의 논리곱은 둘 중 하나가 false일 경우 false를 리턴하고
      둘다 true일 경우 true를 리턴한다.
      만약 true값을 가지고 있는 변수 a와 b를 논리곱으로 연산하면 결과는 어떻게 나올까?
      a && b 의 결과는 b를 출력한다.
      즉 양쪽의 항이 true일때는 우항을 출력하는 것이다.
      그럼 논리합 연산자는 어떨까?
      논리합은 두쪽 항의 하나라도 ture이면 true를 리턴한다. 둘다 true이면?? a||b 의 결과는 a를 출력한다.
      자바의 컴파일러 연산은 a가 true이니 더이상 연산의 필요가 없다고 판단하는 것이다.
      마찬가지로 둘중의 값 중 하나가 false이면 true인 값을 리턴한다.

  • 다음은 위 참고사항의 내용을 정의한다.

boolean left = true;
boolean right = true; 

System.out.println(left && right);  // right의 true;
System.out.println(false && right); // false;
System.out.println(left && false); // fasle;
System.out.println(left || right); // left의 true;
System.out.println(false || right); //right의 true;
System.out.println(left || false); //left의 true;
package day03;

public class OperTest {
	public static void main(String[] args) {
		boolean check = true;
		System.out.println(!check); // false
		System.out.println(check); // true
		System.out.println((check&&!check)); // false
		System.out.println((check&&check)); // true
		System.out.println((check||!check)); // true
		System.out.println((check||check)); // true
	}
}

단항 연산자

  • !A : 뒤의 조건식이 true라면 false, false라면 true

숙제

package day03;

import java.util.Scanner;

public class Test {
	public static void main(String[] args) {
//		두 정수를 문자열을 입력을 받아 
//		두 수의 덧셈, 뺄셈, 곱셈, 나눗셈, 결과 출력하기
//		나눗셈의 결과는 소수점 셋째자리까지 출력
//		------입력------
//		첫 번째 정수 : 10
//		두 번째 정수 : 10
//		------결과----
//		덧셈 결과 : 20
//		뺄셈 결과 : -10
//		곱셈 결과 : 200
//		나눗셈 결과 : 1
		int input1 = 0;
		int input2 = 0;
		String line = "------";
		
		Scanner sc = new Scanner(System.in);
		
		System.out.println(line+"입력"+line);
		System.out.print("첫 번째 정수 : ");
		input1 = Integer.parseInt(sc.next());
		System.out.print("두 번째 정수 : ");
		input2 = Integer.parseInt(sc.next());
		System.out.println(line+"결과"+line);
		System.out.println("덧셈 결과 : "+ (input1 + input2));
		System.out.println("뺄셈 결과 : " +(input1 - input2));
		System.out.println("곱셈 결과 : " + (input1 * input2));
		System.out.printf("나눗셈 결과 : %.3f\n" , ((float)(input1)/input2));
	}
}
profile
배움은 끝없이

0개의 댓글