[ JAVA ] 데이터 크기/변수 (타입,자료형)/형변환/예약어/식별자/주석
데이터(Data)의 크기
✔ bit : 0 과 1로 이루어진 컴퓨터위 저장되는 정보의 가장 작은 단위
✔ 1byte = 8bit
상수(데이터 타입)/정수표현/실수표현
[ 변수 ] 변하는 값을 의미하고 [ 상수(constant) ] 는 변하지 않는 값
변수도 데이터 타입이 있고 상수도 데이터 타입이 있다.
a=1; ➡ 변수=상수;
1=3; 은 컴파일 되지 않는다. 1은 3이 아니기 때문에
[ 정수형 ]
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
byte | 1byte | -128 ~ 127 |
short | 2byte | -32,768 ~ 32,767 |
int | 4byte | -2,147,483,648 ~ 2,147,483,647 |
long | 8byte | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
✔ byte,short 는 작은 수를 표현하기 때문에
정수형은 int 를 주로 쓰면 된다.
✔ 정수의 표현
int a = 2147483648;
➡ 컴파일 안됨 표현 범위 넘어섬
long a = 2147483648;
➡ 컴파일 안됨 데이터 타입이 int 이기 때문에
long a = 2147483648L ;
➡ (소문자를 써도 컴파일이 되지만 숫자 1과 비슷하기 때문에 대문자로 쓰는 것이 좋다.)
❗예외❗
byte b = 100;
short c = 200;
➡ byte 와 short는 현 범위 안에만 넣으면 컴파일됨
[ 실수형 ]
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
float | 4byte | -3.4E38 ~ + 3.4E38 |
double | 8byte | -1.7E308 ~ + 1.7E308 |
✔ 실수형은 double 을 주로 사용하면 된다.
✔ 실수의 표현
int a = 2.2; ➡ 정수형 변수 a = 실수 ➡ 컴파일 안됨
float a = 2.2; ➡ 컴파일 안됨
float a = 2.2F; ➡ 컴파일됨
double a = 2.2; ➡ 컴파일 안됨
[ 문자형 ]
데이터 타입 | 메모리의 크기 | 표현 가능 범위 |
char 2byte | 2byte | 0 ~ 65,535 |
✔ char (character) 은 \u0000 (유니코드) 의 기본 값을 가진다.
변수 (Variable)
✔ 단 하나의 값을 저장 할 수 있는 메모리 공간
(2개 안들어갈수없다/새로운 값을 저장하면 기존 값은 사라진다.)
✔ 동일한 변수명은 오류가 생긴다!
변수 선언
int age ;
(int : 변수 타입) (age : 변수 이름)
✔ (Data Type) :저장되는 데이터에 따라 변수의 자료형이 결정된다.
예시 🔽
int a; // 변수 선언
a = 1; // a라는 변수에 1을 대입
System.out.println(a+1); //2
a = 2; //변수 재설정
System.out.println(a+1); //2
변수가 없는 경우
✔ 변수를 재 설정을 한다면 많은 코드를 재수정을 해야함
✔ 중복의 제거를 하여 가독성이 높아지고 유지보수의 용이성이 높아짐 (버그가 낮아짐)
✔ 고정적인것은 묶고 변경 가능한 것 (변수 지정하는 부분 int a = 100) 묶기
자료형 ( Data Type)
(1) 기본 자료형 (Primitive data type)
✔ 자바 컴파일러에 의해서 해석되는 자료형
✔ 실제 값을 저장
기본 자료형의 종류 🔽
자료형 | 키워드 | 크기 | 기본값 | 표현 범위 |
논리형 | boolean | 1byte | false | true 또는 false (0과1로 대체할 수 없음) |
문자형 | char | 2byte | \u0000 | 0 ~ 65,535 |
정수형 | byte | 1byte | 0 | -128 ~ 127 |
short | 2byte | 0 | -32,768 ~ 32,767 | |
int | 4byte | 0 | -2,147,483,648 ~ 2,147,483,647 | |
long | 8byte | 0 | -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 |
|
실수형 | float | 4byte | 0.0 | -3.4E38 ~ + 3.4E38 |
double | 8byte | 0.0 | -1.7E308 ~ + 1.7E308 |
쉽게 이해하기!!
✔ boolean 은 ture/false 2가지만 표현 ➡ 1byte
✔ Char은 자바에서 유니코드 (유니코드는 2byte 문자체계) 가 기본 값 ➡ 2byte
✔ byte는 크기가 1byte 이니까 ➡ 1byte
✔ short(2byte) int(4byte) long(8byte)
✔ float(4byte) 더블은 8이니까 double(8byte)
(float은 부동 소수점, floating-point 방식)
(2) 참조 자료형 (Reference data type)
✔ 어떤 값이 저장되어 있는 주소(memory address)를 값으로 가진다.
✔ 자바 API에서 제공되거나 프로그래머에 의해서 만들어진 클래스를 자료형으로 선언하는 경우
✔ 클래스 타입, 인터페이스 타입, 배열 타입, 열거 타입
Data Type
✔ 저장되는 데이터에 따라 변수의 자료형이 결정된다.
✔ [ 정수 ] : 소수점 없는 수
ex) ......-1 -2 -3 0 1 2 3 ......
✔ [실수] : 실수는 소수점을 가진 수
ex) ......-0.1 -0.01 0 0.01 0.1 1 ......
숫자 변수
ex)
double a; int a;
//실수 + 변수; //정수 + 변수;
a = 1.1; //정수가 아닌 실수를 대입하면 컴파일 안된다.
System.out.println(a+1.1);
문자열 변수
ex)
String first; //문자열 + 변수;
first = "coding";
// String first = "coding"; 한줄 요약 가능하다.
<문자열 변수 예시>
String a, b;
a= "coding";
b= ""everybody";
System.out.println(a+b);
식별자(Identifier)
변수 이름 처럼 프로그램 안에거 사용하는 모든 언어
✔ 영문자(A~Z,a~z)와 숫자(0~9)와 ‘_’,’$’의 조합
✔ 첫글자는 반드시 영문자나 ‘_’로 시작/ 숫자로 시작 불허
✔ 식별자는 대소문자를 철저히 구분,길이에 제한이 없다.
✔ 상수 값을 표현하는 단어 true, false, null은 식별자로 사용할 수 없다.
✔ 자바에서 사용되는 예약어는 식별자로 사용할 수 없다.
예약어🔽
-자바 프로그래밍을 하는데 있어 특정한 의미가 부여되어 이미 만들어진 식별자를 말한다.
-예약어에 등록되어 있는 것을 프로그래밍에서 식별자로 사용할 수 없다.
(const와 goto는 예약어로 등록만 되어 있을 뿐 사용되지 않는 예약어이다.)
abstract | continue | goto | package | this |
assert | default | if | private | throw |
boolean | do | implements | protected | throws |
break | double | import | public | transient |
byte | else | instanceof | return | try |
case | extends | int | short | void |
catch | final | interface | static | while |
char | finally | long | super | |
class | float | native | switch | |
const | for | new | synchronized |
✔ 세부 식별자 정의 규칙
구분 | 정의 규칙 | 사용 예 |
클래스 | - 첫 문자는 항상 대문자로 표현 - 하나 이상의 단어가 합쳐질 때는 각 단어의 첫 문자들만 대문자로 표현 |
class JavaTest{ …; } |
변수와 메서드 | - 첫 문자는 항상 소문자로 표현 -하나 이상의 단어가 합쳐질 때는 두 번째부터 오는 단어의 첫 문자들만 대문자로 표현 |
String itLand; public void getTest(){ …; } |
상수 | -모든 문자를 대문자로 표현 (여러 단어로 이루어진 이름은 단어 첫 글자는 대문자 EX) String Buffer ) -하나 이상의 단어가 합쳐질 때 공백 필요 시 under score(_)를 사용하여 연결한다. |
final int JAVATEST = 10; final int JAVA_TEST = 20; |
형변환 (Tybe Conversion)
✔ 데이터나 변수의 자료형을 다른 자료형(데이터의 타입)으로 변환시키는 것
✔ 기본형과 참조형 모두 형변환이 가능하다.
✔ 자바의 데이터는 서로 같은 자료형일 때 연산이 가능하다.
✔ 기본형은 기본형끼리만, 참조형은 참조형끼리만 형변환 가능하다. ex) int ->double / int->flot
✔ 서로 다른 자료형들은 같은 타입으로 변경시킨 후 연산 가능하다
ex) double a = 3.0F; ➡ F (float) 이 붙어 있어도 double로 인식
float a = 3.0;
✔ float (32bit) < double (64bit)
* 표현 범위가 좁은 데이터 타입에서 넓은 데이터 타입으로 변환만 허용된다.
❗예외❗
boolean 은 false와 true만을 저장하기 위해 특별히 만들어진 데이터 타입이므로 형변환이 불가능하다.
✔ 형변환은 명시적 형변환과 묵시적 형변환으로 나뉜다.
묵시적형변환(자동형변환)
✔ 명시적 형변환과 묵시적 형변환으로 나뉜다. 프로그램 실행 도중 자동으로 일어나는 형변환
✔ 명시적 형변환과 묵시적 형변환으로 나뉜다. 작은 타입을 큰 타입으로 변수에 할당하면 자동으로 변환된다.
✔ 명시적 형변환과 묵시적 형변환으로 나뉜다.자동 형 변환이 발생하면 변환 이전의 값과 변환 이후 값이 동일하다.
❗주의❗
✔ char는 2byte이지만 표현 범위가0~65535이므로 음수를 저장할 수 없다.
✔ 음수가 저장될 수 있는 byte타입을bytechar타입으로 자동 형변환할 수 없다.
< 예시 >
int a =3;
float b= 1.0F;
double c = a +b;
➡ double c =int + float;
정수 ➡ 실수
a = 3.0F
b = 1.0F
c의 결과 값은 4.0F
명시적 형변환(강제 형변환)
float a =(float) 100.0;
➡ double형 데이터를 float으로 a변수에 대입하려고 하면 double보다 작은 데이터 float이라서 정보의 오류가 생김
int b = 100.0;
➡ 실수형 데이터가 정수형(int) b변수에 대입하려고 하면
✔ 정수보다 실수가 더 크기 때문에 정보에 손실이 생김
✔넓은 범위를 표현 가능 한 큰 타입의 데이터를 좁은 범위를 표현 가능한 작은 타입으로 형 변환할 때에는 명시적으로 형변환을 해야 한다.
EX)
float a =(float) 100.0;
int b = (int) 100.0F;
주석
public class Hello {
public static void main(String [ ] args) {
✔ 클래스를 실행하고자 할 때 main 메서드를 반드시 작성해야 한다.
// ➡ 한 줄 주석
✔ 코드에 대한 설명을 달거나 코드를 컴파일할 때 제외시켜 처리하고자 할 때 사용한다.
System.out.println("Hello, Would!");
// System.out.println("하은");
컴파일 하면 --> Hello, Would 만 추출된다.
여러 줄 주석 ➡ 앞 문장 위 /* 마지막 문장 아래 */
/*
System.out.println("Seoul");
System.out.println("Korea");
*/
[JavaDoc] 자바의 문서를 만들 때 사용 / URL 문서 생성 가능
/**
* System.out.println("----------");
* System.out.println("----------");
**/
세미콜론
; -> 새미콜론 문장(statement)의 끝을 의미
여러 개의 문장을 한 줄에 표현할 수 있다.
System.out.printf()를 이용해서 출력시 사용하는
포맷문자 🔽
서식 | 설명 |
%c | char 문자 1개를 출력하는 서식 |
%숫자c | char 문자 1개를 해당숫자의 자리 수만큼 확보한 상태로 출력하는 서식(숫자가 음수이면 좌측 정렬, 숫자가 양수이면 우측 정렬) |
%d(%o,%x) | byte,short,int,long형의 데이터를 10진(8진,16진)수로 출력하는 서식 |
%숫자d(%숫자o,%숫자x) | byte,short,int,long형의 데이터를 10진(8진,16진)수로 해당 숫자의 자리 수만큼 확보한 상태로 출력하는 서식(숫자가 음수이면 좌측 정렬, 숫자가 양수이면 우측 정렬) |
%0숫자d(%0숫자o,%0숫자x) | byte,short,int,long형의 데이터를 10진(8진,16진)수로 해당 숫자의 자리수만큼 확보한 상태로 출력하는 서식인데 확보한 자리가 공백이면 0 값을 공백에 채우게 하는 서식(숫자가 음수이면 런타임 에러 발생) |
%f(%g,%e) | float,double형의 데이터를 실수(근사,지수)로 출력하는 서식 |
%숫자(%숫자g,%숫자e) | float,double형의 데이터를 실수(근사,지수)로 해당 숫자의 자리 수만큼 확보한 상태로 출력하는 서식(숫자가 음수이면 좌측 정렬, 숫자가 양수이면 오른쪽 정렬). 또한 숫자는 소수 이하 1자리를 나타낼 수도 있다. 예를 들면 '%10.2f'라는 서식은 전체 10자리를 확보하고 그 중에서 소수점 이하 2자리를 나타내라는 뜻이다. 만약 소수 이하 세 번째 자리에서 반올림이 가능하면 반올림을 하라는 뜻도 됨 |
%0숫자(%0숫자g,%0숫자e) | float,double형의 데이터를 실수(근사,지수)로 해당 숫자의 자리 수만큼 확보한 상태로 출력하는 서식인데 확보한 자리가 공백이면 0 값을 공백에 채우게 하는 서식(숫자가 음수이면 런타임 에러 발생), 또한 숫자는 소수 이하 1자리를 나타낼 수도 있다. 예를 들면 '%10.2f'라는 서식은 전체 10자리를 확보하고 그 중에서 소수점 이하 2자리를 나타내라는 뜻이다. 만약 소수 이하 세 번째 자리에서 반올림이 가능하면 반올림을 하라는 뜻도 된다. |
%s | 문자열(String) 데이터를 출력하는 서식 |
%숫자s | 문자열(String) 데이터를 해당 숫자의 자리 수만큼 확보한 상태로 출력하는 서식(숫자가 음수이면 좌측 정렬, 숫자가 양수이면 우측 정렬) |