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);
}
추가한 후에도 같은 주소값을 사용한다.
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: 미만
-기본 자료형을 위한 클래스
기본자료형
정수 : byte, short, int, long
실수 : float, double
논리 : boolean
문자 : char
-재료가 되는 값
byte -> Byte 클래스
short -> Short 클래스
int -> Integer 클래스
long -> Long 클래스
float -> Float 클래스
double -> Double 클래스
boolean -> Boolean 클래스
char -> Character 클래스
class Integer {
....
private final int value;
....
}
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 클래스 객체
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");
}
}
-수학관련 편의 기능 클래스
-모두 정적 메서드로 구성
-abs(..) :절대값
-ceil(..) : 올림
-floor(..) : 버림
-round(..) : 반올림
-pow(..) : pow(2, 3); 2의 3제곱
-random() : 0~1 미만의 무작위 난수
-sqrt(..) : root값, sqrt(9) -> 3
-객체를 다룰때 사용하는 편의 기능 모음
-모든 메서드가 정적(static)
-equals: 두 객체간의 주소 비교
-deepEquals: 중첩된 객체를 재귀적으로 주소 비교
참고) Arrays.equals(..), Arrays.deepEquals(..)
-int hash(Object... values) :
-int hashCode(Object o)
-boolean isNull(..): 참조 변수가 null인지 체크
-boolean nonNull(..): 참조 변수가 null아닌지 체크
-requiredNonNuillElse: 특정 변수가 Null이면 기본값을 부여
Math.random() : 0 ~ 1 미만의 난수
-java.io
-데이터를 입력 받을때 사용하는 편의 클래스
-터미널에서 입력
InputStream System.in
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 ...
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);
}
}
-네트워크...
-구문 문자를 가지고 문자를 분리할때
-토큰 : 구문 문자
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);
}
}
}