21st May 2021 TIL

알파·2021년 5월 21일
0

TIL

목록 보기
8/18

Tips

남이 알아주든 말든 본질은 변치 않는다
화이부동 극기복례

StringTokenizer

StringTokenizer 클래스는 String과 delimniter를 파라미터로 String을 분리해주는 클래스이다. 그런데 문자열을 분리한 뒤 위치를 유지한다.(그래서 while문 사용해야함)
말그대로 토큰처럼 다음 문자를 하나씩 꺼내준다.

String

초기화

String str = null;
String str = "";

split(String regex)

String클래스의 문자열 분리 메소드이며 regex를 파라미터로 잘라서 String배열로 반환한다.

charAt(int index)

해당 인덱스의 문자를 가져오는 메소드

StringBuffer

StringBuffer는 변할 수 있는 String이다. 메소드 호출로 문자열의 길이와 순서를 바꿀 수 있다. 다중쓰레드 사용 시에 더 안전하다고 함.(무슨 의민지?) 메소드가 필요할 때 동기화되어 연관된 쓰레드들에서 호출된 순서를 지켜서 동작하게 해준다고 함.(어렴풋이 이해)

아래는 자주 사용되는 메소드

append(String str)

문자열 추가해주는 메소드이며, 파라미터로 char, char[], double, float, int 등등 올 수 있음

insert(int offset, String str)

offset - 출발이라는 뜻
이 문자 순서에 두 번째 파라미터를 삽입해주는 메소드 (파라미터 역시 매우 다양)

toString()

StringBuffer에서 toString()은 추가하거나 삽입한 문자열을 String으로 형변환시켜주는 메소드이다.

char

!! 작은 따옴표를 이용하여 표시
지금까지 여러 문자, 즉 문자열을 저장할 때 String타입의 변수를 사용했다. 사실 문자열이라는 용어는 '문자를 연이어 늘어놓은 것'을 의미하므로 문자배열인 char배열과 같은 뜻이다.
String클래스는 char배열에 기능(메서드)을 추가한 것이다.
char배열과 String클래스의 한 가지 중요한 차이가 있는데, String객체(문자열)는 읽을수만 있을 뿐 내용을 변경할 수 없다는 것이다.
--> String의 연산은 String의 값이 바뀌는 것이 아닌 새로운 주소값을 가리치는 것이다.

public class Test {
    public static void main(String[] args) {
        char[] chArr = {'A', 'B', 'C'};
        String str = new String(chArr);   // char배열 -> String
        char[] tmp = str.toCharArray();   // String -> char배열 
    }
}

배열

배열(Array)이란 선형 자료구조(Data Structure)중 하나로, 동일한 타입의 연관된 데이터를 메모리에 연속적으로 저장하여 하나의 변수에 묶어서 관리하기 위한 자료 구조입니다. 배열의 길이는 최초 선언한 값으로 고정되며(나 오늘 뭐한거야?) 위와 같이 인덱스(Index)를 통해 데이터에 접근 할 수 있습니다.

선언, 초기화

int arr[]; //선언
int[] arr;
int arr[] = new int[5] //선언과 크기 할당 초기값 0으로 채워진 배열 생성
int arr[] = {1, 2, 3, 4, 5} //선언과 크기 할당과 값 초기화

출력

출력 방법은 두 가지가 있다.
1. for문 사용

int arr[] = {1, 2, 3, 4, 5}
for(i = 0; i <= 4; i++){
	System.out.print(arr[i]);
    }
for(int num: arr){
	System.out.print(num);
    }
  1. java.util.Arrays의 toString() 메소드 사용하기
    파라미터로 배열
import java.util.Arrays;

public class PrintArray {
  public static void main(String[] args) {
  int[] arr = { 1, 2, 3, 4, 5 };
  System.out.println(Arrays.toString(arr));
  }
}

casting

  • 기본형에서 boolean을 제외한 나머지 타입들은 서로 형변환이 가능하다.
  • 기본형과 참조형간의 형변환은 불가능하다.
  • 자동 형변환과 강제 형변환 두가지가 있다.

ASCII 코드

아스키 코드는 1963년 미국 ANSI에서 표준화한 정보교환용 7비트 부호체계이다. 000(0x00)부터 127(0x7F)까지 총 128개의 부호가 사용된다. 이는 영문 키보드로 입력할 수 있는 모든 기호들이 할당되어 있는 부호 체계이며, 매우 단순하고 간단하기 때문에 어느 시스템에서도 적용가능하다는 장점이 있으나, 2바이트 이상의 코드를 표현할 수 없기 때문에 국제표준의 위상은 유니코드에게 넘어갔다. text only 형태의 게시판에서는 아스키 아트라는 이름으로 자주 사용된다.

1바이트를 구성하는 8비트 중에서 7비트만 쓰도록 제정된 이유는, 나머지 1비트를 통신 에러 검출을 위해 사용하기 때문이었다. Parity Bit라고 해서, 7개의 비트 중 1의 개수가 홀수면 1, 짝수면 0으로 하는 식의 패리티 비트를 붙여서, 전송 도중 신호가 변질된 것을 수신측에서 검출해낼 확률을 높인 것. 원시적인 CRC 체크섬이라고 할 수 있지만 당연히 이런 체크에 검출되지 않는 신호 에러도 얼마든지 생길 수 있고 현재는 더 이상 쓰이지 않는다. 현재는 8비트 문자 인코딩에서는 그냥 맨 앞 비트에 0을 붙이고 이어서 7비트가 이어지는 식의 인코딩이 일반적이다.

코드표

65번부터 90번까지 대문자 A~Z이고, 97번부터 122번까지 소문자 a~z이다.

profile
I am what I repeatedly do

0개의 댓글