변수(Variable)란?
- 변하는 수
- 하나의 값을 저장할 수 있는 저장공간.
변수의 타입(Data type)
■ 기본형(Primitive Type)
- 8개 (boolean, char, byte, short, int, long, float, double)
- 실제 값을 저장
■ 참조형(Reference type)
- 기본형을 제외한 나머지(String, System 등...)
- 객체의주소를 저장(4byte, 0x00000000~0xffffffff)
기본형(Primitive Type)
- 논리형 - true와 false 중 하나의 값으로 갖으며, 조건식과 논리적 계산에 사용
- 문자형 - 문자를 저장하는데 사용되며, 변수 당 하나의 문자만을 저장할 수 있다.
- 정수형 - 정수 값을 저장하는데 사용된다. 주로 사용하는 것은 int와 long이며, byte는 이전데이터를 다루는데 사용되며, short는 c언어와 호환을 위해 추가되었다.
- 실수형 - 실수 값을 저장하는데 사용, float와 double이 있다.
변수의 선언 방법
★ 타입 변수명
int score;
score 100;
int score 100;
String str = new String("abc");
str = null;
명명규칙(Naming convention)
- 대소문자가 구분되며 길이에 제한이 없다 // True와 true는 서로 다른 것으로 간주된다.
- 예약어(Reserved word)를 사용해서는 안 된다. // ture는 예약어라 사용할 수 없지만, True는 가능하다.
- 숫자로 시작해서는 안 된다. // top10은 허용하지만, 7up은 허용되지 않는다.
- 특수문자는 '_' 와 '$' 만을 허용한다. // $harp은 허용되지만 S#arp는 허용되지 않는다.
명명규칙 - 권장사항
- 클래스 이름의 첫 글자는 항상 대문자로 한다. // 변수와 메서드 이름의 첫 글자는 항상 소문자로 한다.
- 여러 단어 이름은 단어의 첫 글자를 대문자로 한다. // lastIndexOf, StringBuffer
- 상수의 이름은 대문자로 한다. 단어는 '_'로 구분한다. // PI, MAX_NUMBER
변수, 상수, 리터럴
- 변수(variable) - 하나의 값을 저장하기 위한 공간
- 상수(constant) - 한 번만 값을 저장할 수 있는 공간
- 리터럴(literal) - 그 자체로 값을 의미하는것
int score = 100;
score = 200;
char ch = 'A';
String str = "abc";
final in MAX = 100;
MAX = 200; // 에러, 상수의 값은 변경불가!
리터럴과 접미사
boolean power = true; char ch = ‘A’; char ch = ‘\u0041’; char tap = ‘\t’; byte b = 127; short s = 32767; int I = 100; int oct = 0100; int hex = 0x100; |
long l = 10000000000L; float f = 3.14f; double d = 3.14d float f = 100f; 10. -> 10.0 .10 -> 0.10 10f -> 10.0f 3.14e3f -> 3140.0f 1e1 -> 10.0 |
변수의 기본값과 초기화
변수의 초기화 ?
- 변수에 처름으로 값을 저장하는 것
* 지역변수는 사용되기 전에 반드시 초기화해주어야 한다.
문자와 문자열
정수의 오버플로우(Overflow)
부호가 없는 정수
부호가 있는 정수
형변환(Casting)
형변환이란?
- 값의 타입을 다른 타입으로 변환하는 것
- boolean을 제외한 7개의 기본형은 서로 형변환이 가능
folat f = 1.6f;
int i = (int)f;
1. byte -> int
byte b = 10;
int i = (int) b; // 생략가능
2. int -> byte
int i2 = 300;
byte b2 = (byte) i2; // 생략불가
형식화된 출력 - printf()
▶ println()의 단점 - 출력방식을 지정불가하다는 점!
1. 실수의 자리수를 조절불가 - 소수점 n 자리만 출력하려면?
System.out.println(10.0 / 3); // 3.333333....
2. 10진수로만 출력된다. - 8진수, 16진수로 출력하려면?
System.out.println(0x1A); // 26
▶ printf() 로 출력형식 지정가능하다.
System.out.println("%.2f", 10.0/3); // 3.33
System.out.println("%d", 0x1A); // 26
System.out.println("%X", 0x1A); // 1A
printf()의 지시자
- %b : 불리언(boolean) 형식으로 출력 (true or false)
- %d : 10진수(decimal) 형식으로 출력
- %o : 8진수(octal) 형식으로 출력
- %x, %X : 16진수(hexa-decimal) 형식으로 출력 (%x는 소문자로, %X는 대문자로 출력)
- %f : 부동 소수점(floating point) 형식으로 출력
- %e, %E : 지수(exponent) 형식으로 출력
- %c : 문자(character) 형식으로 출력 (Unicode)
- %s : 문자열(string) 형식으로 출력
public static void main(String[] args) {
System.out.printf("age:%d year:%d\n", 14, 2017);
// "age:14 year:2017\n" 이 화면에 출력된다.
int age = 10;
System.out.printf("age:%d", age); // 출력 후 줄바꿈을 하지 않는다.
System.out.printf("age:%d\n", age); // 출력 후 줄바꿈을 한다.
System.out.printf("=================");
// 정수를 10진수, 8진수, 16진수로 출력
System.out.printf("%d\n", 15); // 15 >> 10진수
System.out.printf("%o\n", 15); // 17 >> 8진수
System.out.printf("%x\n", 15); // f >> 16진수
System.out.printf("%s\n", Integer.toBinaryString(15)); // 1111 >> 2진수
// 8진수와 16진수에 접두사 붙이기
System.out.printf("%#o\n", 15); // 017
System.out.printf("%#x\n", 15); // 0xf
System.out.printf("%#X\n", 15); // 0xF
// 실수 출력을 위한 지시자 %f - 지수형식(%e), 간단한 형식(%g)
float f = 123.4567890f;
System.out.printf("%f", f); // 123.456787 소수점 아래 6자리
System.out.printf("%e", f); // 1.2345678e+02 지수형식
System.out.printf("%g", 123.456789); // 123.457 간략한 형식
System.out.printf("%g", 0.00000001); // 1.00000e-8 간략한 형식
System.out.printf("[%5d]%n", 10); // [ 10]
System.out.printf("[%-5d]%n", 10); // [10 ]
System.out.printf("[%05d]%n", 10); // [00010]
화면에서 입력받기 - Scanner
★ Scanner 란?
화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
★ Scanner를 사용하려면
1. import 문 추가
import java.util.Scanner;
2. Scanner 객체의 생성
Scanner scanner = new Scanner(System.in);
3. Scanner 객체를 사용
Scanner scanner = new Scanner(System.in);
int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장
String input = scanner.nextLine(); // 화면에서 입력받은 내용은 input에 저장
int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환
'Java > Java 이론' 카테고리의 다른 글
[JAVA] 생성자 (0) | 2023.08.01 |
---|---|
[JAVA] 배운내용정리 (2) (0) | 2023.07.29 |
[JAVA] 인스턴스 생성과 힙 메모리 (0) | 2023.07.28 |
[JAVA] 함수와 메서드 (0) | 2023.07.28 |
[JAVA] 객채지향 언어 (0) | 2023.07.28 |