티스토리 뷰

Chapter 10. 기본 API 클래스 알아보기

 

▶ 학습 목표

: API가 무엇인지 알고 기본적으로 제공하는 클래스를 적절하게 사용할 수 있다.

 

 

 

 

10-1. API

: 자바에서 기본적으로 제공하는 클래스들

 

1. 객체 생성 여부 확인

* import 여부 확인 (다른 패키지의 클래스를 사용하는 것이므로 import가 있어야한다)

2. 객체 생성 후 주소 값 저장

* 1회용이면 저장하지 않는다.

 

 

 

 

10-2. 문자열 클래스

 

: 문자열 처리를 위한 다양한 메서드가 정의되어 있는 클래스

String인스턴스를 생성할 시 원칙적으로는 new 를 사용하여 객체를 생성하여 사용하는 것이지만

자주 사용하므로 new 하지 않고 사용하는 것을 허용한다.

 

String a = "Java";
//기본 자료형처럼 사용 가능

 

 

 

 

concAt() 원하는 문자열을 합치는 것이다. (+와 같은 역할) 
ex) 문자열1.concAt(문자열2);
charAt() / length() 원하는 인덱스의 위치에 있는 문자를 반환해준다.
ex) 문자열.charAt(위치);
indexOf() 지정한 문자나 문자열이 어디에 위치하는지 알려준다. 없을 시 -1을 반환한다.
ex) 문자열.indexOf("찾고자하는 문자나 문자열")
substring() 문자열을 잘라낼 때 사용한다. 시작위치와 끝나는 위치를 지정하고 그만큼 잘라낸다.
ex) 문자열명.substring(시작위치, 끝나는 위치);
equals() 문자열을 내용을 비교한다. 일치하면 true, 불일치하면 false를 반환한다.
ex) 비교할문자열.equals(비교할문자열명);
contentEquals와 같다
spilt() 특정 기호로 문자열을 구분하여 배열의 요소로 저장한다. (거의 배열과 함께 사용)
ex) 배열명.split(",");
equalsIgnoreCase() 대소문자 상관 없이 비교하는 메서드이다. 논리값으로 반환한다.
ex) 비교할문자열.equalsIgnoreCase(비교할 문자열));
join() 배열의 요소에 특정문자를 사이 사이 넣어준다.
ex) String.join("-",a); //a배열 사이사이 - 넣음
trim() 문자열 앞, 뒤의 공백을 제거한다. 
ex) 변수(=문자열).trim();
valueOf() 기본형을 String으로 변환한다.
ex) String 변수명 = String.valueOf(변수);
format() (=양식),문자열에 정수가 들어갈 자리에는 %d, 실수는 %s를 작성하고 적절하게 파라미터(결과값)를 추가한다.
ex) String.format("%s", "1234+5678");

 

 

 

 

package chapter10;


public class example1 
{
	

	public static void main(String[] args) 
	{
		example1 tt = new example1(); //인스턴스메서드 사용하기 위해 객체 생성
		exam1(); //스태틱메서드는 따로 생성 필요없이 바로 불러올 수 있다
		tt.exam2();
		exam3();
		tt.exam4();
		exam5();
		tt.exam6();
		exam7();
		tt.exam8();
		exam9();
		tt.exam10();
		exam11();

	}
	public static void exam1() 
	{
		System.out.println("----------contact----------");
		
        String a = "Hi";
		String b = " Java";

		System.out.println(a+b);


		String c = "Hello";
		String d = " Java Program";

		System.out.println(c.concat(d));
		
		System.out.println("");
	}
	void exam2() 
	{
		System.out.println("----------charAt----------");
		
        String a = "hello Java!";
		char b = a.charAt(0);
		
		for(int i=0; i<a.length(); i++) {
			System.out.println(a.charAt(i));
		}
		System.out.println("");
		
	}
	static void exam3() 
	{
		System.out.println("----------indexOf----------");
		
		String a = "abcdefghijk";
		int b = a.indexOf("c");
		System.out.println("문자 c는 "+b+"번째 입니다");
		
		System.out.println("");
	}
	void exam4() 
	{
		System.out.println("----------substring----------");
		
		String a = "0123456789";
		String b = a.substring(3,8);
		System.out.println(b);
		
		System.out.println("");
	}
	static void exam5() 
	{
		System.out.println("----------equals----------");
		
		String a = "Java";
		String b = "Java!";	
		System.out.println("변수명.contenEquals 사용"+a.contentEquals(b));
		System.out.println("변수명.equals 사용"+a.equals(b));
		
		System.out.println("");
	}
	void exam6() 
	{
		System.out.println("----------split----------");
		
		String a = "kor,eng,math";
		String div[] = a.split(",");
		for(int i = 0; i<div.length; i++) {
			System.out.println(div[i]);
		}
		
		System.out.println("");
	}
	static void exam7() 
	{
		System.out.println("----------equalsIgnoreCase----------");
		
		String a = "Java";
		String b = "JAVA";
		System.out.println(a.equalsIgnoreCase(b));
		
		System.out.println("");
	}
	void exam8() 
	{
		System.out.println("----------join----------");
		
		String a[] = {"kor", "eng", "math"};
		System.out.println(String.join("-",a)); //join은 스태틱변수 스트링안의..
		
		System.out.println("");
	}
	static void exam9() 
	{
		System.out.println("----------trim----------");
		
		String a = ("          Hello Java          ");
		System.out.println(a);
		String b = a.trim();
		System.out.println(b);
		
		System.out.println("");
	}
	void exam10() 
	{
		System.out.println("----------valueOf----------");
		
		int a = 1;
		int b = 2;
		System.out.println(a+b);
		String c = String.valueOf(a);
		String d = String.valueOf(b);
		System.out.println(c+d);
		
		System.out.println("");
	}
	static void exam11() 
	{
		System.out.println("----------format----------");
		
		System.out.println(String.format("%d", 1234+5678));
		System.out.println(String.format("%s", 1234+5678));
		
		System.out.println("");
	}

}

 

결과

----------contact----------
Hi Java
Hello Java Program

----------charAt----------
h
e
l
l
o
 
J
a
v
a
!

----------indexOf----------
문자 c는 2번째 입니다

----------substring----------
34567

----------equals----------
변수명.contenEquals 사용false
변수명.equals 사용false

----------split----------
kor
eng
math

----------equalsIgnoreCase----------
true

----------join----------
kor-eng-math

----------trim----------
          Hello Java          
Hello Java

----------valueOf----------
3
12

----------format----------
6912
6912

 

 

 

 

 

10-3. 시간 처리 Data, Calender

 

 

 

 

- System.currentTimeMills()

: system클래스의 currentTimeMills() 메서드는 현재 운영체제의 시간을 long 타입으로 반환하는 것이다.

 

package chapter10;

public class Data1 {

	public static void main(String[] args) {
		long start = System.currentTimeMillis();
		System.out.println("시작시간 : " +start);
		int a = 0;
		for(int i=1; i<10000000; i++) {
			a++;
		}
		long end=System.currentTimeMillis();
		System.out.println("종료 시간 : " +end);
		System.out.println("걸린 작업 시간 : " +(end-start));

	}

}

 

시작시간 : 1698205983215
종료 시간 : 1698205983218
걸린 작업 시간 : 3

 

 

 

 

- java.util.Calendar

 

:  날짜를 다루기 위해 자바에서 제공하는 Calendar 클래스를 사용한다.

Calendar 클래스는 싱글턴으로 만들어진 대표적인 클래스이다.

Calendar은 추상 메서드이기(안에 내용이 없음) 때문에 직접 생성하지 못하고 getInstance() 메서드를 통해서 인스턴스를 생성하는 싱글턴 패턴을 사용한다.

 

 

이때,

Calendar a = Calendar.getInstance();  //싱글턴패턴

Calendar b = new GregorianCalendar();

코드를 실행하면 실행은 되지만 똑같은 인스턴스를 생성하기 때문에 새로운것이 생성된 것이 아닌 같은 인스턴스로 본다.

(new X)

 

 

 

 

- 싱글턴 패턴

 

: 객체를 1개만 생성 후 공유하는 방법

객체 생성은 static이기 때문에 이미 되어 있다.

 

싱글턴 패턴은 자기 자신의 객체를 직접 생성한다.

옵션은 private(아무나 접근하는 것은 x), static(객체는 한개만 생성)

 

호출시 주소를 반환하거나 함수를 생성한다.

객체(자기자신/static)

 

* 싱글턴이 원래는 하나의 객체에 하나의 변수 사용하는건데
리턴값으로 객체(자기)생성해서 주면 각각의 값으로 사용 가능

 

* 클래스명.함수명() 을 사용하여 호출하고 일회성일 경우 변수에 담지 않고 다회성일 경우 변수에 담는다. *

 

 

 

A클래스

package chapter10;

public class sigle_A 
{

	public static void main(String[] args) 
	{
		single_B tmp = single_B.getinstance();   
        //B의 함수 실행 후 리턴으로 B의 주소 받음
		tmp.test();
	}
}

 

B클래스

package chapter10;

public class single_B {
	//자신의 객체 주소를 담는 변수
	private static single_B b = new single_B();
	
	public static single_B getinstance()
	{
		return b;  //자신의 주소를 리턴값으로 함
	}
	void test() {
		System.out.println("접근성공");
	}
}

 

 

 

 

 

 

- get() 메서드로 정보 가져오기

 

: Calendar 클래스에서 데이터를 가져오려면 get() 메서드를 사용한다.

반환 타입은 int이다.

월(MONTH) 반환 값이 실제 월보다 1이 작은 값이 반환된다.

(1월 → 0 , 12월 → 11)

요일의 반환은 일요일이 1이고 월요일이2 그리고 토요일이 7이다.

 

 

 

 

 

ex) java.util.Calendar (싱글턴패턴) get()메서드로 정보 가져오기

package chapter10;

import java.util.Calendar;

public class date2 {

	public static void main(String[] args) 
	{
		Calendar a = Calendar.getInstance(); //싱글턴패턴
		
		int year = a.get(Calendar.YEAR);  //Galendar은 static변수 get으로 받아옴(private)
		int month = a.get(Calendar.MONTH);
		int Month=month+1;  //실제 월보다 1작은 값이 반환되기때문에 +1했다
		int date = a.get(Calendar.DATE);
		
		System.out.println(year+"년"+Month+"월"+date+"일"); 
        //month는 반환시 실제 월보다 1작은 값 반환
		System.out.println(a.get(Calendar.DAY_OF_WEEK));
		System.out.print("이번 년도에서 오늘이 몇 일째인가? : ");
		System.out.println(a.get(Calendar.DAY_OF_YEAR));
		System.out.print("이번 달은 며칠까지 있는가? : ");
		System.out.println(a.getActualMaximum(Calendar.DATE));

	}

}

 

2023년10월25일
4
이번 년도에서 오늘이 몇 일째인가? : 298
이번 달은 며칠까지 있는가? : 31

 

 

 

 

 

 

 

- set() 으로 날짜 지정하기

 

: set() 메서드는 Calendar 인스턴스의 값을 변경할 때 사용한다.

두 개의 파라미터(매개변수)를 필요로 하고 첫번째는 바꿔야할 항목, 두번째는 바꿀 값을 대입한다.

 

 

 

set(바꿔야할 항목, 바꿀 값);
set(년,월,일);

 

 

 

 

ex) set() 으로 날짜 지정하기

 

 

package chapter10;

import java.util.Calendar;

public class date3 {

	public static void main(String[] args) {
		Calendar today=Calendar.getInstance();
		Calendar endOfYear = Calendar.getInstance();
		Calendar Christmas=Calendar.getInstance();
		
		endOfYear.set(Calendar.MONTH,11);
		endOfYear.set(Calendar.DATE,31);
		long diff = endOfYear.getTimeInMillis()-today.getTimeInMillis();
		System.out.println("연말까지 남은 날 : "+diff/(24*60*60*1000));
		
		Christmas.set(2023,12,25);
		
		diff=Christmas.getTimeInMillis()-today.getTimeInMillis();
		System.out.println("크리스마스까지 남은 날 : " +diff/(24*60*60*1000)+"일");
	}

}

 

연말까지 남은 날 : 67
크리스마스까지 남은 날 : 92일

 

 

 

TimeInMillis()는 ms을 뜻한다. 

시간 ms
1 24 60 60 1000

 

 

 

 

 

- long 타입을 일(DAY)로 변경하는 방법

 

1. 1000(ms)로 나누어서 '초' 단위로 만든다. (1000시간=1일)

2. 초를 분으로 바꾸기 위해 60으로 나눈다. (60초=1분)

3. 분을 시간으로 바꾸기 위해 60으로 나눈다. (60분=1시간)

4. 시간을 일로 바꾸기 위해 24를 나눈다. (24시간=1일)

 

 

 

 

 

10-4. java.util.Date

 

: Date 클래스는 JDK 1버전부터 사용한 것으로 잘 사용하지 않는다.

 

 

 

- long, Calendar, Date 간의 변환

 

: 시간을 나타내는 타입들은 서로 변환할 수 있다.

 

package chapter10;

import java.util.Date;
import java.util.Calendar;

public class Date5 
{

	public static void main(String[] args) 
	{
		Calendar calendar = Calendar.getInstance(); //Calendar의 인스턴스 값을 가져온다.
		Date date = (Date) calendar.getTime(); //Date 형식으로 형변환한다.
		System.out.println(date);
		
		
		calendar.setTime(date);  //Date를 다시 calendar로 형변환한다.
		
		
		long time = calendar.getTimeInMillis(); //calendar을 long으로 변환한다.
		System.out.println(time);
		
		
		calendar.setTimeInMillis(time); //long을 calendar로 변환한다.

	}

}

 

Wed Oct 25 18:45:34 KST 2023    //date 타입
1698227134760    //long타입

 

java.util.GregorianCalendar[time=1698227338427,areFieldsSet=true,areAllFieldsSet=true,lenient=true,zone=sun.util.calendar.ZoneInfo[id="Asia/Seoul",offset=32400000,dstSavings=0,useDaylight=false,transitions=30,lastRule=null],firstDayOfWeek=1,minimalDaysInFirstWeek=1,ERA=1,YEAR=2023,MONTH=9,WEEK_OF_YEAR=43,WEEK_OF_MONTH=4,DAY_OF_MONTH=25,DAY_OF_YEAR=298,DAY_OF_WEEK=4,DAY_OF_WEEK_IN_MONTH=4,AM_PM=1,HOUR=6,HOUR_OF_DAY=18,MINUTE=48,SECOND=58,MILLISECOND=427,ZONE_OFFSET=32400000,DST_OFFSET=0]
//calendar 타입

 

 

 

 

 

10-4. jave.util.Random

 

: 무작위의 값을 얻고자할때 사용한다.

Random 클래스는 종자 값이라고 하는 수를 사용하는데(=seed)

이 종자 값에 따라 반환하는 값이 달라진다.

 

기본 생성자로 Random 클래스의 인스턴스를 생성하면 현재 시간을 currentTimeMillis()를 종자 값으로 하여 값을 출력한다.

또한, 종자값이 동일할 경우 같은 값이 출력된다.

 

 

Random() 현재 시간을 종자 값으로 인스턴스 생성
Random(long seed) seed를 종자 값으로 하는 인스턴스 생성

 

 

 

 

Random 인스턴스의 값을 받아오는 메서드

 

int nextInt() 무작위의 int 값 반환
int nextInt(int n) 0보다 크고 n보다 작은 int 값을 반환
boolean nextBoolean() 무작위의 boolean 값 반환
long nextLong() 무작위의 long 값 반환
double nextDouble() 무작위의 double 값 반환
float nextFloat() 무작위의 float 값 반환

 

 

 

package chapter10;

import java.util.Random;

public class random1 {

	public static void main(String[] args) 
	{

		int [] lottoNum = new int[6];  //lotto 6자리
		Random random = new Random();
		int index = 0;
		while(index !=6) 
		{
			lottoNum[index]=(int)(Math.random()*45)+1; 
			//*45는 45번까지의 숫자를 랜덤하는것 math.random은 0부터 시작함 +1해야한다.
			for(int i =0 ; i<index; i++)   
			{
				System.out.println(index+"추첨을 시작합니다."+lottoNum[index]);
				if(lottoNum[i]==lottoNum[index]) 
				{
					index--;     
                    //i의 값과 index의 값이 같으면 index--하고 다시 랜덤 값 입력 받음
					break;
				}
			}
			index++;
		}
		System.out.println("당첨번호");
		
		for(int i =0; i<lottoNum.length; i++)  //lottoNum 배열 값 출력
		{
			System.out.println(lottoNum[i]+" ");
		}

	}

}

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday