본문으로 바로가기
반응형

 

* 필요한 정보는 ctrl + f를 통해 검색하세요.

 ex )  ctrl + f ->  '문자열 분리'

 

 

 

지난 포스팅에서 다형성에 대해 다뤄봤습니다.

 

 

 

 

 

이번 포스팅에서는 자바의 기본 API대해서 다뤄보고자 합니다.

 

 

 

 


 

 

 

 

자바의 기본 API에는 많은 클래스들이 있는데요.

 

그중에서 가장 활용도가 높은 String 클래스에 대해서 먼저 다뤄 보겠습니다.

 

 

 

 

 

 

 


String 관련 클래스


 

 

 

 

String 관련 클래스는 크게 4가지로 나뉘어 있습니다.

 

 

 

 

 

● String 클래스

 

 

자주 사용했던 String 클래스입니다.

 

특징으로는 문자열 값 수정 불가능, immutable(불변)이 있죠.


String 클래스의 단점 아닌 단점을 말하자면,

문자열 수정 시 수정된 문자열이 새로 할당되어 새 주소를 넘깁니다.

 

덮어쓰기가 아닌 복사/붙여 넣기 이죠.

 

 

 

 

 

 

 

● StringBuffer 클래스

 

 

String클래스의 단점(?)을 해결하고자 사용되는 StringBuffer 클래스입니다.

 

특징으로는 문자열 값 수정 가능, mutable(가변)이 있습니다.

 


수정, 삭제 등이 기존 문자열에 수정되어 적용되어서

새로운 문자열을 생성하지 않죠.

 

 

기본 16 문자 크기로 지정된 버퍼를 이용하며 크기 증가 가능하고,

 

 

쓰레드 safe기능을 제공합니다.

(하지만 이는 성능 저하 요인이 됨)

 

 

 

 

 

 

 

● StringBuilder 클래스

 

 

StringBuilderStringBuffer 클래스의 단점을 보완하고자 사용되는데요

 

StringBuffer와 동일하나 쓰레드 safe기능을 제공하지 않습니다.

 

성능이 저하되지 않죠.

 

 

 

 

 

 

 

 

● StringTokenizer 클래스

 

 

 

StringTokenizer 클래스는


String클래스에서 제공하는 split()메소드와 같은 기능을 하는 클래스로
생성 시 전달받은 문자열을 구분자로 나누어 각 토큰에 저장합니다.

 

 

 

 

 

 

아래에 예시가 있습니다.

 

 

 

 

이런 식으로 

토큰을 "|"으로 나눈다면

 

str 문자열은 AA, BB, CC 로 나뉘겠죠.

 

 

 

 

 

 

 

 

 

 

 


Wrapper 클래스

 


 

 

 

 

 

다음으로는 생소한 Wrapper 클래스인데요.

 

크게 어려울 것 없습니다.

 

 

 

 

 

Wrapper 클래스란,

 

Primitive Data Type(자료형)을 객체화해주는 클래스인데요.

 

 

 

 

 

 

 

쉽게 생각하면 

 

문자열을 자료형(정수,실수 등등)으로 

자료형(정수,실수 등등)을 문자열로 변환하기 위해 사용되는 클래스입니다.

 

 

 

 

 

 

 

 

 

 

 

원래 자료형에서 앞글자를 대문자로 바꿔주는 차이뿐 입니다.

 

 

 

 

 

 

 

 

 

 

 

위와 같이 자료형을 문자열로 변환이 가능합니다.

 

 

 

char형은 예외적으로 문자열.charAt(0)을 해주면,

 

해당 문자열의 맨 앞글자를 따옵니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

기본 자료형을 String으로 바꾸는 방법입니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 


날짜 관련 클래스

 


 

 

 

 

날짜 관련 클래스도 다양하게 생성되어 있습니다.

 

 

 

한 번 알아보죠.

 

 

 

 

 

 

 

 

 

● Date 클래스

 

 

 

 

시스템으로부터 현재 날짜, 시간 정보를 가져와서 다룰 수 있게
만들어진 클래스입니다.


생성자 2개만 사용 가능하고 나머지는 모두 deprecated(사용 불가)


Calendar 클래스 혹은 GregorianCalendar 클래스 사용 권장합니다.

 

 

 

 

 

 

 

아래는 예시입니다.

 

 

 

 

 

 

 

 

 

 

● Calendar 클래스

 

 

 

Calendar클래스는 생성자가 protected이기 때문에 

new연산자를 통해 객체 생성이 불가능합니다.

 


getInstance() 메소드를 통해서 객체 생성이 가능합니다.

 

 

 

 

 

 

 

 

 

 

● GregorianCalendar 클래스

 

 

 

GregorianCalendar클래스는 

 

Calendar클래스의 후손 클래스인데요.


년, 월, 일, 시, 분, 초 정보를 필드를 이용하여 다룰 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


Format 관련 클래스

 


 

 

 

 

다음으로 알아볼 건 Format 관련 클래스인데요.

 

 

Format 클래스도 종종 쓰이곤 합니다.

 

 

 

 

 

 

 

 

 

 

● SimpleDateFormat 클래스

 

 

 

Date의 날짜, 시간 정보를 원하는 format으로 출력하는 기능 제공하는

SimpleDateFormat 클래스입니다.

 


java.text 패키지에 속해있습니다.

 

 

 

 

 

 

 

아래는 예시입니다.

 

 

 

 

 

 

 

 

 

 

 

● Formatter 클래스

 

 

이미 비슷한 용도를 사용해본 Formatter 클래스인데요.

 

값 출력 시 format 적용하여 출력됩니다.

 


Formatter 객체 생성 시 변환된 결과를 보낼 곳의 정보를 생성자 인자로 전달합니다.

 

 

 

 

 

 

아래는 예시입니다.

 

 

 

 

 

 


 

 

 

 

 

Format 변환 문자인데요.

 

이미 System.out.printf 를 사용했었더라면 익숙하실 겁니다.

 

 

 

 

 

 

 

 

 

이것도 사전에 학습했던 escape 문자인데요.

 

참고하시길 바랍니다.

 

 

 

 

 

 

 

 

 


 

 

 

 

 

 

 

 

이제 기본 API의 예제를 풀어봅시다.

 

 

 

 

※ String 활용법을 익히지 못하신 분들은 아래 링크를 확인 후 문제를 풀어주세요!

https://healthdevelop.tistory.com/entry/java-string

 

[Java] 자바 String | StringBuilder | StringTokenizer(문자열 분리, 문자열을 정수로, 정수를 문자열로, 문자

찾고자 하는 내용을 'ctrl + f' 를 눌러 찾으시길 바랍니다. ex) ctrl + f -> "문자열을 정수로" 입력 후 엔터 ● String 클래스 ▶ .equals : 문자열 같은지 확인 String str = "동일 문자열 확인"; boolean res..

healthdevelop.tistory.com

 

 

 

 

 

 


String 클래스  예제


 

 

 

 

 

난이도 ★

 

 

 

예제 1

 

 

Q : 사용자 입력 한 번에 여러 데이터를 입력 받으시오(정수를 띄어쓰기로 구분)

 

     ex)   123  456  123  232 입력 시 ->  [123,456,123,232] 출력

 

 

 

 

 

  

   


 

 

 

 

풀이 :

 

 

 

 

package com.kh.exam16;

import java.util.Arrays;
import java.util.Scanner;

public class Sample3 {
	public static Scanner sc = new Scanner(System.in);

	public static void ex1() {
		// 사용자 입력 한 번에 여러 데이터를 입력 받기.
		System.out.print("정수를 입력하세요(띄어쓰기로 나눔) : ");
		String input = sc.nextLine();
		String inputs[] = input.split(" ");
		int[] intArr = new int[inputs.length];
		for(int i=0; i<inputs.length; i++) {
			intArr[i] = Integer.parseInt(inputs[i]);
		}
		
		System.out.println(Arrays.toString(intArr));
		
	}
	
	
	public static void main(String[] args) {
		ex1();
	}

}



 

 

 


 

 

 

 

 

 

 

난이도 ★☆

 

 

 

예제 2

 

 

Q : 영문자는 소문자로만 입력받기.

 

     ex)   ABCDe 입력 시 ->  abcde 출력

 

 

 

 

 

  

   


 

 

 

 

풀이 :

 

 

 

 

package com.kh.exam16;

import java.util.Arrays;
import java.util.Scanner;

public class Sample3 {
	public static Scanner sc = new Scanner(System.in);

	public static void ex1() {
		System.out.print("소문자로만 입력하세요. : ");
		String input = sc.nextLine();
		input = input.toLowerCase();
		System.out.println(input);
		
	}
	
	
	public static void main(String[] args) {
		ex1();
	}

}



 

 

 


 

 

 

 

 

 

 

 

 

 

난이도 ★★☆

 

 

 

예제 3

 

 

Q : 금지어가 입력되는 것을 막기

 

     ex)   "유튜브는 카카오가 점령" 입력 시 ->  "금지어가 발견되었습니다." 출력

            "유튜쁘는 카가오가 점령" 입력 시 ->  "유튜쁘는 카가오가 점령" 출력

 

 

 

 

 

  

   


 

 

 

 

풀이 :

 

 

 

 

package com.kh.exam16;

import java.util.Arrays;
import java.util.Scanner;

public class Sample3 {
	public static Scanner sc = new Scanner(System.in);

	public static void ex1() {
		System.out.println("유튜브, 네이버, 카카오 는 금지어 입니다.");
		System.out.print("입력 : ");
		String input = sc.nextLine();
		if(input.indexOf("유튜브") >= 0 || input.indexOf("네이버") >= 0 ||
				input.indexOf("카카오") >= 0) {
					System.out.println("금지어가 발견되었습니다. 다시 입력하세요.");
				}
		
	}
	
	
	public static void main(String[] args) {
		ex1();
	}

}



 

 

 


 

 

 

 

 

 

 

 

 

난이도 ★

 

 

 

예제 4

 

 

Q : 금지어가 입력되는 것을 막기

 

     ex)   "유튜브는 카카오가 점령" 입력 시 ->  "*****는 *****가 점령" 출력

            "유튜쁘는 카가오가 점령" 입력 시 ->  "유튜쁘는 카가오가 점령" 출력

 

 

 

 

 

  

   


 

 

 

 

풀이 :

 

 

 

 

package com.kh.exam16;

import java.util.Arrays;
import java.util.Scanner;

public class Sample3 {
	public static Scanner sc = new Scanner(System.in);

	public static void ex1() {
		System.out.println("유튜브, 네이버, 카카오 는 금지어 입니다.");
		System.out.print("입력 : ");
		String input = sc.nextLine();
		input = input.replace("유튜브", "*****")
					.replace("네이버", "*****")
					.replace("카카오", "*****");
		
		System.out.println(input);
		
	}
	
	
	public static void main(String[] args) {
		ex1();
	}

}



 

 

 


 

 

 

 

 

 

 

 

난이도 ★

 

 

 

예제 3

 

 

Q : 금지어가 입력되는 것을 막기(String 배열에 금지어를 담고, 해당 금지어가 포함될 시)

 

     ex)   "유튜브는 카카오가 점령" 입력 시 ->  "*****는 *****가 점령" 출력

            "유튜쁘는 카가오가 점령" 입력 시 ->  "유튜쁘는 카가오가 점령" 출력

 

 

 

 

 

  

   


 

 

 

 

풀이 :

 

 

 

 

package com.kh.exam16;

import java.util.Arrays;
import java.util.Scanner;

public class Sample3 {
	public static Scanner sc = new Scanner(System.in);

	public static void ex1() {
		String[] words = new String[] {"유튜브", "네이버", "카카오"};
		System.out.println("유튜브, 네이버, 카카오 는 금지어 입니다.");
		System.out.print("입력 : ");
		String input = sc.nextLine();
		
		for(int i=0; i<words.length; i++) {
			input = input.replace(words[i], "*****");
		}
		
		// Another solution
//		for(String s: words) {
//			input = input.replace(s, "*****");			
//		}
		
	}
	
	
	public static void main(String[] args) {
		ex1();
	}

}



 

 

 


 

 

 

 

 

 

 

 

 

 

이상  java 기본 API 실습 문제를 마치겠습니다.

 

 

 

 

 

 

다음 포스팅에선 예외처리에 대해 다뤄보고자 합니다.

https://healthdevelop.tistory.com/entry/java18

 

[Java] 자바 Arraylist | java Collection(컬렉션) | 배열 요소 추가,삭제,찾기 (java로 웹개발하기)(day18)

지난 포스팅에서 자바의 기본 API에 대해 다뤄봤습니다. 이번 포스팅에서는 자바의 Collection에 대해서 다뤄보고자 합니다. 먼저 컬렉션이란,, 메모리상에서 자료를 구조적으로 처리하는 방법을

healthdevelop.tistory.com

 

반응형