06. JAVA 변수의 자료형(Data Type) / 상수(Conastant) / 형변환(Type Casting) / 이스케이프(Escape) / 형식 문자열

2020. 6. 8. 11:45·개발/JAVA
728x90
반응형

1. 변수의 자료형(Data Type)

- 변수에는 크게Primitive Type - 기본 자료형과Reference Type - 참조형이 있다

-Reference Type - 참조형에는 클래스형, 인터페이스형, 배열, String등이 있지만 나중에 보자


2. 기본자료형(Primitive Type)

1) 수치형

* 정수형

- byte : 1byte (-2^7~2^7-1 : -128~127)

- short : 2byte (-2^15~2^15-1 : -32768~32767)

- int : 4byte (-2^31~2^31-1 : -2147483648~2147483647)

- long : 8byte (-2^63~2^63-1)

// long 형은 값 맨 뒤에 L/l(소문자)를 붙여주도록 한다. 
// 그렇지 않으면 정수형의 기본(Default값)인 int형으로 인식한다. 
long a = 123456789L / 123456789l;

* 실수형 (소수점)

- float : 4byte

- double : 8byte

// long 형과 마찬가지로 float 형도 맨뒤에 F/f를 붙여준다 
// 실수형의 기본은 double형이다 
float f = 3.3F / 3.3f;

※

- 정수형에서는 int, 실수형 에서는 double 이 default 이다.

- 소수점이 없는 숫자는 int형, 소수점이 있는 숫자는 double형으로 간주한다

- long > int > short > byte

byte a = 1;
byte b = 2;
byte c = a + b; // [x] 같은 형 끼리 더해도 default는 int이므로 형변환이 필요하다
byte c = (byte)(a+b); // [o], 형변환
int c = a + b; // [o]

int d = 1;
long e = 2l;
int f = d + e; // [x], 디폴트가 int지만 int보다 큰 long형과 연산이므로 오류
int f = (int)(d + e); // [o], 형변환
long f = d + e;

// long형 선언
long g = 1000;
long h = 1000000000l;

/* 
    실수형에서 같은 float형끼리의 연산은 float형이고
    float과 double은 double이 된다
*/
float f = 10; // 소수점이 아닌경우 안붙여도됨
float f1 = 5.5f;
float f2 = f + f1; // [o]
double d = f + f1; // [o]

2) 문자형

 

- char (2 byte) : 보통 문자를 캐릭터형(차 라고도 부름)이라고 한다

ex) '가', 'A' 등등 한 문자를 할땐 '' 외따옴표 안에 넣고 여러 문자인 경우 "" 쌍따옴표 안에 넣는다 "Hello World"

- char형은 메모리에 저장될때 아스키 코드값으로 저장된다

 

char ch = 'A';
System.out.print(ch); // A 출력됨
System.out.print(ch + 1); // 66 출력됨

* 컴퓨터는 0과 1밖에 모르기 때문에 문자 혹은 기호들은 아스키 값으로 저장된다

* 예시처럼 A는 문자지만 숫자를 더할경우 A는 65로 인식한다

(char형은 int보다 작은 형이기때문에 숫자를 더하면 int가됨)

3) 논리형

- boolean (1byte) : true, false값만 있다

※ 자료형의 규칙

- 실수 > 정수

- double > float > long > int > short > byte,char

 

- 큰 자료형과 작은 자료형의 연산 결과는 큰 자료형을 따른다

ex) long + int => long,

double + float => double

* int or float 으로 남기고 싶으면 형변환 해주자

 

- 같은 자료형 끼리의 연산결과는 자료형을 따른다

단, int 형보다 작은 자료형들끼리 연산결과는 int형

 

- 큰 자료형을 더 작은 자료형으로 대입 불가능

int a = 100000;
byte b = a; // [x], 큰 그릇을 작은 그릇에 넣을수 없다
byte b = (byte)a; // [o], 가능은 하지만 byte범위를 벗어날 경우 이상한 값이 나오므로 하지말자

- 정수형과 실수형의 연산결과는 실수형 (크기상관없이 실수 우선)

long l = 1; // 8 byte
float f = 2; // 4 byte
System.out.print(l + f); // type을 확인해보면 float형이 나옴

 


3. 상수 (Constant)

- 절대로 변하지 않는 불변의 값

- 상수로 정의시 final을 붙여준다

public static final int A = 10;

 

- 상수의 변수명은 보통 대문자로 정의한다 (가독성을 위함)

- 상수의 값을 변경할 시 오류

- 반드시 초기화해야됨

public static final int MY_CONSTANT=10;
int num;
public void Hap() {
	num=20;
	MY_CONSTANT=20; // [x], 값은 변하지 않음

	System.out.print(num + MY_CONSTANT);
}

4. 형변환 (Type Casting)

- 묵시적 형변환

byte b = 1; 
int i = 2; 
int i1 = b + i;

- 강제적 형변환 : 큰 그릇은 작은 그릇에 넣고자 할때

byte b = 1; 
int i = 2; 
byte b1 = (byte)(b + i);

5. 이스케이프 (Escape)

- 기존 문자의 기능을 탈출(escape)하고 새로운 기능을 부여받은 문자 (\ 역슬래시를 사용, 폰트마다 다르게 표기됨)

 

* 이스케이프 문자 종류

- \t (tab기능)

- \n (줄바꿈, 엔터값)

- \r (커서를 맨 앞으로)

System.out.print("Hello World"); // Hello World 가 출력
System.out.print("Hello World");
System.out.print("Java");
/* 
    출력시 Hello WorldJava가 출력된다
    이럴때 이스케이프 문자를 사용한다
*/

System.out.print("Hello World\t");
System.out.print("Hello World");
// Hello World    Hello World 가 출력, 탭만큼 들여쓰기가 됨

System.out.print("Hello World\r\n");
System.out.print("Hello World");
System.out.print("Hello World\r\n Java");
/* 
    Hello World
    Hello World
    엔터값

    Hello World
    Java
*/

- \' (외따옴표)

- \" (쌍따옴표)

- \\ (\ 출력)

System.out.print("Hello World 'Java'");
System.out.print("Hello World "Java"");
// 위 두 값은 오류가 난다 이럴경우 \를 사용해주자

System.out.print("Hello World \"Java\""); // Hello World "Java"

* print의 종류는 3가지 이다

- print (줄바꿈 기능 없음)

- println (줄바꿈기능 추가) : print보다 println을 더 많이 사용한다

- printf (형식 문자열)


6. 형식 문자열(Format String)

- 형식 문자열은 출력 형식을 지정해주는 문자열을 의미

- printf 메소드에서 사용 가능하며 %를 사용

 

* 종류

- %d (정수)

- %f (실수)

- %c (문자 char)

- %b (논리)

- %s (문자열 String)

- %n (줄바꿈)

System.out.printf("나는 %d살", 28); // 나는 28살

- 형식문자열이 들어간경우 갯수에 맞게 값이 있어야 된다 (%n제외)

System.out.printf("내 이름은 %c, 나이는 %d, 사는 곳은 %s%n입니다", "코난", 28, "서울"); 
// 내 이름은 코난, 나이는 28, 사는 곳은 서울 
// 입니다

* 만약 타입을 모를 경우 %s 를 써주면 된다(상위클래스)

* 자리수 표시

double d = 1.2345678;
System.out.printf("%.2f", d);
// 소수점 2개까지 출력하겠다 => 1.23

System.out.printf("%4d", 1);
// +는 왼쪽으로 0001
System.out.printf("%-4d", 1);
// -는 오른쪽으로 1000

 

728x90
반응형
저작자표시 (새창열림)

'개발 > JAVA' 카테고리의 다른 글

08. JAVA 제어문 - 조건문(IF, SWITCH) / 반복문(FOR, WHILE) / 중첩  (0) 2020.06.08
07. JAVA의 연산자 (Operator)  (0) 2020.06.08
05. JAVA의 변수 (variable)  (0) 2020.06.08
04. OOP  (0) 2020.06.08
03. JAVA의 기본 구조/실행/주석  (0) 2020.06.08
'개발/JAVA' 카테고리의 다른 글
  • 08. JAVA 제어문 - 조건문(IF, SWITCH) / 반복문(FOR, WHILE) / 중첩
  • 07. JAVA의 연산자 (Operator)
  • 05. JAVA의 변수 (variable)
  • 04. OOP
joolog
joolog
  • joolog
    JOO
    joolog
  • 전체
    오늘
    어제
    • 분류 전체보기 (163)
      • 개발 (81)
        • JAVA (29)
        • PYTHON (9)
        • AWS (15)
        • DOCKER (2)
        • PERCONA (2)
        • ORACLE (12)
        • MYSQL (1)
        • 알고리즘 (0)
        • 기타 (11)
      • 툴 (5)
        • MARKDOWN (1)
        • GIT (1)
        • DOCKER (1)
        • PyCharm (2)
        • IntelliJ (0)
      • 일상 (35)
        • 맛집 (6)
        • 카페 (2)
        • 요리 (4)
        • 글씨 연습 (2)
        • 그저 일상 (7)
        • 내돈 내산 (11)
        • 홍보 (1)
      • 국내 여행 (1)
      • 해외 여행 (15)
        • 체코-오스트리아 (10)
        • 일본 (5)
      • 암 일지 (26)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
    • 관리
    • 티스토리 홈
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    글씨연습
    요양병원
    오블완
    재발
    오닉스 리프3
    mysql
    갑상선 암
    Oracle
    저요오드식
    자바JDBC
    티스토리챌린지
    자바
    성모샘쉼터
    히로시마
    오스트리아
    jdbc
    동위원소
    오라클
    잘츠부르크
    체코
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
joolog
06. JAVA 변수의 자료형(Data Type) / 상수(Conastant) / 형변환(Type Casting) / 이스케이프(Escape) / 형식 문자열
상단으로

티스토리툴바