기본 자료 단위 = 1 byte(8 byte : 부호비트 + 데이터비트) -128 ~ 0 ~ 127
a. 정수형 - byte(1byte) : -128 ~ 127 - short(2byte) : -32768 ~ 32767 - int(4byte) : -21억 ~ 21억 - long(8byte) : -922경 ~ 922경 b. 실수형 - float(4byte) : 단정도형 실수 - double(8byte) : 배정도형 실수(데이터의 손실이 더 적다) c. 문자형 - char(2byte) -> Unicode 이용 d. 논리형 - boolean(1byte)
2. 참조형, Reference Type a. 배열 b. 클래스(*) c. 인터페이스 d. String, 문자열 ascii 코드, 유니코드 기본단위 (2byte)
관련예제> Ex06_DataType, Ex07_DataType
class Ex05_DataType
{
public static void main(String[] args)
{
// Ex05_DataType.java
// 요구사항 - 국어점수를 변수에 저장한 뒤 출력하시오.
// 1. 변수 선언(null상태)
byte kor;
// 2. 변수 초기화
kor = 100;
// 2.5 변수 치환
kor = 95;
// 3. 변수 호출
System.out.println("국어점수 : "+kor);
}
}
--------------------------------------------------------------------
class Ex06_DataType
{
public static void main(String[] args)
{
// Ex06_DataType.java
// 정수형
byte b1;
b1 = 10;
System.out.println(b1);
byte b2 = 20; // 변수의 선언 + 초기화
byte b3, b4, b5; // 변수 선언 그룹화
byte b6 = 10, b7 = 20, b8, b9, b10 = 30;
byte b11 = 10; //몸무게
byte b12 = 20; //나이
byte b13 = 30; //키
// byte b14 = 128; //컴파일시 에러 발생
short s1 = -32768;
short s2 = 32767;
System.out.println(s1);
int n1 = -2100000000;
int n2 = 2100000000;
System.out.println(n1);
// long l1 = 10000000000; // 허용 범위 안의 수이지만 컴파일시 에러발생
long l1 = 10000000000L; // long 범위의 수로 지정해준다.
System.out.println(l1);
//////////////////////////////////////////
byte a1 = 100;
short a2 = 100;
int a3 = 100;
long a4 = 100;
// 이런 경우에 숫자 리터럴이 오는 경우에 자바에서는 모두 Integer로 인식한다.
System.out.println(100);
/////////////////////////////////////////////
// 실수형
// float f1 = 3.14; // 허용 범위 안의 수이지만 컴파일시 에러발생
float f1 = 3.14f; // float 범위의 수로 지정해준다.
System.out.println(f1); // 실수일 경우에는 double이 기본형이다.
double d1 = 3.14;
System.out.println(d1);
// 문자형
char c1 = 'a';
char c2 = 97;
System.out.println(c1);
System.out.println(c2);
// 1 vs '1'
// 논리형
boolean p1 = true;
boolean p2 = false;
System.out.println(p1);
// 문자열
String str = "안녕하세요";
System.out.println(str);
char c3 = '가';
String str2 = "가";
String str3 = ""; // 빈문자열
// int가 가질 수 있는 최대수를 넣어서
// num이라는 변수를 생성하고 출력하시오.
int num;
num = Integer.MAX_VALUE;
System.out.println("int가 가질 수 있는 최대수 : "+num);
}
}
변수, Variables - 자료형을 가지고 메모리상에 할당된 공간
1. 변수 선언(할당) - 자료형 변수명;
2. 변수 초기화 - 변수명 = 값;
3. 변수 호출(사용) - 문맥에 따른 변수명 기입
변수 vs 상수 - 표현에 따라 값이 변하는지, 변하지 않는지...
변수 명명법 - 영어 + 숫자 + _ - 숫자시작 X - 의미있게!!! a. 헝가리언 표기법 - 자료형을 식별자 앞에 접두어로 기입 - 인터페이스의 이름 -> IUser
b. 파스칼 표기법 - 한단어 -> 첫문자 대문자 -> 나머지는 소문자 - 두단어이상 -> 모든 단어의 첫문자를 대문자로 쓰고 나머지는 소문자 - 클래스 이름
c. 카멜 표기법 - 첫 단어의 첫문자는 소문자로, 나머지 단어의 첫문자는 대문자로 - 메서드명, 변수명 .....
확장 문자열, Escape Seqeunce - 특수문자 - 자료형이 char형인 이미 지능이 정해진 문자 - 특징 : 반드시 "\" 로 시작한다.
\n : new line \b : backspace (현재의 커서를 왼쪽으로 한칸 옮긴다. 이후 다른 글자 출력시 덮어쓴다) \t : tab \r : carriage return (현재의 커서를 맨 앞으로 옮긴다.) \" \' \\
관련예제> Ex07_EscapeSequence
class Ex07_EscapeSequence
{
public static void main(String[] args)
{
System.out.println("one\ntwo\nthree");
char c = '\n'; // 한글자로 취급
String c2 = "\n"; // 둘다 가능.
System.out.println("가나다\b라마");
System.out.println("하나\t둘\t셋\t넷");
System.out.println("일이삼\r사오");
// 요구사항 : ["안녕~"] 괄호안의 모든 문자를 출력하시오.
System.out.println("\"안녕~\"");
// 요구사항 : 파일경로를 출력하시오.
System.out.println("D:\\Java\\Ex01.java");
}
}
형변환, Casting - 하나의 자료형을 또 다른 자료형으로 변환하는 작업 - 숫자형 -> 숫자형
1. 암시적 형변환 작은형 -> 큰형 모든 경우가 안전하게 복사!
2. 명시적 형변환 큰형 -> 작은형 경우에 따라 가능O, 불가능O -> 불가능한 경우 Overflow 발생해서 데이터 이상 발생
관련예제> Ex08_Casting, Ex11_casting
class Ex08_Casting
{
public static void main(String[] args)
{
// 작은 -> 큰
byte b1;
short s1;
b1=10;
s1=b1;
System.out.println(s1);
short small;
int big;
//큰형 -> 작은형
big =100;
small = (short)big; //short = int
System.out.println(small);
int a1 = 2000000000;
short a2;
a2 = (short)a1;
System.out.println(a2);
}
}
------------------------------------------------------------------------------------------
class Ex11_Casting
{
public static void main(String[] args)
{
// 유효성 검사 할 때 유용하게 사용
//숫자형 -> 숫자형
//char -> 숫자
//숫자 -> char
char c1 = '힣';
int n1 = (int)c1;
System.out.println(n1);
char c2;
int n2 = 100;
c2 = (char)n2;
System.out.printf("%d => '%c'%n",n2,c2);
}
}
오류, 에러(Error), 버그(Bug), 예외(Exception) 1. 컴파일 에러 - 문법이 틀림 - 고치기 가장 쉽다. 2. 런타임 에러 - 문법은 통과 : 컴파일은 된다. - 실행 중 에러가 발생 - 예외 (Exception) 3. 논리 에러 - 컴파일O, 실행O -> 결과가 의도대로 나오지 않는다. - 발견하기도 어렵고 고치기도 어렵다.
관련예제> Ex09_Exception
class Ex09_Exception
{
public static void main(String[] args)
{
int input = 0;
System.out.println(100 / input);
}
}
콘솔 출력 - print(), println(), printf() - format
- 형식문자 1. %s -> String 문자열 대체 2. %d -> Decimal 정수 대체 3. %f -> 실수 대체 4. %b -> Boolean 대체 5. %c -> Char 대체
관련예제> Ex10_Output_printf
class Ex10_Output_printf
{
public static void main(String[] args)
{
// 요구사항 : 안녕하세요 x 5번 출력
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요");
System.out.println("안녕하세요"); // 이게 맞는걸까?
// 요구사항 : 인사 + 홍길동에게
System.out.println("안녕하세요~ 홍길동님");
String name = "아무개";
System.out.println("안녕하세요~ "+name+"님");
// 추가사항 : 잘가란 인사 추가
System.out.println("안녕하세요~ " +name+"님. 안녕히 가세요~ "+name+"님");
// 형식 문자열, Format String -> printf()
System.out.printf("안녕하세요~ %s님\n", name);
System.out.printf("안녕하세요~ %s님. 잘가~ %s님\n", name, name);
// SQL
// insert into tblAddress (name, age, tel) values ('hong', 25, '010-123-4567');
String name2 = "hong";
String age = "25";
String tel = "010-123-4567";
System.out.println("insert into tblAddress"+
"(name, age, tel) values ('"+name2+"',"+age+",'"+tel+"');");
System.out.printf("insert into tblAddress(name, age, tel) values ('%s',%s,'%s');\n", name2, age, tel);
//구구단 5 x 3 =15
int a = 5, b = 3;
System.out.printf("(%d x %d = %d)%n",a,b,a*b);
int num = 12345;
System.out.printf("%d*%n", num);
System.out.printf("%10d*%n", num);
System.out.printf("%-10d*%n", num);
int money = 2101010101;
System.out.printf("잔액 : %,d원%n", money);
double d1 = 25.8945631234;
System.out.printf("값 : %10.2f%n", d1);
System.out.printf("값 : %.2f%n", d1);
}
}
콘솔 입력 1. 바이트 입력 - System.in.read(); - java.io.IOException;
2. 문자열 입력 - System.in.readLine();
관련예제> Ex12_input
import java.io.IOException; //java.io 안에 있는 IOException을 쓰기 위한 선언
class Ex12_input
{
public static void main(String[] args) throws IOException
{
//Ex12_input.java
// 사용자로부터 문자 1개를 입력
System.out.print("문자 한개를 입력하세요 : ");
int input = System.in.read();
System.out.println(input);
input = System.in.read();
System.out.println(input);
input = System.in.read();
System.out.println(input);
input = System.in.read();
System.out.println(input);
input = System.in.read();
System.out.println(input);
input = System.in.read();
System.out.println(input);
}
}
관련예제> Ex15_input_BufferedReader, Ex16
import java.io.*;
class Ex15_input_BufferedReader
{
public static void main(String[] args) throws IOException
{
// 또다른 입력 방법
BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
String input = reader.readLine();
//System.in.read();
System.out.println(input);
//형변환
// -> (int)"5"
// -> (int)'5'
System.out.println(input + 10);
System.out.println(Integer.parseInt(input) + 10);
}
}
----------------------------------------------------------------------------------------
import java.io.*;
class Ex16_input
{
public static void main(String[] args) throws IOException
{
System.out.print("이름을 입력해주세요 : ");
BufferedReader reader =
new BufferedReader(new InputStreamReader(System.in));
String name = reader.readLine();
// String 클래스의 기능
char c = name.charAt(0);
System.out.printf("입력하신 \"%s\"님의 성은 \'%c\'씨 입니다.%n",name,c);
}
}