개발/점프 투 자바

자바의 기초 - 자료형 1편

반기반개퐝퐝 2024. 11. 24. 16:37

인프런에서 자바, 스프링 강의를 들으면서 배운 내용을 잘 정리해야겠다는 생각이 들어서

점프 투 자바 책을 구입했습니다!

뭔가 코딩을 공부할 때 책을 보면서 공부하는 게

단방향으로 주입해 주는 강의보다

제 속도에 맞게 한 장씩 읽어가며 공부하는 게 더 잘 맞는 것 같은 느낌입니다 후후


 

이번에는 자료형에 대해 정리를 하였습니다.

 

- 자료형(data type)이란?

데이터의 종류와 크기를 결정하는 기본 구성 요소로, 숫자, 문자열처럼 자료 형태로 사용하는 모든 것.

 

1. 숫자

1) 정수

정수를 표현하는 자료형은 int와 long이 있습니다.

  • int
    • -2147483648 ~ 2147483647
  • long
    • -9223372036854775808 ~ 9223372036854775807 
    • 숫자 맨 뒤에 대문자 L을 붙여 표현
    • ex) 8748393827161746L

2) 실수

실수를 표현하는 자료형은 float과 double이 있습니다.

  • float
    •  -3.4 * 10^38 ~ 3.4 * 10^38
    • 숫자 맨 뒤에 대문자 F를 붙여 표현
    • ex) 3.14F
  • double
    • -1.7*10^308 ~ 1.7*10^308 
    • 자바에서 실수형의 기본값은 double

3) 8진수와 16진수

8진수와 16진수는 int 자료형을 사용한다.

  • 0... -> 8진수
  • 0x... -> 16진수

2. 불

  • true
  • false

참(true) 또는 거짓(false)의 값을 갖는 자료형을 불(boolean) 자료형이라고 한다.

3. 문자

문자 자료형은 char을 사용합니다.

  • char
    • 문자 하나를 표현
    • char a1 = 'a';

4. 문자열

문자열은 String을 사용합니다.

//새로운 객체를 만들지 않는 리터럴 표기 방식
String a = "Happy Java";
String b = "a";
String c = "123";

//새로운 객체를 만들어 값을 생성
String a = new String("Happy Java");
String b = new String("a");
String c = new String("123");

더보기

원시 자료형

지금까지 소개한 int, long, double, float, boolean, char 자료형은 원시(primitivie) 자료형이라고 한다.

이러한 자료형은 new 키워드로 값을 생성할 수 없고,

아래와 같은 리터럴 표기 방식으로만 값을 생성할 수 있다.

  • boolean result = true;
  • char a = 'A';
  • int i = 10000;

 

더보기

Wrapper 클래스

int, long, double, float, boolean, char 등의 원시 자료형에는 각각 그에 대응하는 Wrapper 클래스가 있다.

원시 자료형 Wrapper 클래스
int Integer
long Long
double Double
float Float
boolean Boolean
char Char

4-1) 문자열 내장 메서드

① equals

문자열 두 개의 값이 동일한지 비교하여 결과를 리턴

public class Sample {
    public static void main(String[] args) {
        String a = "hello";
        String b = "world";
        String c = "hello";

        System.out.println(a.equals(b));
        System.out.println(a.equals(c));
    }
}

 

public class Sample {
    public static void main(String[] args) {
        String a = "hello";
        String b = new String("hello");

        System.out.println(a.equals(b));
        System.out.println(a==b);
    }
}

문자열 a와 b는 모두 'hello'로 글자는 같지만, 서로 다른 객체이기 때문에 

a==b의 리턴 값이 false로 나온다.

 

--> == : 같은 객체인지 판별

 

 

 

 

 

② IndexOf

IndexOf는 문자열에서 특정 문자열이 시작되는 위치(인덱스 값)을 리턴한다.

public class Sample {
    public static void main(String[] args) {
        String a = "Hello Java";
        System.out.println(a.indexOf("Java"));
    }
}

③ contains

contains는 문자열에서 특정 문자열이 포함되어 있는지 여부를 리턴한다.

public class Sample {
    public static void main(String[] args) {
        String a = "Hello World";
        System.out.println(a.contains("World"));
        System.out.println(a.contains("War"));
    }
}

 

④ charAt

charAt은 문자열에서 특정 위치의 문자를 리턴한다.

public class Sample {
    public static void main(String[] args) {
        String a = "Hello Java";
        System.out.println(a.charAt(6));
    }
}

⑤ replaceAll

replaceAll은 문자열에서 특정 문자열을 다른 문자녈로 바꿀 때 사용한다.

public class Sample {
    public static void main(String[] args) {
        String a = "Hello Java";
        System.out.println(a.replace("l", "r"));
    }
}

⑥ substring

substring은 문자열에서 특정 문자열을 뽑아낼 때 사용한다.

  • substring(시작 위치, 끝 위치)
    • 조건 : 시작 위치 <= 끝 위치
public class Sample {
    public static void main(String[] args) {
        String a = "Hello Java";
        System.out.println(a.substring(0,4));
    }
}

⑦ toUpperCase/toLowerCase

toUpperCase는 모든 문자열을 대문자로 만들 때, toLowerCase는 모든 문자열을 소문자로 만들 때 사용한다.

public class Sample {
    public static void main(String[] args) {
        String a = "Hello Java";
        System.out.println(a.toUpperCase());
        System.out.println(a.toLowerCase());
    }
}

⑧ split

split은 문자열을 특정한 구분자로 나누어 문자열 배열로 리턴한다.

public class Sample {
    public static void main(String[] args) {
        String a = "Hello Java";
        String[] result = a.split("l");
    }
}

4-2) 문자열 포매팅

문자열 안에 특정 값을 바꿀 수 있게 해 주는 방법이 문자열 포매팅 기법이다.

> 문자열 안에 어떤 값을 삽입하는 방법.

  • "현재 온도는 18도입니다."
  • "현재 온도는 20도입니다."

① 숫자 바로 대입하기

public class Sample {
    public static void main(String[] args) {
        System.out.println(String.format("오늘 날씨는 %d도입니다.",3));
    }
}

② 문자열 바로 대입하기

public class Sample {
    public static void main(String[] args) {
        System.out.println(String.format("오늘 날씨는 %s도입니다.","십이"));
    }
}

③ 숫자값을 나타내는 변수 대입하기

public class Sample {
    public static void main(String[] args) {
        int number = 13;
        System.out.println(String.format("오늘 날씨는 %d도입니다.",number));
    }
}

④ 값을 2개 이상 대입하기

public class Sample {
    public static void main(String[] args) {
        int number = 13;
        String location = "수원시";
        System.out.println(String.format("오늘 %s 날씨는 %d도입니다.",location,number));
    }
}

4-3) 문자열 포맷 코드

종류 설명
%s 문자열(String)
%c 문자 1개(character)
%d 정수(Integer)
%f 부동 소수(floating-point)
%o 8진수
%x 16진수
%% 특수문자 %
%s는 다른 어떤 형태의 값이든 변환하여 넣을 수 있음.

5. StringBuffer

StringBuffer는 문자열을 추가하거나 변경할 때 주로 사용하는 자료형이다.

public class Sample {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello");
        System.out.println(sb);
        sb.append("_");
        System.out.println(sb);
        sb.append("Java");
        System.out.println(sb);
        String result = sb.toString();
        System.out.println(result);
    }
}

더보기

- 이뮤터블(immutable) : 값을 변경할 수 있는 것

ex) StringBuffer

- 뮤터블(mutable) : 값을 변경할 수 없는 것

ex) String

--> String은 값이 변경될 때마다 새로운 객체를 생성하여 리턴 

4-1) StringBuffer 메서드

① insert

insert는 특정 위치에 원하는 문자열을 삽입할 때 사용하는 메서드이다.

public class Sample {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello Java");
        sb.insert(6, "Nice ");
        System.out.println(sb.toString());
    }
}

② substring

특정 위치에서 특정 위치까지의 문자열을 뽑아낼 때 사용하는 메서드이다.(String의 substring과 동일)

- substring(시작 위치, 끝 위치)

public class Sample {
    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer();
        sb.append("Hello Java");
        System.out.println(sb.substring(0,4));
    }
}


 

지금까지 기초적인 자료형의 종류들을 확인하고 그에 해당하는 메서드들을 살펴보았습니다.

다음 시간에는 자료형들의 집합? 여러 개의 자료형을 묶어놓은 그릇? 자료형들에 대해서 살펴보겠습니다.

 

감사합니다 :)