728x90

-String -> char[]

1
char[] charArray=string변수.toCharArray();
cs

 

-char[] -> String

1
2
3
char[] cs= {'가','나','다'};
String string=new String(cs);
System.out.println("string :"+string); //결과 : string :가나다
cs

혹은

1
2
3
char[] cs= {'가','나','다'};
String string=Arrays.toString(cs);
System.out.println("string :"+string); //결과 : string :[가, 나, 다]
cs

이런식으로 두가지 방법이 있는데  ,  Arrays.toString()메소드는 모든타입에 오버로딩되어있어 사용하기 편하지만,

[ ] 와 공백이 추가로 붙는다.

728x90

-상식-

 \n(Line feed 일명 LF) 다음줄의 처음으로 줄바꿈 함 (os별로 처음으로 가지 않는 경우도 있긴함) 
 \r(Carriage return 일명 CR) 커서를 그 줄의 맨 앞으로 이동시킴 

 

-CASE 1 입력값이 방대할 경우-

 

입력값이 방대할 경우엔 Scanner 객체는 느리다.

따라서 비교적 빠르며 BufferedReader 객체를 사용한다.

키보드같은 외부입력장치와의 통신은 연결시마다 높은 비용이 발생한다.

BufferedReader  는 키보드 같은 입력장치와의 통신을 보통 한번만 거치기 때문에 , 

입력이 있을때 마다 입력장치와의 통신을 거치는 Scanner 보다 훨씬 빠르다.

 

-객체 생성

BufferedReader reader=new BufferedReader(new InputStreamReader(System.in)); 
-메소드

reader.read();

//스트림에서 한글자씩 문자로 읽는다. 반환값은 양의 정수(아스키값)이다.

//stream의 끝에 도달하였다면 -1을 반환한다.

 

reader.readLine();

//스트림 으로부터 텍스트 한 줄씩 읽습니다.

//한 줄은 줄 바꿈 ( '\n'), 캐리지 리턴 ( '\r') 또는 ("\r\n") 이 3개 중 하나라도 나오면 끝나는 것으로 간주됨.

//리턴 값은 읽은 한줄.
줄 종료문자(윗 3가지) 를 포함하지 않고 스트림이 꽉 찬 경우 null을 반환함

 

하단의 글은 예시이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
 
public class TestMethod {
    public static void main(String[] args) {
        BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));
        String string="";
        try {
            while(!"q".equalsIgnoreCase(string)) {
                    string=reader.readLine();
                    System.out.println(string+" 헷 ");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
cs

하단은 콘솔입력과 출력의 결과이다.

 

-CASE 2 문자열을 토큰으로 구별해야할 경우-

 

String[] line = bf.readLine().split(" "); 처럼 split을 이용하여 쪼갤수도 있으나,

StringTokenizer 객체를 이용하면 더 간단한 관리가 되는 듯 하다.

 

-객체생성

StringTokenizer st = new StringTokenizer(문자열, " "); // 둘째 인자는 구분자

 

-메소드이용

1
2
3
4
5
while(st.hasMoreTokens()){
    ~
    System.out.println(st.nextToken());
    ~
}
cs

 

st.hasMoreTokens()  //이 메서드가 true를 반환하면  nextToken() 후속 호출이 성공적으로 토큰을 반환합니다. 

공식처럼 st.hasMoreTokens()와 nextToken() 가  함께 이용된다.

nextToken() 의 반환형은 String.

 

하단은 샘플이다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
 
public class TestMethod {
    public static void main(String[] args) throws IOException {
        BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
        String line = bf.readLine();
        System.out.println("line : "+line);//안 녕 하세요!
        StringTokenizer st = new StringTokenizer(line, " ");
        System.out.println("st : "+st);//st 주소 출력
        while(st.hasMoreTokens()) 
            System.out.println(st.nextToken());
        System.out.println("끝");
    }
}
cs

콘솔 입력 출력 결과 이미지

 

-CASE 3 문자열의 끝 부분에 삽입,삭제가 일어날 경우-

 

StringBuilder , StringBuffer

 

-CASE 4 출력값이 많을 경우-

BuildWriter 적용

 

 

참고 : JAVA 8 공식문서

스트림, 버퍼 의 개념 : https://real-dongsoo7.tistory.com/70 

BufferedReader : https://ict-nroo.tistory.com/61 

'21년이전 > JAVA' 카테고리의 다른 글

JAVA 알고리즘 - String <-> char[]  (0) 2021.06.17
JAVA - 랜덤숫자+영문대문자 생성하기  (0) 2021.06.06
728x90

- 기본개념

Random rnd= new Random();

rnd.nextBoolean();   // return true or false 

rnd.nextInt(숫자X); //0~X-1중 하나 리턴 

1
2
3
4
5
6
7
8
9
10
11
12
//인증키 생성
public String getKey(int key_len) {
    Random rnd=new Random();
    StringBuffer buf=new StringBuffer();
    for(int i=1;i<=key_len;i++) {
        if(rnd.nextBoolean())
            buf.append((char)(rnd.nextInt(26)+65));   // 0~25(26개) + 65 
        else
            buf.append(rnd.nextInt(10));
    }
    return buf.toString();
}
cs

 

4 : 문자열에 계속해서 무언가를 추가할것이기에, 삽입 삭제에 유리한 StringBuffer를 이용한다.

7 : 대문자 알파벳이 나온다. 

알파벳은 총 26글자이며 , A의 ASCII는 65이다.

숫자로 아스키값을 먼저 계산후 char 로 형변환하여 문자화 시켜주었다.

'21년이전 > JAVA' 카테고리의 다른 글

JAVA 알고리즘 - String <-> char[]  (0) 2021.06.17
JAVA - 알고리즘을 위한 클래스,메소드  (0) 2021.06.15

+ Recent posts