JAVA

[ JAVA ] 데이터 크기/변수 (타입,자료형)/형변환/예약어/식별자/주석

haeun 하은 2022. 1. 17. 19:17
728x90

데이터(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) 데이터를 해당 숫자의 자리 수만큼 확보한 상태로 출력하는 서식(숫자가 음수이면 좌측 정렬, 숫자가 양수이면 우측 정렬)

 

728x90
반응형