Java/문법

[Java 문법 총정리] 자료형 (정수, 실수, 부울, 문자, 문자열, StringBuffer)

soowitty 2024. 1. 24. 20:32

 

java 문법 구멍이 많아서 기초부터 다시 빠르게 짚고 넘어갈 겸 간단하게 정리해본다. 👩‍💻

 

💡 대부분의 내용을 점프 투 자바 에서 참고하여 정리하였습니다.

 

정수

int

int i = 30;

 

long

long l = 30L;

 

short

short s = 30;

 

byte

byte b = 30;
  • int와 long을 주로 사용하고, short와 byte는 잘 사용하지 않는다.
  • Long이 int보다 더 큰 범위이다. (더 많은 숫자를 담을 수 있음)
    • long > int > short > byte

형변환

int i = (int) 30L;  // long -> int 강제 형변환
long ll = 30;       // int -> long 자동 형변환

 


실수

double

double dd = 30.0;

 

float

float ff = 30.0f;  //30.0F도 가능
  • double이 float보다 더 큰 범위이다.

boolean

boolean isMarried = true;
isMarried = false;

 


문자

char

char c = 'a';
char cc = '한';

영/한 상관 없이 한 글자만 사용

 


문자열

String

String str = "여러 글자";

 

문자열 내장 메서드

  • equals
    • 2개의 문자열을 비교
    • 사용법
      • 문자열1.equals(문자열2)
      System.out.println("hello".equals("java")); // false 출력
      
    • == 연산자는 2개의 자료형이 같은 객체인지를 판별할 때 사용하므로 원하는 결과값이 나오지 않을 수 있다. 두 문자열을 비교할 때는 반드시 equals 메소드를 사용하자.
  • indexOf
    • 특정 문자열이 시작되는 위치(index값)을 리턴
    • 사용법
      • 문자열1.indexOf(문자열2)
      String str = "I love Java";
      System.out.println(str.indexOf("Java")); // 7 출력
      System.out.println(str.indexOf('o'));    // 3 출력
      
  • contains
    • 특정 문자열의 포함 여부를 리턴
    • 사용법
      • 문자열1.contains(문자열2)
      String str = "I love Java";
      System.out.println(str.contains("Java"));   // true 출력
      System.out.println(str.contains("Python")); // false 출력
      
  • charAt
    • 특정 index의 문자를 리턴
    • 사용법
      • 문자열.charAt(인덱스)
      String str = "I love Java";
      System.out.println(str.charAt(3));  // o 출력
      
  • replace, replaceAll
    • 특정 문자열을 모두 찾아서 다른 문자열로 변경
    • 사용법
      • 문자열1.replace(target 문자열, replacement 문자열);
      • 문자열1.replaceAll(target 문자열, replacement 문자열);
      String str = "I love Java";
      System.out.println(str.replaceAll("love", "hate")); // I hate Java 출력
      
    • replace vs. replaceAll
      • replaceAll은 인자값으로 정규 표현식을 사용할 수 있다. But, replace는 불가능
      String str = "abcdefghijk";
      
      System.out.println(str.replaceAll("[abchij]", "z")); //zzzdefgzzzk 출력
      System.out.println(str.replace("a", "z").replace("b", "z").replace("c", "z").replace("h", "z").replace("i", "z").replace("j", "z")); //zzzdefgzzzk
      
      // 정규표현식을 활용해 원하는 문자열을 제외하고 치환
      System.out.println(str.replaceAll("[^abchij]", z)) // abczzzzhilz 출력
      
      • 연속되지 않는 여러 문자를 한번에 치환하기 원하는 경우에 replaceAll( )과 정규 표현식을 활용하면 쉽게 구현할 수 있다.
      • 대상 문자열이 어떤 형태인지 모를 경우에는 replaceAll( )을 활용하는 것이 좋다.
      • 주의할 점
        • 연산 속도는 replace가 더 빠르므로 간단한 구문을 구현할 때는 replace를 사용하자.
        • replaceAll에서는 “.”을 정규표현식으로 인지하여 모든 문자열로 해석한다.
        • String str ="aa..bbcc";
          
          System.out.println(str.replace(".", "dd")); // aaddddbbcc 출력
          System.out.println(str.replaceAll(".", "dd")); // dddddddddddddddd 출력

 

  • substring
    • 문자열에서 특정 문자열을 뽑아냄
    • 사용법
      • 문자열.substring(시작 인덱스, 끝 인덱스);
      String str = "I love Java";
      System.out.println(str.substring(2,6));  // love 출력
      
      • 끝 인덱스의 문자는 포함이 안된다는 점에 주의하자!
  • toUpperCase
    • 문자열을 모두 대문자로 변경할 때 사용
    • 사용법
      • 문자열.toUpperCase();
      String str = "I love Java";
      System.out.println(str.toUpperCase());  // I LOVE JAVA 출력
      
  • split
    • 문자열을 특정 구분자로 나누어 배열로 리턴
    • 사용법
      • 문자열.split(구분자);
      String str = "I love Java";
      String[] res = str.split(" ");
      System.out.println(Arrays.toString(res));  // [I, love, Java] 출력
      

 


문자열 formating

  • 숫자 대입
int i = 5;
System.out.println(String.format("I ate %d bananas", i));  
// I ate 5 bananas 출력
  • 문자열 대입
String str = "java";
System.out.println(String.format("I love %s", str));  // I love java 출력

 

  • System.out.printf
    • 포매팅된 문자열을 리턴
    • String.format 메서드 없이도 포매팅된 문자열 출력 가능
      System.out.printf("I eat %d apples.", 3);  // I eat 3 apples. 출력

 

 


StringBuffer

  • 문자열을 추가하거나 변경할 때 주로 사용
  • String vs. StringBuffer
    • String : 불변한 문자열 처리를 위한 클래스. 최초 생성한 객체에 추가 or 변경이 발생하는 경우 새로운 객체가 다시 생성되어 구성됨.
    • StringBuffer : 가변한 문자열 처리를 위한 클래스. 새로운 문자열을 추가 or 변경하면 기존의 객체 상태가 변경되어 구성됨.
    • StringBufferString에 비해 메모리를 많이 차지하고, 속도도 느리다.
    • → 문자열을 추가하거나 변경하는 작업이 많으면 StringBuffer를, 적으면 String을 사용하자!

 

StringBuffer 메서드

  • append : 맨 끝에 문자열 추가
StringBuffer sb = new StringBuffer();
sb.append("I");
sb.append(" love");
sb.append(" Java");
System.out.println(sb); // I love Java 출력

 

  • insert : 특정 위치에 원하는 문자열 삽입 (index 사용)
StringBuffer sb = new StringBuffer();
sb.append("I love Java");
sb.insert(2, "don't ");
System.out.println(sb);  // I don't love Java 출력
  • substring : 문자열에서 특정 문자열을 뽑아냄. String의 substring 메서드와 동일하게 동작.