728x90
반응형
728x90
반응형
StringBuilder StringBuffer 클래스와 기능이 완전히 동일하지만 한가지 차이점이 있다. StringBuffer는 동기화가 되어있지만 StringBuilder는 동기화가 되어있지 않다 말인 즉슨, StringBuffer는 멀티쓰레드의 사용 시 안전하다는 의미이다 (thread-safe). 쓰레드는 single thread와 multi thread가 있는데 single thread는 한가지 작업만 할 수 있고 multi는 여러개의 작업을 허용한다. 예시로 카카오톡으로 파일을 보낼 경우에는 single thread는 채팅을 할 수 없지만 multi는 이 작업을 동시에 가능하게 만든다. multi thread의 단점은 서로 메모리를 공유하기 때문에 서로의 작업을 간섭할 수 있는데 StringB..
StringBuffer 클래스 일반적인 String클래스는 불변, 즉 변경이 불가능하고 메모리를 각각의 값에 할당해줬다면 StringBuffer 클래스는 가변, 즉 변경이 가능하다. 메모리를 할당해주면 아래의 칸에다가 계속 추가하는 방식. sb라는 이름으로 StringBuffer의 자료형을 선언한 후 sb.append("abc")를 추가해주면 char값으로 변환 후에 재 입력받는 방식이다. 따라서 아래의 코드처럼 입력해주면 출력값은 abcHello가 된다. StringBuffer sb = new StringBuffer("abc"); sb.append("Hello"); System.out.println(sb); 여러 문자열을 삽입하고 싶은 경우는 append를 중복하여 실행하면 코드가 간결해진다. 출력값:..
String 메서드 2 1.join, split 위의 String 메서드의 설명은 코드블럭 안의 주석으로 적혀있는 것과 동일하다. String 반환 변수는 split을 할 수 있는데 저장 변수는 배열이여야 한다 String클래스의 join은 배열로 되어있어야 join으로 구분자를 넣어줄 수 있다 join 클래스를 선언할 때는 String 본연의 자료형으로 선언할 것 출력문: [BTC, ETH, DOGE] BTC-ETH-DOGE String str = "BTC,ETH,DOGE"; String[] str2 = str.split(","); //String 반환 변수는 split을 할 수 있는데 저장 변수는 배열이여야 한다 System.out.println(Arrays.toString(str2)); str = ..
String 메서드 1. String to Character Character를 String 값으로 변경할 때 String클래스를 선언하여 변경이 가능하다. char[] ch = {'a','b','c','d'}; String st = new String(ch); System.out.println(st); 2. Character to String 반대의 경우에는 charArray System.out.println(st.toCharArray()); 3. toCompare 사전의 순서로 String의 값을 비교해주는 메서드 abc의 순서이므로 동일한 순서일경우 0, 사전보다 뒤에 있으면 -1(음수), 앞에 위치하면 1(양수)를 출력해줌 char을 int로 형변환하여 연산한 값이 출력됨 이 메서드 같은 경우에는..
String 클래스 String클래스는 각각의 메모리를 할당하여 immortable, 즉 내용을 변경할 수 없는 불변 결과값을 출력해준다. 따라서 String연산은 서로 다른 메모리의 값을 합쳐서 새로운 메모리에 할당해주기 때문에 연산의 효율이 떨어진다. 문자의 결합이나 연산이 잦다면 StringBuffer나 StringBuilder를 활용해야 효율이 좋다. String으로 데이터를 할당하면 서로의 메모리를 공유하여 비교연산자를 써도 true가 나오지만 아래처럼 new로 새로 할당해준 경우는 false가 도출된다. 따라서 값을 비교하는 경우는 반드시 equals를 사용할 것 String str = "123"; String str1 = "123"; System.out.println(str == str1);..
Object 클래스 모든 클래스의 최고 조상 - 오직 11개의 메서드만 가지고 있음 1. equals() 객체 자신(this)과 주어진 객체의 주소를 비교, 따라서 아래의 코드는 false가 출력된다 public static void main(String[] args) { test t = new test(0); test t2 = new test(0); System.out.println(t.equals(t2)); //this t 를 object t2랑 비교하는 것이기 때문에 객체의 주소가 다르므로 false } } class test{ int i; public test(int i) { this.i = i; } } 위의 값을 true로 바꾸기 위하여 overriding을 해줘야하는데 아래와 같이 실행할 수 ..
숫자게임 반복 숫자가 나오지 않을 경우 try - catch로 게임을 재시작하도록 만드는 프로그램 아래의 코드처럼 do-while을 사용하였고 Scanner 함수를 사용하여 일반적인 숫자입력게임을 만들었다. 차이점(애먹었던 점) Scanner 클래스를 try문안에 써주어야 정상작동된다. 새로운 Scanner의 메모리가 할당되고 생성자를 통해 전에 넣어주었던 값을 초기화를 시켜야 무한반복을 막아준다. catch구문에는 오류가 날 경우 출력하고 싶은 문구를 적고 continue를 써주면 반복문이 다시 반복된다. public static void main(String[] args) { Random r = new Random(); int ran = r.nextInt(100)+1; System.out.printl..
사용자 정의 예외처리 요즘 유행하는 비트코인을 가져와서 간단한 사용자 정의 예외처리 예시를 만들었다. 입금된 비트코인 잔고보다 인출되는 비트코인 잔고가 더 많으면 throws로 지정된 오류 클래스로 보내기로 했고 오류 클래스에서 지정된 연산 수행 후에 toString 클래스로 오류전용 지정 문구를 출력하도록 만들었다. class CoinAccount extends BalanceInsufficientException{ private double BTCaccount; private double ETHaccount; public CoinAccount(double bTCaccount, double eTHaccount) { super(); BTCaccount = bTCaccount; ETHaccount = eTH..