자바의 자료형과 String 에 대해 알아보자.
자바는 기본 자료형으로 만든 변수는 일반 변수로 취급하고 클래스로 만든 변수(객체)는 참조형 변수로 취급한다.
< 자바의 기본 자료형 >
boolean : 1바이트, c++ 의 bool 과 같은 기능을 한다. 0과 1을 기억하는 것은 아니고, true, false 를 기억한다.
byte : 1바이트, 데이터 전송에 사용한다.
char : 1문자 당 2바이트, 자바는 모든 문자를 2바이트로 처리한다.
short : 2바이트, -32768 ~ 32767 사이의 정수를 기억한다.
int : 4바이트, -2147483648 ~ 2147483647 사이의 정수를 기억한다.
long : 8바이트, -2의 63승 ~ 2의 63승 - 1 사이의 정수를 기억한다.
float : 4바이트, 단정도 실수, 소수점 아래로 6자리 정도를 표현한다.
double : 8바이트, 배정도 실수, 소수점 아래로 16자리 정도를 표현한다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
// 문자열 "AAA"가 처음 사용되므로 메모리 어딘가에 "AAA"를 만들고 시작 주소를 str1에 저장한다.
String str1 = "AAA";
// "AAA"가 이미 메모리에 생성되어있는 상태이므로 메모리에 이미 생성되어있던 "AAA"의 주소를 str2에 저장한다.
String str2 = "AAA";
if (str1 == str2) {
System.out.println("같다");
} else {
System.out.println("다르다");
}
// 아래와 같이 new 를 사용해서 "AAA"를 만들면 메모리에 "AAA"의 존재 여부와 관계없이 무조건 다시 만들어서 그 시작 주소를 str3 에 할당한다.
String str3 = new String("AAA");
if (str1 == str3) {
System.out.println("같다");
} else {
System.out.println("다르다");
}
// "=="를 사용해서 같은가 비교할 수 있는 데이터는 기본 자료형 8가지와 null 만 가능하다. => 객체는 "==" 로 비교하면 안된다.
// 기본 자료형과 null 을 제외한 나머지는 클래스는 생성한 객체이므로 참조 변수에 저장된 객체가 생성된 주소를 비교하게 된다.
// => 해시 코드를 비교한다.
// 결론 : 기본 자료형과 null 을 제외한 클래스로 생성한 모든 객체는 "=="로 비교하면 안되고 equals() 메소드로 비교해야 한다.
if (str1.equals(str3)) {
System.out.println("같다");
} else {
System.out.println("다르다");
}
}
}
|
cs |
< String의 여러가지 사용법 >
먼저 Scanner 를 사용하여 문자열을 입력받는 기초 작업을 해주자.
1
2
3
4
5
6
7
8
9
10
|
import java.util.Scanner;
public class StringMethod {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("문자열 입력 : ");
String str = scanner.nextLine();
|
cs |
1) length() : 문자열의 문자 개수를 센다.
System.out.println("글자수 : " + str.length());
2) trim() : 문자열 앞, 뒤의 불필요한 빈 칸을 제거한다.
스캐너로 입력받을 때 아래와 같이 trim() 메소드를 붙여주면 데이터를 입력받자마자 불필요한 빈 칸을 제거한 후 변수에 저장한다.
System.out.println("불필요한 빈 칸을 제거한 글자수 : " + str.trim().length());// 공백 제외한 글자 개수
String str = scanner.nextLine().trim();
3) toUpperCase() : 영문자를 무조건 대문자로 변환하고 toLowerCase() 메소드는 영문자를 무조건 소문자로 변환한다.
System.out.println("무조건 대문자로 : " + str.toUpperCase());
System.out.println("무조건 소문자로 : " + str.toLowerCase());
4) charAt() : 문자열에서 지정된 위치의 문자를 얻어온다 => index 는 0부터 시작된다.
System.out.println("6번째 문자 : " + str.charAt(5));
// +) 키보드로 문자 1개만 입력받기
System.out.print("문자열 입력 : ");
char ch = scanner.nextLine().charAt(0);
System.out.println("입력된 문자 : " + ch );
5) substring(a) : 문자열의 a번째 문자부터 끝까지 얻어온다.
substring(a, b) : 문자열의 a번째 문자부터 b-1번째 문자까지 얻어온다.
System.out.println(str.substring(3));
System.out.println(str.substring(3, 6));
6) indexOf() : 문자열의 왼쪽부터 검색해서 인수로 지정된 문자열이 최초로 나타나는 위치를 얻어온다.
lastIndexOf() : 문자열의 오른쪽부터 검색해서 인수로 지정된 문자열이 최초로 나타나는 위치를 얻어온다.
System.out.println(str.indexOf("ti"));
System.out.println(str.lastIndexOf("ti"));
7) contains() : 문자열에 인수로 지정된 문자열이 포함되어 있으면 true, 없으면 false 를 리턴한다.
System.out.println(str.contains("it"));
System.out.println(str.contains("It"));
8) matches() : 문자열이 인수로 지정된 문자열과 일치하면 true, 일치하지 않으면 false 를 얻어온다.
System.out.println(str.matches("hellojava"));
System.out.println(str.matches("java"));
'Java' 카테고리의 다른 글
자바/JAVA/Thread/스레드 (0) | 2020.01.29 |
---|---|
JAVA/자바/SimpleDateFormat/substring/charAt (0) | 2020.01.20 |
JAVA/자바/Calendar 클래스/ (0) | 2020.01.20 |
JAVA/자바/날짜&시간 출력/SimpleDateFormat (0) | 2020.01.20 |
JAVA/자바의 출력 (0) | 2020.01.17 |