🧩 Programming Languages/Java Grammar

2. 정수, 실수, 증감연산, 불, 문자열, 문자열 내장 메서드, 문자열 포맷팅

복숭아아이스티에샷추가 2024. 5. 11. 17:00

 

 1. 정수 

 

(1) byte : -128부터 127

(2) short  : -32768부터 32767

 

이 둘은 잘 사용하지 않지만 특정 상황에서 효율적인 메모리 사용이 필요한 경우에 사용

 

 

 (3) int 

-2147483648 ~ 2147483647

int age = 10;

 

 

 

 (4) long 

-9223372036854775808 ~ 9223372036854775807

 

만약 long 자료형 변수에 값을 대입할 때 int 자료형의 최댓값인 2147483647 보다 크다면,  끝에 L  를 붙여야한다. (컴파일 오류 발생 방지)

소문자도 가능하지만 숫자 1과 헷갈릴 수 있기 때문에  대문자로 쓰는 것이 좋다. 

 

long countOfStar = 8764827384923849L;

 

 2. 실수 

 

 

 (1) float 

 

 

 (2) double 

 

정수를 표현하는 자료형 long 처럼 double 도 float 자료형의 최댓값보다 크면,  끝에 F 혹은 f  를 붙여야 한다. (컴파일 오류 발생 방지)

대소문자 상관없다.

 

e2 = 10² 이므로 아래와같이 표현할 수도 있다.

double d = 1.234e2; // 1.234 ** 10

 

 3. 증감연산 

 

(1) i++ : 값을 참조한 후 1 증가

(2) ++i : 1 증가 후 값 참조

int i = 0;
System.out.println(i++);  // 0 출력
System.out.println(i);  // 1 출력

 

 4. 불 

 

(1) 정의 : 참(true) 또는 거짓(false)의 값을 갖는 자료형

boolean isTrue = true;
boolean isFalse = false;

 

(2) 사용처

 

a. 불 연산의 결괏값에 대입 가능

2 > 1             // 참
1 == 2            // 거짓

 

b. 주로  조건문의 판단 기준 으로 사용

int base = 180;
int height = 185;
boolean isTall = height > base;

if (isTall) {
    System.out.println("키가 큽니다.");
}

 


 

 5. 문자열 

 

문자열을 나타내는 자료형은  String  이다.

String a = "Happy Java";
String b = new String "Sad Java";

 

첫 번째 줄은  리터럴(literal) 표기 방식 

두 번째 줄의  new 키워드 

 

(1) 리터럴 표기 방식

: 고정된 값을 그대로 대입

: 동일한 리터럴을 사용한다면 새로운 String 객체를 만들지 않고 기존에 만든 것을 재활용

 

(2) new 키워드

: 객체를 만들 때 사용

: 항상 새로운 String 객체를 만든다.

 


 

 6. 문자열 내장 메서드 

 

 

(1)  equals  : 두 문자열이 같은지 다른

String a = "a";
String b = "b";
String c = "a";

System.out.println(a.equals(b)); // false 출력
System.out.println(a.equals(c)); // true 출력

 

 

만약 == 연산자를 사용한다면

System.out.println(a == c)); // false 출력

 

값은 같더라도 서로 다른 객체이기 때문에 false 를 리턴한다.

 


(2)  indexOf  : 특정 문자열이 시작되는 위치

String a = "Hello Java";
System.out.println(a.indexOf("Java")); // 6 출력

 


(3)  contains  : 특정 문자열 존재여부

String a = "Hello Java";
System.out.println(a.contains("Java")); //   true 출력
System.out.println(a.contains("Python")); // false 출력

 

 

(4)  charAt  : 특정 위치의 문자 리턴

String a = "Hello Java";
System.out.println(a.charAt(6)); // "J" 출력

 


(5)  replaceAll  : 특정 문자열을 다른 문자열로 바꿀 때

String a = "Hello Java";
System.out.println(a.replaceAll("Java", "Python")); // Hello Python 출력

 


(6)  substring  : 특정 문자열 뽑을 때

String a = "Hello Java";
System.out.println(a.substring(0, 4)); // Hell 출력

 

 

(7)  toUpperCase  : 대문자로 변경

String a = "Hello Java";
System.out.println(a.toUpperCase()); // HELLO JAVA 출력

 


(8)  toLowerCase  : 소문자로 변경

String a = "Hello Java";
System.out.println(a.toLowerCase()); // hello java 출력

 

 

(9)  split  : 특정한 구분자로 나누어 문자열 배열로 리턴

String a = "a:b:c:d";
String[] result = a.spilt(":"); // result 는 {"a", "b", "c", "d"}

 


 

 7. 문자열 포매팅 

 

문자열 안의 특정한 값을 바꿀 수 있게 해주는 기법

즉, 문자열 안에 어떤 값을 삽입하는 방법

 

문자열 포매팅은  String.format  을 사용한다. -> 문자열을  리턴 해준다.

 

 

(1)  숫자 대입 

System.out.println(String.format("I want to sleep for %d hours.", 10));
// I want to sleep for 10 hours.

 

(2)  문자열 대입 

System.out.println(String.format("I want to sleep for %s hours.", "10"));
// I want to sleep for 10 hours.

 

(3)  숫자값을 나타내는 변수 대입 

int number = 10;
System.out.println(String.format("I want to sleep for %d hours.", number));
// I want to sleep for 10 hours.

 

(4)  2개 이상 넣기 

: 파라미터를 순서대로 전달하면 됨

int number = 10;
String adverb = "always";
System.out.println(String.format("I %s want to sleep for %d hours.", adverb, number));
// I always want to sleep for 10 hours.

 

 

(5)  문자열 포맷 코드 

코드 설명
%s 문자열 (을 포함한 모든 형태의 값)
%c 문자 1개
%d 정수
%f 부동소수
%o 8진수
%x 16진수
%% Literal % (% 문자 자체)

 

 

(6)  응용 

 

a. 공백, 정렬 표현

System.out.println(String.format("%5s", "hi"));

// □□□hi

= 전체 길이가 5인 문자열 공간에서 오른쪽 정렬을 한 후 나머지는 공백으로 남겨라

 

System.out.println(String.format("%-5syeji", "hi"));

// hi□□□yeji

= 전체 길이가 5인 문자열 공간에서 왼쪽 정렬을 한 후 나머지는 공백으로 채워라. 그 다음에 "yeji"로 채워라

 

 

b. 소수점

System.out.println(String.format("%.4f", 3.123456789));

// 3.1234

= 소수점 뒤에 이어질 숫자의 개수

 

System.out.println(String.format("%10.4f", 3.123456789));

// □□□□3.1234

= 전체 길이가 10인 문자열 공간에서 오른쪽 정렬을 한 후 나머지는 공백으로 남겨라

 

 

(7)  System.out.printf 

 

 String.format  메서드는 포매팅된 문자열을 리턴한다. 따라서   System.out.println  도 같이 사용하여 해당 문자열을 출력해주었다.

 

하지만  System.out.printf  메서드를 사용하면  포매팅된 문자열을 출력 할 수 있다.

 

System.out.println(String.format("I want to sleep for %d hours.", 10));

System.out.printf("I want to sleep for %d hours.", 10);


// I want to sleep for 10 hours.

 

상황에 맞게 사용하면 된다.