본문 바로가기

자바

Day10-1

 

StringBuffer클래스 : 지정된 문자열을 변경할 수 있게 해주는 내부적으로 문자열 편집을 위한 buffer를 가지고 있고, 인스턴스를 생성할때 그 크기를 지정할 수 있다.
package com.test01;

public class Sample09 {

public static void main(String[] args) {
	StringBuffer sb = new StringBuffer("01"); //sb1 인슨턴스를 생성하고 "01"문자열 값을 넣어줌
	StringBuffer sb2 = sb.append(23); //sdb2 인스턴스를 생성하고 매개변수로 입력된 값을 문자열로 
        //변환하여 StringBuffer인스턴스가 저장하고 있는 문자열의 뒤에 덧붙인다.
	sb.append('4').append(56); // sb ="0123"뒤에 각 값을 문자열의 뒤에 덧붙인다.
		
	StringBuffer sb3 = sb.append(78);
	sb3.append(9.0);
		
	System.out.println("sb ="+sb); // 0123456789.0
	System.out.println("sb2 = "+sb2); // 0123456789.0
	System.out.println("sb3 = "+ sb3); //0123456789.0
		
	System.out.println("sb="+sb.deleteCharAt(10)); //0번부터시작 : 10번쨰 index값을 삭제한다. 01234567890
	System.out.println("sb ="+sb.delete(3, 6)); // 4번째자리부터 6번째 자리까지 삭제한다. 01267890
	System.out.println("sb ="+sb.insert(3, "abc")); // 4번째 자리부터 abc값을 붙인다. 012abc67890
	System.out.println("sb = "+sb.replace(6, sb.length(), "END")); // 7번째부터 sb의 길이값에 END를 붙여준다. 012abcEND
		
	System.out.println("capacity = "+sb.capacity()); // 용량 즉 들어갈 수 있는공간, 전체공간이 얼마인지를 뜻한다. : 18
    System.out.println("legnth="+sb.length()); // 들어있는 공간, 사용하고 있는 공간을 뜻한다 : 9
	}

}

 

래퍼(wrapper)클래스[박싱/언박싱] : 때론 기본형(primitive tpye) 변수도 어쩔 수 없이 객체로 다뤄야 하는 경우가 있다.
예를 들면, 매개변수로 객체를 요구 할때, 기본형 값이 아닌 객체로 저장해야할 때, 객체간의 비교가 필요할 때 등등
래퍼 클래스의 생성자는 매개변수로 문자열이나 각 자료형의 값들을 인자로 받는다. 이 때 주의해야할 것은 생성자의 매개변수로 문자열을 제공할 때 , 각 자료형에 알맞은 문자열을 사용해야한다는 것이다. 만약 다른 자료형의 문자열을 사용하게 된다면 NumberFormatException 오류가 발생한다.
Number 클래스 : 추상 클래스로 내부적으로 숫자를 멤버변수로 갖는 래퍼 클래스들의 조상이다.
기본형 중에서 숫자와 관련된 래퍼 클래스들은 모두 Number클래스의 자손이다.
오토박싱 & 언박싱(autoboxing & unboxing) : 기본형과 참조형 간의 덧셈이 가능하다. 컴파일러가 자동으로 변환하는 코드를 넣어주기 때문이다. 기본형 값을 래퍼 클래스의 객체로 자동 변환해주는 것을 '오토박싱(autoboxing)', 반대로 변환하는 것을 '언박싱(unboxing)'이라고 한다.
정규식(Regular Expression) - java.util.regex 패키지 : 정규식이란 텍스트 데이터 중에서 원하는 조건(패턴,pattern)과 일치하는 문자열을 찾아내기 위해 사용하는 것으로 미리 정의된 기호와 문자를 이용해서 작성한 문자열을 말한다.
1. 정규식을 매개변수로 Pattern클래스의 static 메서드인 Pattern compile(String regex)을 호출하여 Pattern인스턴스를 얻는다.
2. 정규식으로 비교할 대상을 매개변수로 Pattern클래스의 Matcher matcher(CharSequence input)를 호출해서 Matcher인스턴스를 얻는다.
3.Matcher인스턴스에 boolean matches()를 호출해서 정규식에 부합하는지 확인한다. if(m.matches())

참고:자주 쓰이는 정렬식 모음

package com.test01;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class Sample13 {

	public static void main(String[] args) {
		String[] data = {"bat","baby","bouns","cA","ca","co","c.","c0","car","combat","count",
						"date","disc","000ca","11","1a","2a","31","aAAAa","aA"};
		Pattern p = Pattern.compile("[a-z0-9][A-Z].*"); //첫번째 자리는 소문자,숫자만
        //Pattern인스턴스를 얻음						//두번째 자리는 대문자만
                                                        // .* 그뒤에 오는 모든 문자열을 말한다.
		
		for(int i = 0; i <data.length; i++) {
        //Pattern 클래스의 Matcher를 호출하여 Macther인스턴스를 얻음.
			Matcher m = p.matcher(data[i]); 
            //정규식에 부합하는지 확인하고 해당하는 값들을 출력한다.
			if(m.matches()) {
				System.out.println(data[i] +", "); //cA, aAAAa, aA, 출력 

			}
		}
	}

}
정규식의 일부를 괄호로 나누어 묶어서 그룹화 시킨 예제
package com.test02;

import java.util.regex.*;

public class Sample17 {

	public static void main(String[] args) {
		String source = "HP:011-1111-1111, HOME:02-999-9999"; //
        // 그룹1은 0으로 시작하는 최소2자리 최대 3자리 숫자(0포함됨)
        //그룹 2는 최소3자리 숫자 최대 4자리 숫자
        // 그룹 3은 4자리의 숫자
		String pattern = "(0\\d{1,2})-(\\d{3,4})-(\\d{4})"; //정규식을 그룹화 시키기 위해 '-'로 구분 
		
		Pattern p =Pattern.compile(pattern); //Pattern 인스턴스를 생성
		Matcher m = p.matcher(source); // 패턴 클래스의 Matcher를 호출하고 매개변수로 source값을 넣어줌
		
		int i = 0;
        //find()는 주어진 소스 내에서 패턴과 일치하는 부분을 찾아내면 true 아니면 false반환
        //find()를 호출해서 패턴과 일치하는 부분을 찾아낸 다음, 다시 find()를 호출하면
        // 이전에 발견한 패턴과 일치하는 부분의 다음부터 다시 패턴매칭을 시작.
		while(m.find()) {
			System.out.println(++i + ":"+ m.group()+"->"+ m.group(1) +","+ m.group(2)+","+m.group(3));
		}
	}

}

 

Scanner클래스 : 화면,파일,문자열과 같은 입력소스부터 문자데이터를 읽어오는데 도움을 줄 목적으로 JDK1.5부터 추가되었다. 
문자열 next() 와 netxLine :
next() 는 문자 혹은 문자열을 공백 기준으로 한 단어 또는 한 문자씩 입력을 받는다. 그렇기 때문에띄어쓰기를 한 이후에 입력을 한 문자열은 인식하지 않는다. 
nextLine()의 경우에는 문자 혹은 엔터를 치기 전까지의 문장 전체를 입력받는다. 
trim() : 문자열을 입력받거나 문자열을 합칠경우 공백이 생기게 되는데 이 때 왼쪽과 오른쪽의 공백을 없애주는 함수이다.
hasNext() : 스캐너 객체로 데이터가 들어왔는지 여부를 반환하는 함수이다.

 

'자바' 카테고리의 다른 글

Day12  (0) 2021.05.20
Day11  (0) 2021.05.18
2주차 은행 계좌 예제 수정  (0) 2021.05.16
Day09  (0) 2021.05.14
Day08  (0) 2021.05.13