컴퓨터의 동작원칙

 

  • 반드시 같은 데이터타입 간에 연산을 한다.
  • 반드시 동일한 데이터타입의 값을 동일한 데이터타입의 변수에 대입한다.
  • 결과값 또는 동일한 데이터타입의 값을 가진다.

 

 

 

 

 

변수(Variable)

 

  • 메모리 공간에(RAM)한개의 값을 저장하기 위한 공간
  • 변수는 반드시 선언 후 , 값을 대입(초기화)

 

 

 

int x = 10;  ,   y = 20;
int tmp = 0;

System.out.println("x:"+x+"y:"y);

tmp = x;
x = y;
y = tmp;

System.out.println("x: "+y+"y: "x);

x: 10 y: 20
x: 10 y: 20

 

 

 

 

 

 

 

 

 

기본형, 참조형

 

 

 

  • boolean = true , false 두 가지 값만 표현
  • char = 자바에서 유니코드(문자 체계 2byte)를 사용
  • float = 실수값을 부동소수점(floating _porint)방식으로 저장
  • double = float보다 두 배의 크기(8byte)
  • bit = 데이터의 저장 최소단위 2진수값 하나
  • byte = 문자의 최소단위, (8bit = 1byte)

 

 

 

 

 

 

 

  • 오버플로우를 생각해야 된다.

 

 

 

 

 

 

 

 

 

 

 

명명규칙

 

  • 대 소문자가 구분된다.
  • 예약어를 사용해서는 안된다.

 

  • 숫자로 시작해서는 안된다.
  • 특수문자는 ' _ ' , ' $ '  가능

 

 

 

 

 

 

 

 

명명시 권장 규칙

 

  • 클래스 이름의 첫 글자는 항상 대문자 
com.tistory.Variable.java
  • 여러 단어 이름은 단어의 첫 글자를 대문자로 표기(Camel Case)

 

상수 

 

  • 변하지 않는 값, 컴퓨터에서 한번만 저장할 수있는 공간 , 초기화 이후 다른 데이터 대입불가(읽기전용)
  •  final int AGE_AGE = 20;
  •  상수선언 명명관례 대문자  , 여러단어인 경우 대문자_(언더스코어)대문자

 

 

 

 

 

 

 

 

 

 

 

형변환

 

1. 자동 형변환 : 연산시 컴파일러가 자동으로 형이 변환하는 것, 데이터 유실이 없는 경우

       int a = 12;

       double b  =15.2;

       double result = a + b;

(a + b)  > (12 + 15.2)  + (12.0 + 15.2) + 27.2

 

2. 수동 형변환 : 자료형으로 형변환 해줄 수 있다. 데이터가 큰 자료형에서 작은 자료형 변경, 데이터 손실 유의 ,오버 플로우 방지

 

ex)  double temp;

      int age =(int)temp;

 

 

 

 

 

3. 예외적 변환

int 보다 작은 자료형( byte, short char)은 연산시 int로 변환되어 처리

 

byte bnum = 10 , bnum2 = 20;

byte resule = bnum + bnum2; // 에러

int result  =   bnum + bnum2; // 성공

byte result = (byte) (bnum + bnum2); // 성공





char ch = 97;   char = int  암묵적으로 char로 변환

System.out.println(ch)   // ch = a  (ASCII Table 변환)





System.out.println('a' + 'A'); // char + char -> int + int 





char는 int와 만나면 in로 문자열과 만나면 문자로 처리

System.out.println(1+ 'a');  // 98

System.out.println("1" + 'a'); // 1a

 

 

 

 

 

 

 

 

 

 

출력 메소드

System.out.print()

()안의변수, 문자, 숫자, 논리값을 모니터에 출력해주는 메소드

 

 

 

System.out.println()

Print동일하게 출력해주지만 출력 자동으로 출력창에 줄바꿈해주는 메소드

 

 

 

 

System.out.printf()

정해져 있는 형식에 맞춰서 그 형식에 맞는 값(변수)을 줄바꿈 하지 않고 출력

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Scanner class

 

1. 사용자로부터 입력되는 정수, 실수, 문자열을 처리하는 클래스

Scanner scanner = new Scanner(System.in);

 

2. import 작성

단축키 : Ctrl + Shirt + O , 자동 패키지 생성

 

import java.util.Scanner;

 

 

 

3. 키보드 입력값 받는법

 

1. 정수 : .nextInt();

 

2. 실수 : .nextFlaot();  또는  .nextDouble();

 

3. 논리형 : .nextbool()

 

4. 문자열 : .next();  또는  .nextLine();

    next()는 띄어쓰기 입력불가

    nextLine()는 문자열에 띄어쓰기 가능

 

더보기

 Scanner class 입력값을 "토큰 단위" 로 읽는다.

  • 토큰(Token) :  공백문자(Spacebar , Tab , Enter 등)로 구분되는 요소

단, nextLint()은 예외이다. nextLine()은 Enter 단위로 읽는다.

ex)

import java.util.Scanner; 

public class Test {
    public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
 
        int x = scanner.nextInt();
        String y = scanner.nextLine();
 
        System.out.println("x 값:"+ x);
        System.out.println("y 값:"+ y);
        
        scanner.close();
    }
}

 

사용자가 x에  "1"  y에는 "test" 저장하길 원한다.

 

사용자가 nextInt()메소드에 "1\n"을 입력했다.

 

nextInt() 메소드는 입력값을 읽을 때 공백문자를 제외해서 읽으므로 "1"만 읽는다.

 

그러면 입력 버퍼(input buffer)에는 "1"이 나가고 "\n"만 남게 된다.

 

nextLine() 메소드는 입력값을 읽을 때 (입력 버퍼에 저장되어 있는)공백문자를 포함하여 읽는다.

 

 즉, nextint()로 인해 입력 버퍼에 저장된 "\n"까지 읽는 것이다.

 

그런데 nextLine()는 Enter 단위로 값을 읽으므로, 입력 버퍼에 저장된 "\n"를 읽은 후 입력값을 모두 

읽었다고 판단해서 넘어간다.

즉, "test"를 입력전에 입력을 끝내버린다. 

 

nextLine()은 반환시 "\n"을 버리고 반환하므로,  아무것도 return 되지 않는다.

 

그러므로 nextLine()가  "\n"을 읽기 전 nextLine()를 입력해 개행을 하고  "\n"을 없애주면  정상적으로 출력이 된다.

import java.util.Scanner; 

public class Test {
    public static void main(String[] args) {
    
        Scanner scanner = new Scanner(System.in);
 
        int x = scanner.nextInt();
        scanner.nextLine();  //버리는 용도
        String y = scanner.nextLine();
        
 		
        System.out.println("x 값:"+ x);
        System.out.println("y 값:"+ y);
        
        scanner.close();
    }
}