본문 바로가기

Java

Java 10 API

API

//자바에서 문자열 관련 클래스는 3가지가 있음

//String, StringBuffer, StringBuilder

//String : 클래스지만 기본자료형처럼 사용할 수 있는것 -> = ""로 사용가능

//StringBuffer,StringBuilder : 클래스 사용방식으로 사용 -> new 연산자로 생성 후 사용

//String은 불변의 문자열 -> 수정이 불가능

//StringBuffer,StringBuilder는 가변의 문자열 -> 수정이 가능

String str="홍길동";

System.out.println(str);

System.out.println(str.hashCode());

str+="거짓말";

System.out.println(str);

System.out.println(str.hashCode());

StringBuffer sb=new StringBuffer("홍길동");

System.out.println(sb);

System.out.println(sb.hashCode());

sb.append("거짓말");

System.out.println(sb);

System.out.println(sb.hashCode());

 

//문자열 저장 후 수정, 삭제가 많이 발생한다면...

//StringBuffer,StringBuilder

//저장 후 변경이 없다면 String

String 관련 클래스

String 클래스

문자열 값 수정 불가능,immutable(불변)

수정 시 수정된 문자열이 새로 할당 되어 새 주소를 넘김

public static void main(String[] args) {

//자바에서 문자열 관련 클래스는 3가지가 있음

//String, StringBuffer, StringBuilder

//String : 클래스지만 기본자료형처럼 사용할 수 있는것 -> = ""로 사용가능

//StringBuffer,StringBuilder : 클래스 사용방식으로 사용 -> new 연산자로 생성 후 사용

//String은 불변의 문자열 -> 수정이 불가능

//StringBuffer,StringBuilder는 가변의 문자열 -> 수정이 가능

String str="홍길동";

System.out.println(str);

System.out.println(str.hashCode());

str+="거짓말";

System.out.println(str);

System.out.println(str.hashCode());

StringBuffer sb=new StringBuffer("홍길동");

System.out.println(sb);

System.out.println(sb.hashCode());

sb.append("거짓말");

System.out.println(sb);

System.out.println(sb.hashCode());

 

//문자열 저장 후 수정, 삭제가 많이 발생한다면...

//StringBuffer,StringBuilder

//저장 후 변경이 없다면 String

 

//String제공하는 유용한 메소드에 대해 알아보자.

//1. String.concat("문자열") : 문자열을 연결해주는 메소드

String test="대한민국";

test=test.concat("아자아자 화이팅");

System.out.println(test);

test=test.concat("호호호").concat("하하하");

System.out.println(test);

//+=연산과 동일한 기능을 한다.

 

//2. boolean String.contains("문자열")

// : 문자열에 매개변수로 전달된 문자열이 포함되어있는지 확인해주는기능

// boolean result=test.contains("화이");

// System.out.println(result);

if(test.contains("대한민국")) {

System.out.println("할수있다. 대한민국 화이팅!");

}

 

//3. int indexOf("문자열")

// : 문자열에 매개변수로 전달된 문자열이 있는지 확인하고

// 그 위치값(index)을 반환, 없으면 -1

System.out.println(test.indexOf("대한"));

System.out.println(test.indexOf("민"));

System.out.println(test.indexOf("국"));

if(test.indexOf("대한민국")!=-1) {

System.out.println("오늘은 너무 쉽다..");

}

//단독으로 사용하기보다는 인덱스를 사용하는 다른 메소드와 같이 사용

//lastIndexOf() : 뒤에서부터 찾기

test="data.test.exe";

System.out.println(test.indexOf("."));

System.out.println(test.lastIndexOf("."));

 

//indexof("문자",startindex);

System.out.println(test.indexOf(".",

test.indexOf(".")+1));

 

 

//4. String split("문자")

// : 문자열을 특정구분자로 구분하여 배열로 만들어주는 기능

// csv : 유병승,19,경기도 시흥시,남

test="홍길동,19,경기도 시흥시,남";

String[] data=test.split(",");

System.out.println(Arrays.toString(data));

System.out.println(data[0]);

System.out.println(data[1]);

System.out.println(data[2]);

 

test="홍길동,19,경기도 시흥시,남\n전우치,31,서울시,남\n이박사,27,부천,여";

String[] persons=test.split("\n");

Person[] personArr=new Person[persons.length];

for(int i=0;i<persons.length;i++) {

String[] person=persons[i].split(",");

for(int j=0;j<person.length;j++) {

System.out.print(person[j]);

Person p

=new Person(person[0],

Integer.parseInt(person[1]),

person[2],

person[3].charAt(0));

personArr[i]=p;

}

System.out.println();

}

 

for(Person p : personArr) {

System.out.println(p);

}

 

//5. String replace("찾을값","대체값")

// 특정문구를 지정문구로 변경하는 기능

test="나는 코딩을 정말 못해 못해 못해!";

test=test.replace("못해", "잘해");

System.out.println(test);

 

//6. static String String.join("구분자",배열)

// : 배열을 구분자로 구분한 문자열로 변경해주는 기능

String[] testArr= {"홍길동","전우치","임꺽정","장삼봉"};

test=String.join("->", testArr);

System.out.println(test);

 

//7. String substring(시작인덱스[,끝인덱스]);

// : 시작인덱스에서 끝인덱스까지 문자열을 잘라내는 기능

test="수업 끝";

test=test.substring(0,2);

System.out.println(test+" 시작!");

test="test.png";

//확장자만 가져오기

String exe=test.substring(test.lastIndexOf(".")+1);

System.out.println(exe);

//파일명만 가져오기

exe=test.substring(0,test.indexOf("."));

System.out.println(exe);

 

//8. toUpperCase()/toLowerCase()

// 영문자를 대문자, 소문자로 변경해주는 기능

test="AbCdEfG";

System.out.println(test);

System.out.println(test.toUpperCase());

System.out.println(test.toLowerCase());

Scanner sc=new Scanner(System.in);

// System.out.print("계속하시겠습니까?(y/n)");

// String cho=sc.next();

// if(cho.toLowerCase().equals("y")) {

// System.out.println("계속진행!");

// }else if(cho.toLowerCase().equals("n")) {

// System.out.println("중단!");

// }

 

//9. String trim()

// : 문자열의 양쪽 공백을 제거해주는 기능

test="오늘은 참 쉽다! ";

System.out.println(test);

System.out.println(test.equals("오늘은 참 쉽다!"));

System.out.println(test.trim());

test=test.trim();

System.out.println(test.equals("오늘은 참 쉽다!"));

 

//10. static String valueOf()

// : 다른타입의 값을 String으로 변환해주는 기능 -> 강제형변환

int num=10;

test=String.valueOf(num);

System.out.println(test);

double weight=65.5;

test=String.valueOf(weight);

System.out.println(test);

 

 

//11. getBytes()

// : String에 저장된 값을 byte배열로 반환해주는 메소드

byte[] bArr=test.getBytes();

bArr=test.getBytes(Charset.forName("UTF-8"));

 

//12. formmated() 15

// : 문자열 패턴을 값으로 변경해서 출력

// %d, %f, %s, %c

String test2="""

<h2>하이</h2>

<p>이건 html구문 작성한거야</p>

<input type="text" value="%s"/>

""".formatted(test);

System.out.println(test2);

 

 

// isBlank()/isEmpty() 11

test=" ";

System.out.println(test.isBlank());

System.out.println(test.isEmpty());

if(test.length()>0) {}

if(!test.isEmpty()) {}

StringBuffer 클래스

문자열 값 수정 가능, mutable(가변)

수정, 삭제 등이 기존 문자열에 수정되어 적용

기본 16문자 크기로 지정된 버퍼를 이용하여 크기 증가 가능

쓰레드 safe기능 제공(성능 저하 요인)

//StringBuffer사용하기

// 클래스에 선언되었는 메소드를 이용해서 문자열을 다룸

//데이터를 저장, 수정, 삭제 -> * 원본값을 수정

 

StringBuffer testSb=new StringBuffer();

System.out.println(testSb);

System.out.println(testSb.isEmpty());

//데이터 저장하기

//append()메소드 이용하기

//: 문자열의 마지막에 추가해주는 기능

testSb.append("여러분 이제 곧 점심시간");

System.out.println(testSb);

//insert(인덱스번호, 추가할 문구)메소드 이용하기

// : 원하는 위치에 문자열을 추가해주는 기능

testSb.insert(4, "이제 이제 ");

System.out.println(testSb);

testSb.insert(testSb.indexOf("곧"), "곧 곧 곧 곧 ");

System.out.println(testSb);

 

//문자열을 삭제하기

//delete(시작인덱스, 끝인덱스)

// : 지정된범위의 문자열을 삭제해주는 기능

testSb.delete(4, 10);

System.out.println(testSb);

testSb.delete(testSb.indexOf("곧"),

testSb.lastIndexOf("곧"));

System.out.println(testSb);

//deleteCharAt(인덱스번호)

// : 지정문자(인덱스번호) 한개를 삭제하는 기능

testSb.deleteCharAt(testSb.indexOf("곧"));

System.out.println(testSb);

 

//수정하기

// setCharAt(인덱스번호,'수정한문자')

// : 한글자만 수정가능

testSb.setCharAt(testSb.lastIndexOf(" "), '곧');

System.out.println(testSb);

 

//length()

// 저장된 문자열의 길이 확인하는 기능

System.out.println(testSb.length());

 

//문자열을 다루는 기능제공함.

//indexOf, lastIndexOf, substring, replace

//replace(시작인덱스번호, 끝인덱스번호, 변경한 문구)

testSb.replace(7, 8, "곧 ");

System.out.println(testSb);

testSb.replace(testSb.indexOf("점"),

testSb.indexOf("심")+1, "저녁");

System.out.println(testSb);

 

//reverse() 반대로...

testSb.reverse();

System.out.println(testSb);

testSb.reverse();

System.out.println(testSb);

 

//String과 StringBuffer간 호환성

// test=new String(testSb);

System.out.println(test);

test+="점심 뭐 먹지?";

testSb=new StringBuffer(test);

System.out.println(testSb);

 

//StringBuilder==StringBuffer랑 똑같음!

//StringBuffer는 쓰레드세이프티 기능이 있음.

stringTokenizerTest();

StringBuilder 클래스

StringBuffer와 동일하나 쓰레드 safe기능을 제공하지 않음

StringTokenizer 클래스

String클래스에서 제공하는 split()메소드와 같은 기능을 하는 클래스로 생성 시 전달받은 문자열을 구분자로 나누어 각 토큰에 저장

public static void stringTokenizerTest() {

//StringTokenizer클래스를 이용하기

//String 특정구분자로 구분해서 각 데이터를 별도로 출력해주는 기능을 하는 클래스

String test="전우치,홍길동,장삼봉,피카츄,꼬북이";

test="java,oracle,html/css,javascript/jquery,servlet";

StringTokenizer st=new StringTokenizer(test,",/");

String val=st.nextToken();

// System.out.println(val);

// val=st.nextToken();

// System.out.println(val);

// val=st.nextToken();

// System.out.println(val);

// val=st.nextToken();

// System.out.println(val);

// val=st.nextToken();

// System.out.println(val);

//hasMoreElement() -> 저장소에 출력할 내용이 있는지 확인

while(st.hasMoreTokens()) {

String n=st.nextToken();

System.out.println(st.nextToken()+" 힘내!!");

}

Wrapper 클래스

Primitive Data Type Wrapper Class
boolean Boolean
byte Byte
char Character
short Short
int Integer
long Long
float Float
double Double

Wrapper 클래스

public static void main(String[] args) {

//Wrapper클래스 이용하기

//기본자료형을 객체로 취급하게 해주는 클래스들....

//기본 데이터 타입을 객체로 다루어야 하는 상황에서 사용되며

//숫자로 변환하거나 반대로 숫자를 문자열로 변환할 때도 유용하게 활용됩니다.

//기본자료형, Wrapper클래스는 자동으로 형변환 처리해준다

//auto Boxing(기본자료형->Wrapper),

//auto UnBoxing(Wrapper->기본자료형)

//int -> Integer

//double -> Double

//char -> Character

//boolean -> Boolean

//long -> Long

Object o =10;

Integer i=100;

int j=i;

printValue(180.5);

printValue('호');

printValue("하하하");

printValue(true);

날짜 관련 클래스

Date 클래스

시스템으로부터 현재 날짜, 시간 정보를 가져와서 다룰 수 있게 만들어진 클래스

생성자 2개만 사용 가능하고 나머지는 모두 deprecated

Calendar 클래스 혹은 GregorianCalendar 클래스 사용 권장

public static void main(String[] args) {

//java에서 날짜 처리하기

//java.util.Date(java),java.sql.Date(DB연동)

//java.util.Calendar

//java.util.GregorianCalendar

 

//java.util.time

//LocalDate, LocalTime, LocalDateTime

 

//오늘 날짜 가져오기 -> 컴퓨터에 등록된 일짜

Date today=new Date();

System.out.println(today);

//long데이터를 매개변수로 넣어서 날짜 출력

//지정된 날짜를 출력

today=new Date(12345678900000L);

System.out.println(today);

//Date클래스의 메소드 이용하기 -> deprecated되어 있음!

//java.utill.Date는 타입으로 사용

 

//Calendar, GregorianCalendar사용하기\

Calendar c;//=new Calendar();

//Calendar 클래스는 추상클래스로 직접생성이 불가능함.

//Calendar 클래스를 이용하려면 Calendar 객체를 제공하는 메소드를 호출

c=Calendar.getInstance();

System.out.println(c);

//Calendar에 저장된 년,월,일,시,분,초 출력하기

//Calendar.get(Calender.YEAR||MONTH||DATE)

int year=c.get(Calendar.YEAR);

int month=c.get(Calendar.MONTH);

int day=c.get(Calendar.DATE);

System.out.println(year+"년"+(month+1)+"월"+day+"일");

int hour=c.get(Calendar.HOUR);

hour=c.get(Calendar.HOUR_OF_DAY);

int minute=c.get(Calendar.MINUTE);

int second=c.get(Calendar.SECOND);

System.out.println(hour+":"+minute+":"+second);

 

//날자설정하기

//set(필드,값)

Calendar birthDay=Calendar.getInstance();

birthDay.set(Calendar.YEAR, 1999);

birthDay.set(Calendar.MONTH, 13);

birthDay.set(Calendar.DATE, 2);

birthDay.set(Calendar.HOUR_OF_DAY, 11);

birthDay.set(Calendar.MINUTE, 31);

birthDay.set(Calendar.SECOND, 48);

 

year=birthDay.get(Calendar.YEAR);

month=birthDay.get(Calendar.MONTH)+1;

day=birthDay.get(Calendar.DATE);

 

System.out.println(year+"."+month+"."+day);

Calendar클래스

Calendar클래스는 생성자가 protected이기 때문에 new연산자를 통해 객체 생성 불가능

getInstance()메소드를 통해서 객체 생성

GregorianCalendar클래스

GregorianCalendar클래스는 Calendar클래스의 후손 클래스

년,월,일,시,분,초,정보를 필드를 이용하여 다룰 수 있음

//GregorianCalendar이용하기

GregorianCalendar gc=new GregorianCalendar();

System.out.println(gc);

//get메소드를 이용 출력

year=gc.get(Calendar.YEAR);

month=gc.get(Calendar.MONTH)+1;

System.out.println(year+"."+month);

//날짜 지정해서 생성하기

// gc=new GregorianCalendar(2000,4,17);

// System.out.println(new Date(gc.getTimeInMills()));

 

//날자를 원하는 방식대로 출력하기

//SimpleDateFormat클래스

//y:년

//M:월

// d:일

// E:요일

// h:시간

// m:분

// s:초

//Date -> 원하는 패턴의 문자열로 반환

SimpleDateFormat sdf=

new SimpleDateFormat("yyyy년 MM월 dd일 E요일 hh:mm:ss");

String date=sdf.format(new Date(gc.getTimeInMillis()));

//String date=sdf.format(new Date());

System.out.println(date);

 

//날짜패턴을 갖는 문자열을 Date로 변경하기

//Web에서 날짜를 전송하게 문자열로 전송이 됨

String webDate="1996-04-25";

String[]dateData=webDate.split("-");

gc=new GregorianCalendar(

Integer.parseInt(dateData[0]),

Integer.parseInt(dateData[1])-1,

Integer.parseInt(dateData[2])

);

today=new Date(gc.getTimeInMillis());

System.out.println(today);

 

//SimpleDateFormat이 제공하는 메소드이용하기

//parse()

SimpleDateFormat sdf2

=new SimpleDateFormat("yyyy-MM-dd");

Date sam=null;

try {

sam=sdf2.parse(webDate);

}catch(ParseException e) {

e.printStackTrace();

}

System.out.println(sam);

 

//날짜를 더하기

//add(필드,값);

System.out.println(new Date(gc.getTimeInMillis()));

gc.add(Calendar.YEAR,10);

System.out.println(new Date(gc.getTimeInMillis()));

gc.add(Calendar.YEAR,-20);

 

//날짜차이?

long send=(today.getTime()-gc.getTimeInMillis())/1000;

long min=(today.getTime()-gc.getTimeInMillis())/6000;

long hours=(today.getTime()-gc.getTimeInMillis())/36000;

long dates=((today.getTime()-gc.getTimeInMillis())

/1000)/(24*60*60);

System.out.println(send);

System.out.println(min);

System.out.println(hours);

System.out.println(dates);

 

//java8

//LocalDate, LocalTime, LocalDateTime

//생성할때 static메소드인 now()를 이용함

LocalDate ld=LocalDate.now();//현재일

System.out.println(ld);

ld=LocalDate.of(1995, 11, 14);

year=ld.getYear();

month=ld.getMonthValue();

day=ld.getDayOfMonth();

System.out.println(year);

System.out.println(month);

System.out.println(day);

 

//LocalTime : 시간설정

LocalTime lt=LocalTime.now();

System.out.println(lt);

lt=LocalTime.of(16, 50);

System.out.println(lt);

System.out.println(lt.getHour()+"시");

System.out.println(lt.getMinute()+"분");

System.out.println(lt.getSecond()+"초");

 

//LocalDateTime : 날짜와 시간을 한번에 저장

LocalDateTime ldt=LocalDateTime.now();

System.out.println(ldt);

ldt=LocalDateTime.of(ld, lt);

ldt=LocalDateTime.of(2002, 8,1,18,30,21);

System.out.println(ldt);

System.out.println(ldt.getYear());

System.out.println(ldt.getMonthValue());

System.out.println(ldt.getHour());

System.out.println(ldt.getMinute());

System.out.println(ldt.getSecond());

Format 관련 클래스

SimpleDateFormat클래스

Date의 날짜, 시간 정보를 원하는 format으로 출력하는 기능 제공

java.text패키지에 속해있음

Format 변환문자

값 출력시 format적용하여 출력

Formatter 객체 생성 시 변환된 결과를 보낼 곳의 정보를 생성자 인자로 전달

변환문자 의미
%d 정수 (십진수)
%c 유니코드
%b boolean값
%s String
%f 부동소수점 (십진수
%e 부동소수점 (과학적 표기
%x 정수 (16진수
%h 해시코드 (16진수
%% 리터럴 %

excape문자

특수문자 문자 리터럴 비고
tab \t 정해진 공간만큼 띄어쓰기
new line \n 출력하고 다음 라인으로 옮김
역 슬래시 \\ 특수문자 사용시
백슬래시( \ )를 넣고
특수문자를 넣어야함
작은 따옴표 \'
큰 따옴표 \"
유니코드 \u 유니코드 표시할 때 사

 

'Java' 카테고리의 다른 글

Java 12 입출력IO  (0) 2023.09.18
Java 11 Exception처리  (0) 2023.09.15
Java 9 인터페이스  (0) 2023.09.13
Java 8 다형성  (0) 2023.09.12
Java 7 상속  (0) 2023.09.11