컴퓨터의 동작원칙
- 반드시 같은 데이터타입 간에 연산을 한다.
- 반드시 동일한 데이터타입의 값을 동일한 데이터타입의 변수에 대입한다.
- 결과값 또는 동일한 데이터타입의 값을 가진다.
변수(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();
}
}
'Programming > Java' 카테고리의 다른 글
[자바 난수] Math.random() (0) | 2022.03.02 |
---|---|
[JAVA 정리] 연산자 (0) | 2022.02.28 |
[이클립스 (eclipse) 설치] 이클립스 설치 및 기본설정 (0) | 2022.02.25 |
[이클립스 (eclipse) 단축키] 이클립스 단축키 정리 (0) | 2022.02.25 |
[자바 설치] 자바11 설치 및 환경변수 (0) | 2022.02.24 |