Java practice_240112

Choi Suyeon·2024년 1월 12일
0

String(이어서)

  • substring & lastIndexOf 문자열 자르기 응용
파일명과 확장자 찾기(자르기)
> "."이 여러개 있는 경우 마지막"."을 찾아야 한다.

String fileName = "Test.text.bat";
"파일명 : " + fileName.substring(0, fileName.lastIndexOf("."));
"확장자 : " + fileName.substring(fileName.lastIndexOf(".")+1);
  • 비어있는 문자열 isEmpty()

    String str = ""; <= empty : 문자열 저장소의 주소는 존재하나 안의 값이 없다.
    String str1 = null;
    <= 참조형 데이터 형의 초기화 값. 객체가 heap의 주소를 참조하지 않았을 때

    str.isEmpty() 비교
    if(str.length() == 0){} 보다 if(str.isEmpty()){} 가 더 가독성이 좋다.


    null은 관계연산자로 비교
    str == null => str이 객체가 생성되지 않았음을 비교 // if(str == null){}
    str != null => str이 객체가 생성되었음을 비교 // if(str != null){}

  • 문자열의 앞뒤 공백 자르기 trim()

    String str = " 가 나다 ";
    String str1 = str.trim(); //"가 나다"
    중간 공백을 자를 수 없음. 앞뒤만 가능

  • 문자열 치환 replace(), replaceAll(), (+ method chain)

    String str = "Java Oracle";
    String str1 = str.replace("찾을 문자열", "치환할 문자열");
    String str1 = str.replaceAll("찾을 문자열", "치환할 문자열");
    // replace와 replaceAll의 결과는 같다. //
    String str1 = str.replaceAll("a", "AA"); // JAAvAA OrAAcle

    // method chain : method를 이어붙이는 거
    String msg = "야 ** ㅆㅣ방";
    String filter = msg.replaceAll("야", "*").replaceAll("방", "*").replaceAll("ㅆ", "*");

    method의 반환형이 참조형이라면, 반환값을 받아서 클래스가 제공하는 method를 연결하여 호출가능. 반환형의 데이터형에 주의(String이면 String으로 받는다.)

  • 기본형 데이터형을 문자열로 저장하기(문자열로 만들기) valueOf();

    int i = 12;
    temp = String.valueOf(i);
    System.out.println(temp);
    //12

    double d = 2024.01;
    temp = String.valueOf(d);
    System.out.println(temp);
    //2024.01


Regular Expression(정규식)

: 문자열안에서 특정 패턴이나 규칙을 가진 문자열을 검색할 때 사용.(패턴 매칭)

  • 장점 : 짧은 코드로 사용할 수 있다.
  • 단점 : 문자열 처리에 유용하지만, 많이 사용하면 가독성이 떨어질 수 있다.

java.util.regex.Matcher, Pattern class에서 사용할 수 있고,
String에서는 replaceAll()에서 사용할 수 있다.

패턴 매칭, 문자열 검증, 문자열 추출, 대체(수정, 치환)의 일을 할 수 있다.
패턴 매칭 : 문자열 안에 특정 패턴이나 규칙을 가진 문자열을 검색
문자열 검증 : 문자열 특정 규칙을 따르는지 검증

문법

  • 숫자 : \\d < (\\d{글자수}), $n >

    \d가 숫자 패턴이지만, 자바에서는 \가 특수문자의 시작 문자이므로 \\를 사용한다.

    문자열 안에 있는 모든 숫자를 "X"로 바꾸기
    String msg = "Hello 자바 010-1234-5678 나이는 20살이고 우리집 번지수는 19-1번지";
    String str = msg.replaceAll("\\d", "X");

    (\\d{글자수}) : 글자수씩 그룹을 만듬
    원하는 문자열 마스킹 하기(치환하기)

    String msg = "010-1234-5678 나이는 20살이고 이전 전화번호는 011-123-4567이다."
    String temp = msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "XXX-XXXX-XXXX");
    // XXX-XXXX-XXXX 나이는 20살이고 이전 전화번호는 011-123-4567이다.

    마스킹 된 문자열 중 일부만 보이게 하기 - $n : replaceAll()만 지원하는 기능

    msg.replaceAll("(\\d{3})-(\\d{4})-(\\d{4})", "$1-XXXX-$3")
    // 010-XXXX-5678 나이는 20살이고 이전 전화번호는 011-123-4567이다.

    msg = "전화번호는 010-1234-5678";
    temp = msg.replaceAll("(\\d{3}-)\\d{1}(\\d{3}-\\d{4})", "$1x$2");
    System.out.println(temp);//010-x234-5678
    // ()로 그룹을 만들어야 $n 사용가능.

  • [] <= 문자 class / + <= 하나이상

    정의되는 문자는 각각을 비교 : test => 문자열 안에 t, e, s, t하나를 각각 갖는다.(범위가 아님.) 범위 : 소문자 a-z, 대문자 A-Z, 숫자 0-9, 한글 ㄱ-힣, 특수문자(._%+-)는 범위를 설정할 수 없다.

    String msg = "hello 내 이메일은 test@sist.com입니다.";

    test :
    대문자,소문자, 숫자, 특문:._%+-
    [A-Za-z0-9._%+-]+
    @
    sist :
    대문자,소문자, 숫자, 특문:.-
    [A-Za-z0-9.-]+
    . <= \\.
    com :
    영어로만 구성된 2글자 이상
    [a-zA-Z]{2,}

    // 내 이메일은 xxxx@xxxx.xxx입니다.


Array(배열)

: 참조형 데이터 형

  • 일괄처리시 사용
    일차원 배열, 이차원 배열, 삼차원 배열, 가변 배열 총 4가지의 배열을 지원.
    방으로 구성되고, 모든 방의 데이터형은 같다.
    고정 길이형.(크기가 정해지면 변경되지 않는다.)

일차원 배열

  • 열(방)로만 구성되 배열
    열(방)의 개수를 얻을 때, 배열명.length 키워드 사용.

문법

선언 > 생성 > 값 할당 > 값 사용

  1. 선언
    데이터형[] 배열명 = null; // []는 배열기호. (() 메소드기호. {} 영역기호.)
    데이터형 배열명[] = null; // 같다.

int[] arr = null;

  1. 생성
    배열명 = new 데이터형[방의 수]; // 한번 설정된 방의 수는 변경불가.
    arr = new int[4];

  2. 값 할당 - 배열의 인덱스를 사용.
    배열명[인덱스] = 값;
    arr[0] = 2024;
    arr[3] = 1;

  3. 방의 수
    배열명.length => 4

  4. 방의 값 얻기
    배열명[인덱스]
    arr[0]; //2024

  • 일괄처리(배열의 모든 값을 얻기)
    for(int i = 0; i < 배열명.length; i++){
    배열명[i]
    }

  • 선언과 생성을 한번에 하기

    데이터형[] 배열명 = new 데이터형[방의 수];

일차원 배열의 초기화

  • 기본형 형식의 사용
    배열을 선언하면서 값을 할당할 때 사용.
    사용할 값을 알고 있을 때.

문법

데이터형[] 배열명 = {값,,,,}; <= new 데이터형[]가 생략되어있다.

int[] arr = {10, 20, 30, 400}

0개의 댓글