본문 바로가기

Java

JAVA/자료형/자바의기본자료형과 String

자바의 자료형과 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