Java -11

김정현·2024년 4월 24일
0

JAVA

목록 보기
12/19

String 클래스

1.String을 선언하는 두 가지 방법

String str = "문자열";
String str = new String("문자열");

2.String 클래스의 final char[] 변수 //jdk11

최근: final byte[]
-문자열은 불변하는 특징
-매번 문자열 추가 시마다 새로운 객체 생성 -> 성능저하

3.StringBuffer와 StringBuilder 클래스 활용하기

버퍼: 임시 메모리

-문자열 가감이 많은 경우 사용
-StringBuffer : 쓰레드 안전성(동시성 작업시 안전)
-StringBuilder: 쓰레드 안전성X(동시성 작업시 영향을 받는다.)

public static void main(String[] args) {
        StringBuffer sb = new StringBuffer(100);
        sb.append("ABC");
        System.out.printf("sb 주소: %d%n", System.identityHashCode(sb));
        sb.append("DEF");
        System.out.printf("sb 주소: %d%n", System.identityHashCode(sb));
        String str = sb.toString();
        System.out.println(str);
    }

추가한 후에도 같은 주소값을 사용한다.

  • 반환값이 this : 동일한 객체를 반환 -> 메서드 체이닝 기법 의도
public static void main(String[] args) {
        StringBuffer sb = new StringBuffer(100);
        StringBuffer sb2 =sb.append("ABC");
        StringBuffer sb3 =sb2.append("DEF");
    }
    셋다 같은 주소값 

이런식으로 간략하게 사용 가능

    public static void main(String[] args) {
        StringBuffer sb = new StringBuffer(100);
        String str = sb.append("ABC").append("DEF").append("GHI").toString();
}

boolean endsWith(...) : 특정 문자열로 끝나는지 체크
boolean startsWith(...) : 특정 문자열로 시작하는지 체크

참고)
Locale : 지역화

static Join
static format(...)
substring

empty : 여백 포함 X 체크
isBlank : 여백 포함 체크 (11버전 이후)

indexOf : 왼쪽 -> 오른쪽으로 검색
lastIndexOf : 오른쪽 -> 왼쪽으로 검색
matches :

stripLeading() : trim()과 동일
stripTrailng

beginIndex: 이상
endIndex: 미만

Wrapper 클래스

-기본 자료형을 위한 클래스
기본자료형
정수 : byte, short, int, long
실수 : float, double
논리 : boolean
문자 : char

-재료가 되는 값

  1. Wrapper 클래스의 종류
    기본 자료형의 값 -> 기능 X
    기본 자료형의 값을 처리하는 편의 기능 클래스

byte -> Byte 클래스
short -> Short 클래스
int -> Integer 클래스
long -> Long 클래스

float -> Float 클래스
double -> Double 클래스

boolean -> Boolean 클래스
char -> Character 클래스

class Integer {
	....
    
    private final int value;
    
    ....
}

Integer 클래스

Integer 클래스의 메서드

static int parseInt(...) : 문자열 숫자 -> int 형 숫자로 변환
static Integer valueOf(int i)
static Integer valueOf(String str)

새로운 객체를 생성할 때

Integer num1 = Integer.valueOf(10);
Integer num2 = Integer.valueOf(10);

오토박싱과 언박싱

연산: 기본 자료형만 가능한 연산, 같은 자료형끼리만 가능

언박싱

public static void main(String[] args) {
        int num1 = 100;
        Integer num2 = Integer.valueOf(200);

        int result1 = num1 + num2;  //num2.intValue()
        System.out.println(result1);
    }

계산을 위해 객체가 자동적으로 변환됨

오토박싱

Integer num1 = 100;   //오토박싱

java.lang.Number

 public static void main(String[] args) {
        double result = add(10.0, 10L);
        System.out.println(result);
    }

    public static double add(Number num1, Number num2) {
        return num1.doubleValue() + num2.doubleValue();
    }

숫자 자료형을 마음대로 받을 수 있다.

Class 클래스

-클래스의 정보가 담겨 있는 객체가 자동 생성 - Class 클래스 객체

1.Class 클래스를 선언하고 클래스 정보를 가져오는 방법

1) 모든 클래스의 정적 변수 class
2) Object 클래스의 정의된 getClass() 
Field[] fields = cls1.getFields();
Method[] methods = cls1.getMethods();
Constructor[] constructors = cls1.getConstructors();

-> 정보들을 확인 가능

2.Class 클래스를 활용해 클래스 정보 알아보기

3.Class.forName()을 사용해 동적 로딩 하기

public class Ex09 {
    public static void main(String[] args) throws ClassNotFoundException
    {
        Class cls = Class.forName("exam03.Person");
    }
}

유용한 클래스,

-java.lang.Math 클래스

-수학관련 편의 기능 클래스
-모두 정적 메서드로 구성

-abs(..) :절대값
-ceil(..) : 올림
-floor(..) : 버림
-round(..) : 반올림
-pow(..) : pow(2, 3); 2의 3제곱
-random() : 0~1 미만의 무작위 난수
-sqrt(..) : root값, sqrt(9) -> 3

-java.util.Objects 클래스

-객체를 다룰때 사용하는 편의 기능 모음
-모든 메서드가 정적(static)
-equals: 두 객체간의 주소 비교
-deepEquals: 중첩된 객체를 재귀적으로 주소 비교

참고) Arrays.equals(..), Arrays.deepEquals(..)

-int hash(Object... values) :
-int hashCode(Object o)
-boolean isNull(..): 참조 변수가 null인지 체크
-boolean nonNull(..): 참조 변수가 null아닌지 체크
-requiredNonNuillElse: 특정 변수가 Null이면 기본값을 부여

-java.util.Random 클래스

Math.random() : 0 ~ 1 미만의 난수

-java.util.Scanner 클래스

-java.io
-데이터를 입력 받을때 사용하는 편의 클래스

     -터미널에서 입력
        InputStream System.in

input 터미널

public class Ex02 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);  // 터미널에서 입력
        System.out.print("이름을 입력하세요:");
        String name = sc.nextLine();
        System.out.printf("이름:%s%n", name);
    }
}
     -파일
        File
     	FileInputStream ...

Input 파일

public class Ex03 {
    public static void main(String[] args) throws FileNotFoundException {
        Scanner sc = new Scanner(new File("data.txt"));

        int total = 0;
        while(sc.hasNextInt()) {
            int num = sc.nextInt();
            System.out.println(num);
            total += num;
        }
        System.out.println(total);
    }
}
     -네트워크...

     

-java.util.StringTokenizer 클래스

-구문 문자를 가지고 문자를 분리할때
-토큰 : 구문 문자

public class Ex04 {
    public static void main(String[] args) {
        String fruits = "Apple#Orange,Melon_Banana+Mango";
        StringTokenizer st = new StringTokenizer(fruits, "#,_+");  // 구분하고 싶은 문자를 나열 

        while (st.hasMoreTokens()) {
            String fruit = st.nextToken();
            System.out.println(fruit);
        }
    }
}

0개의 댓글