1. 자료형,Data Type
-프로그램상에서 사용되는 데이터를 형식에 따라 나눠 놓은 분류
메모리 관리- 원고지에 데이터를 쓴다고 생각.
2.자바에서의 자료형
1. 기본형, Primitive Type
기본 자료 단위 = 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)
관련 예제
class Ex05_DataType
{
public static void main(String[] args)
{
//Ex05_DataType.java
//요구사항 - 국어점수를 변수에 저장한 뒤 출력 하시오
//1. 변수 선언(null상태)
byte kor;
//2. 변수 초기화
byte = 100;
//2.5 변수 치환
byte = 95;
//3. 변수 호출
System.out.println("국어 점수 : " + kor);
Class Ex06_DataType
{
pulblic 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= 1000000000; //허용 범위 안의 수이지만 컴파일시 에러발생
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 (현재의 커서를 맨 앞으로 옮긴다.)
\"
\'
\\
관련예제
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발생해서 데이터 이상 발생.
관련예제
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.런타임 에러
0문법은 통과:컴파일은 된다
-실행중 에러가 발생
-예외(Exception)
3.논리 에러
-컴파일O, 실행O -> 결과가 의도대로 나오지 않는다.
-발견하기도 어렵고 고치기도 어렵다.
관련예제
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 대체
관련예제
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();
관련예제
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);
}
}
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);
}
}