원지의 개발
article thumbnail
728x90

JAVA API

: application programming interface

  • 미리 만들어진 기능인 라이브러리
  • API안에 많은 패키지들이 존재 (lang, util, IO 등)
메서드 모형 읽는 법
접근제어자 + (매개변수) + ;(결과)반환유형 - 클래스가 선언된 위치

접근제어자 구분
public private default protected

java.lang 패키지

  • 기본적인 클래스들을 담고 있는 패키지(이므로)
  • java.lang 패키지의 클래스와 인터페이스는 import 구문 없이 사용 가능
    나머지는 import 구문 필요

Object (aka.최고 조상)

  • 모든 자바의 클래스는 Object클래스의 자식이거나 자손 클래스
  • 특정 메소드 오버라이딩(toString, equals, clone 등)
더보기

Person implements Cloneable

package api.lang.object;

public class Person /*extends Object*/ implements Cloneable{

	private String name;
	
	public Person(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

//	오버라이딩 - toString: 멤버변수 한눈에 확인하는 역할
//	generate toString
	@Override
	public String toString() {
		return "Person [name=" + name + "]";
	}

//	멤버변수명이 같으면 true 반환
	@Override
	public boolean equals(Object obj) {
		
		if(obj instanceof Person) {
			Person p1 = (Person)obj;
		
			String n = p1.getName();
			if(n.equals(this.name)) {
				System.out.println("이름이 같음");
				return true;
			}
		}
		return false;
//		return super.equals(obj);
	}

//	clone 메서드를 사용하고 싶다면 override
	@Override
	protected Object clone() throws CloneNotSupportedException {
		return super.clone();
	}
	
}
// Cloneable 인터페이스를 구현하고, clone 메서드를 재정의 해야하기 때문에
// (상위 클래스의 clone을 return하여 연결, CloneNotSupportedException 예외를 반드시 메서드 밖으로 던져줌)
// Name이라는 변수를 return하도록 하여 만든 클래스

protected Object clone() throws CloneNotSupportedException {
         return super.clone();
}

MainClass

package api.lang.object;

public class MainClass {

	public static void main(String[] args) {
		
		Person p1 = new Person("홍길동");
		// toString
		String a = p1.toString();
		System.out.println(a); // 아래와 결과 같음
		
		System.out.println(p1.toString()); //반환ok
	
		// equals()
		Person p2 = new Person("홍길동");
		
		System.out.println(p1.equals(p2)); // 똑같습니까? true
	
		// clone() - 객체복사
		try {
			Object obj = p1.clone();
			Person p3 = (Person)obj;
			
			System.out.println("복사된 객체의 name: " + p3.getName());
			System.out.println(p3 == p1); // false, 주소는 다르고 완전히 동일한 객체 생성
		} catch (Exception e) {
			e.printStackTrace();
		}
	
	}
}
--------------------------------------------출력------------------------------------------
Person [name=홍길동]
Person [name=홍길동]
이름이 같음
true
복사된 객체의 name: 홍길동
false
  • Person 객체 생성 후 toString()  메서드로 리턴
  • Pesron 객체 하나더 생성 후 이름이 같은지 확인: equals() 메서드
  • p1을 복사한 객체 p3는 주소는 다르고 완전히 동일한 객체 생성 - ?

to String()

  • 객체가 가지고 있는 정보나 값들을 문자열(String)로 만들어 리턴하는 메서드
    = 대부분의 경우 인스턴스 변수에 저장된 값들을 문자열로 표현한다는 뜻
  • 오버라이딩(재정의)하여 사용해야 함
  • 오버라이딩 하지 않으면 클래스이름과 16진수의 해시코드가 출력됨 = Object클래스의 toString()이 호출됨
해시 자료구조에서는 hashCode로 먼저 비교를 하고, 결과가 같다면 equals로 추가로 비교

equals()

  • 객체 간의 값 비교에 사용 ▶ 값이 같은지 여부
  • 두 객체의 같고 다름은 참조변수의 값으로 판단 → 항상 false 반환
    객체 생성시 서로 다른 두 개의 객체가 같은 주소를 갖을 수는 X,
    두 개 이상의 참조변수가 같은 주소값을 가질 수는 O
  • Value클래스에서 equals()를 오버라이딩하여 객체에 저장된 내용을 비교
  • null 체크를 해야 NullPointerException을 방지

hashCode()

  • 객체의 해시 코드를 반환하는 메서드 ▶ 객체를 식별
  • 동일한 객체는 동일한 해시 코드 반환
  • equals() 메서드가 true를 반환하는 두 객체는 반드시 같은 해시 코드를 반환해야 하지만,
    해시 코드가 같은 두 객체가 equals() 메서드에서 true를 반환할 필요는 없음
  • hashCode() 메서드를 오버라이딩할 때는 equals() 메서드와 일관성을 유지해야 함
String 클래스의 hashCode()는 객체 주소가 아닌 문자열의 내용을 기반으로 해시코드를 생성하므로
문자열의 내용이 같으면 항상 같은 값의 해시코드 반환

2022.10.26 - [프로그래밍 언어/Java] - [Java] API_ Collection Framework (List, Set, Map)

https://okky.kr/articles/596050

hashCode() vs 주소값

  • 주소값 - 메모리상에 객체가 저장된 위치
  • hashCode - 객체를 구분하기위한 정수값
public class Person {
    private String name;
    private int age;

    // 생성자, getter, setter 등 생략
    
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null || getClass() != obj.getClass()) {
            return false;
        }
        Person person = (Person) obj;
        return age == person.age && Objects.equals(name, person.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
  • equals() 메서드는 객체의 name과 age 필드를 비교하여 두 객체의 값이 동일한지 여부를 판단
  • Objects.equals() 메서드를 사용하여 null 체크를 수행하고, 필드 값을 비교
  • hashCode() 메서드는 객체의 name과 age 필드를 기반으로 해시 코드를 생성
    Objects.hash() 메서드를 사용하여 해시 코드를 생성하며, 필드 값을 포함하여 해시 코드를 생성
  • equals()와 hashCode() 메서드를 오버라이딩하여 동등성 비교와 해시 기능을 구현

System

  • 프로그램 종료, 키보드 입출력, 모니터 출력, 메모리 정리, 현재시간 읽기 등의 기능
  • System 클래스의 모든 멤버는 static으로 구성 (System.~)
    ex) System.out.println(); - out이라는 변수 사용

exit()

  • 프로세스 강제 종료
  • 정상 종료 매개값: 0
  • 비정상 종료 매개값: 0이외의 다른 값

currenTimeMillis()

  • 현재 시간을 읽어서 밀리센컨드(1/1000초)단위와 나노세컨드(1/10^9초)단위의 long값 리턴
    1초 = 1000
  • 프로그램 실행 소요 시간 측정으로 성능을 테스트할 때 사용

SystemEx

package api.lang.system;

public class SystemEx {

	public static void main(String[] args) {
		
		System.out.println("출력");

//		System.exit(0);
//		System.gc();
		
		long start = System.currentTimeMillis();
//		System.out.println(start); // 1970/1/1이후의 현재까지의 지나온 시간을 밀리초로 나타낸 것
		
		long sum = 0;
		for(long i = 1; i <= 10000000000L; i++) {
			sum += i;
		}
		
		long end = System.currentTimeMillis();
//		System.out.println(end);
		
		System.out.println((end - start) * 0.001(밀리세컨드 단위이므로) + "초 소요됨");
	}
}
  • long start, long end 변수 설정해주고 마지막에 (end - start) * 0.001
  • start, end 사이 실행할 코드 적기 - 실행시간 확인 목적
    100억까지 합계를 구하는 for 반복문 수행 실시
    or Thread.sleep(5000); - 약 5초 정도 출력

getProperty()

  • JVM시작시 자동 설정되는 시스템의 속성값 구함

gc()

  • 가비지 컬렉터 실행

String - 문자열

생성자를 사용해서 객체를 만들 필요 없이 바로 초기화해서 사용 가능

String 클래스의 주요 메서드

메서드 이름 내용 기타
charAt() 특정 인덱스의 글자를 리턴 char - char
indexOf() 특정 문자열의 시작 인덱스 값을 반환 주어진 문자열이 포함되어 있지 않으면 -1 을 리턴
lastIndexOf() 문자열 내에서 searchValue가 마지막으로 등장하는 인덱스 포함되어 있지 않으면 -1 을 리턴, 대소문자 구분,
탐색한 문자열의 시작점만 반환
length() 문자열의 길이  
replace() 특정 문자열 변경 CharSequence target: String타입 문자열을 입력가능
  원본 문자는 안 바뀜
바꾸려면 s = s.replace("길", "");
replaceAll() 정규표현식 사용가능
replaceAll(정규식 또는 기존문자, 대체문자)
substring() 인덱스를 기준으로 그 앞의 문자열을 자름
원하는 위치만큼
만약 매개값으로 인덱스를 2개 주면 처음 매개값 이상 두 번째 매개값 미만의 문자열을 제외하고 나머지를 삭제
toUpperCase() 문자열 대문자로 치환  
toLowerCase() 문자열 소문자로 치환  
trim() 문자열의 앞, 뒤 공백을 제거 말그대로 지우기
equals() 문자열의 값 비교 대소 비교
valueOf() 기본 데이터 타입의 값 → 문자열로 변환 숫자 → 문자 변경
toString() 문자열을 그대로 반환  
split(" ") 특정 문자열 기준으로 잘라서 배열에 리턴 분배: 문자열을 쪼개서 배열에 담아줌
split
(String regex, int limit)
limit - 배열의 길이 제한 limit > 0 : 길이의 제한, 뒷 부분 분리x
limit < 0 : 빈 값도 포함
split(s, -1) : 마지막에 오는 빈 문자열도 포함하도록
StringTokenizer vs split : 빈 값을 무시하고 처리 vs limit을 주면 빈값도 처리되나 제한값을 알아야 함
compareTo(b)
compareToIgnorecase
(대소문자 무시)
문자열 비교, 문자열과 사전순서로 비교
앞이 더 크면 = 양수 / 내림차순
앞이 더 작으면 = 음수 / 오름차순
같다 = 0
contains(b) 2개의 String 비교해서 true, false  
concat(b) 문자와 문자 결합  
format( "%d", a ) 서식화된 문자열 반환  
replaceFirst( a, b ) 처음 만나는 a를 b로 바꿔서 출력  
startsWith( b ) 지정한 문자로 시작하는지 판단 - t/f 대소 구별
endsWith( b ) 지정한 문자로 끝나는지 판단 - t/f 대소 구별 (코딩테스트)

정규표현식 참고

https://boilerplate.tistory.com/53

 

자바 정규식을 이용한 문자열 추출

자바에서 문자열에서 특정 조건에 따라 배열로 변환하는 방법에 대해서 알아보겠습니다. 주로 split() 함수를 사용하게 되는데요, 하나의 특정 문자열 기준으로 추출하는 방법은 쉽습니다. // 콤

boilerplate.tistory.com

더보기

StringEx

package api.lang.string;

import java.util.Arrays;

public class StringEx {

	public static void main(String[] args) {
		
		String s = "홍길동";
		
		char a = s.charAt(0);
		System.out.println(a);
		
//		길 문자를 찾으면 위치반환, 못찾으면 -1반환
		int index = s.indexOf("길");
		System.out.println("길 시작위치: " + index);
		
//		replace - 원본문자는 유지
//		s = s.replace("길", ""); 이렇게하면 원본문자 바뀜
		String result = s.replace("길", "");
		System.out.println("결과: "+ result);
		
		System.out.println("원본문자열: " + s);
		
//		subString - 인덱스 기준으로 절삭, 추출
		String s2 = "오늘은 날씨가 추워요";
		String result2 = s2.substring(4);
		System.out.println("결과: " + result2); // 4미만 절삭
	
		String result3 = s2.substring(4, 7);
		System.out.println(result3); // 4이상 7미만 추출
	
//		trim - 앞뒤공백제거
		System.out.println("      홍길동".trim()    );
		
//		split - 문자열 자르기
		String[] result4 = s2.split(" ");
		System.out.println(Arrays.toString(result4)); // [오늘은, 날씨가, 추워요]
		
//		split - 매개변수 2개 주면 배열의 크기 제한
		String[] result5 = "010-1234-5678".split("-", 2);
		System.out.println(Arrays.toString(result5)); // [010, 1234-5678]
		
//		contains - 문자열 포함여부
		if(s.contains("홍")) {
			System.out.println("홍 이 포함됨");
		}
		
//		String.valueOf - 기본값 → 문자열 변환
		String result6 = String.copyValueOf(new char[] {'a', 'b', 'c'}); // 변수 안주고, 매개변수에 배열 요소를 {}에 적음
		System.out.println(result6); // abc
		
		String result7 = String.valueOf(2);
		System.out.println("문자열 바뀐 결과: " + result7 + 3); // 23
		
	}
}

replaceAll

package main.java;

public class test2 {

    public static void main(String[] args) {

        String  str = "자동차 가격은 300,000,000원 입니다.";
        str = str.replaceAll("[0-9]", "A");
        System.out.println(str); // 결과 : 자동차 가격은 AAA,AAA,AAA원 입니다.

	String str2 = "자동차 가격은 300,000,000원 입니다.";
        str2 = str2.replaceAll("자동차", "CAR");
        System.out.println(str2); // 결과 : CAR 가격은 300,000,000원 입니다.
    }
}

출처 - https://lnsideout.tistory.com/entry/JAVA-%EC%9E%90%EB%B0%94-%EB%AC%B8%EC%9E%90%EC%97%B4-%EC%B9%98%ED%99%98-%EB%B0%A9%EB%B2%95-raplace-replaceAll-%EC%B0%A8%EC%9D%B4%EC%A0%90

StringBuilder

  • String의 단점을 보완
    String객체는 데이터에 변화가 생기면 기존 객체를 재활용하지 않고, 새로운 객체 생성 → 메모리 과소비
  • 새로운 객체 생성 시 속도가 느려지는 현상 발생 측면에서 개선된 클래스 → 기존 객체 재활용, 속도 ↑
  • StringBuilder sb = new StringBuilder(" "); 객체 만들고 시작

StringBuilder 클래스의 주요 메서드

메서드 내용 기타
append() 기존 문자열의 뒤에 문자열 추가 마지막에 추가
insert() 특정 위치에 문자열 추가 중간에 추가
delete() 문자열 삭제  
deleteCharAt() 특정 인덱스의 문자 하나를 삭제  
replace() 문자열의 일부분 → 다른 문자열로 대체 " " → "" 공백제거
setCharAt() 문자열에서 주어진 index의 문자 → 다른 문자로 대체  
toString() 객체의 값을 문자열로 반환  
reverse() 문자열을 거꾸로 뒤집음  

더보기

StringTest

package api.lang.sb;

public class StringTest {

	public static void main(String[] args) {
		
		long start = System.currentTimeMillis();
		
//		String str = "";
//		for(int i = 1; i < 300000; i++) {
//			str += "A"; // 대략 10초쯤 걸림
//		} 
		StringBuilder sb = new StringBuilder("");
		for(int i = 1; i < 3000000; i++) {
			sb.append("A"); // 실행하자마자 바로 나옴
		}
		
		long end = System.currentTimeMillis();
		
		System.out.println((end - start) * 0.001);
	}
}

StrBufferEx

package api.lang.sb;

public class StrBufferEx {

	public static void main(String[] args) {
		
		String str = new String("Java");
		
		StringBuffer sb = new StringBuffer("Java");
		
		System.out.println(str);
		System.out.println(sb);
		
		str = str += "Program"; // 문자열
		sb.append("Program"); // 버퍼클래스 void형 문자열 그냥 붙이기만함
	
		System.out.println(str);
		System.out.println(sb);
		
//		문자열 마지막에 추가
		sb.append("기존 문자열을 마지막에 추가");
		System.out.println(sb);
        
 -----> append()로 기존 문자열 뒤에 추가 했으므로 sb는 바뀐 문자열로 출력
		
//		중간에 추가
		sb.insert(11, "-");
		System.out.println(sb);
		
//		문자열 변경
		sb.replace(0, 4, "자바");
		System.out.println(sb);
		
//		문자열 삭제
		sb.delete(0, 2);
		System.out.println(sb);
		
//		문자열로 형변환
//		System.out.println(str.equals(sb));
		String result = sb.toString();
		
//		거꾸로
		sb.reverse();
		System.out.println(sb);
	}
}

--------------------------------출력----------------------------
Java
Java
JavaProgram
JavaProgram
JavaProgram기존 문자열을 마지막에 추가
JavaProgram-기존 문자열을 마지막에 추가
자바Program-기존 문자열을 마지막에 추가
Program-기존 문자열을 마지막에 추가
가추 에막지마 을열자문 존기-margorP

Quiz17 - Validation1

/* 문제1
	 * 주민번호 검증메서드 masking(String)
	 * 마스킹 메서드는 주민번호값이 매개변수로 들어올 때
	 * 950101-*******로 마스킹 처리하여 리턴하는 static메서드를 만들어주세요.
	 * 
	 * 1. 문제의 간소화를 위해 생년월일은 정상범위라고 가정합니다.
	 * 2. 13자리가 아니거나, 남,여(1,2,3,4) 가 아니라면 throws처리합니다.
	 * 3. 주민번호는 - 를 포함해서 받을 수 있습니다.
	 * 4. 남, 여에 대한 정보를 출력해줍니다.
	 *  
	 * masking메서드를 만들어주세요 
	 * 검증데이터 950101-1000000 -> 남자
	 * 검증데이터 9501012000000 -> 여자
	 * 검증데이터 950101-5000000 -> 예외
	 * 검증데이터 9501015000000 -> 예외
	 * 검증데이터 950101511111 -> 예외
	 */

Validation_ 선생님풀이

package quiz17;

import java.nio.file.attribute.AclEntry;
import java.util.Arrays;

public class Validation_teacher {

	public static void main(String[] args) {
		
		Validation_teacher v = new Validation_teacher(); 
		
		try {
			System.out.println(v.masking("950101-1234567"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	} // main의 끝
	
	
	public static String masking(String s) throws Exception {
			
		s = s.replace("-","");

//		남자, 여자 출력		
		if(s.length() != 13) {
			throw new Exception();
		} else {
			switch (s.charAt(6)) {
			case '1' :
			case '3' :
				System.out.println("남자");
				break;
			case '2' :
			case '4' :
				System.out.println("여자");
				break;
			default :
				throw new Exception(); //1~4가 아닌 다른 값
			}
			
		}
		return s.substring(0,6) + "-" + "*".repeat(7);
		
	}
}

 

  • public static String masking 메서드 생성 후 매개변수는 String으로 주민번호 값이 들어옴
  • 예외가 일어나면 통으로 메서드 종료되는 throw Exception으로 예외 떠넘기기
  • 주민번호는 "-" 포함해서 받기 때문에 replace로 없애주기
  • if 조건문: 길이가 13이 아니면 예외
    switch문: charAt()으로 인덱스 6번째 숫자가 1,3 = 남자 / 2,4 = 여자 이외의 다른값은 예외
  • masking 메서드 리턴값: substring으로 앞에서 6번째까지 제외하고 뒷부분 삭제, " * " 7번 반복 ("*".repeat(7);)

Validation_ 내 풀이

더보기
package quiz17;

import java.nio.file.attribute.AclEntry;
import java.util.Arrays;

public class Validation {
	/* 문제1
	 * 주민번호 검증메서드 masking(String)
	 * 마스킹 메서드는 주민번호값이 매개변수로 들어올 때
	 * 950101-*******로 마스킹 처리하여 리턴하는 static메서드를 만들어주세요.
	 * 
	 * 1. 문제의 간소화를 위해 생년월일은 정상범위라고 가정합니다.
	 * 2. 13자리가 아니거나, 남,여(1,2,3,4) 가 아니라면 throws처리합니다.
	 * 3. 주민번호는 - 를 포함해서 받을 수 있습니다.
	 * 4. 남, 여에 대한 정보를 출력해줍니다.
	 *  
	 * masking메서드를 만들어주세요 
	 * 검증데이터 950101-1000000 -> 남자
	 * 검증데이터 9501012000000 -> 여자
	 * 검증데이터 950101-5000000 -> 예외
	 * 검증데이터 9501015000000 -> 예외
	 * 검증데이터 950101511111 -> 예외
	 */
	
	public static void main(String[] args) {
		
		Validation v = new Validation(); 
		
		try {
			v.masking("950101-1234567");
		} catch (Exception e) {
			e.printStackTrace();
		}
	} // main의 끝
	
	
	public static void masking(String s) throws Exception {
			
		String result = s.substring(7, 14);

		String result2 = s.replace(result, "*******");
		System.out.println(result2);

		char a = s.replace("-", "").charAt(6);

//		남자, 여자 출력		
		if((s.replace("-","").length() == 13) && (a == '1' || a == '3')) {
			System.out.println("남자");	
		} else if ((s.replace("-","").length() == 13) && (a == '2' || a == '4')) {
			System.out.println("여자");
		}

//		오류 출력
		if (s.replace("-","").length() != 13) {
			throw new Exception("숫자 개수 맞춰주세요");
		} else if (a != '1' && a != '2' && a != '3' && a != '4')
			throw new Exception("잘못 입력");
	}
		
}
  • replace를 이용하여 주민번호 뒷자리를 *******로 바꿈
  • 문자형 변수 a는 -를 제외하고, 인덱스 6번 = 뒷자리 중 첫번째 문자
  • if 조건문을 사용하여 남자, 여자 출력
  • if 조건문을 사용한 예외 처리

Validation2_ 선생님풀이

package quiz17;

 

  • 선생님 풀이 모름

Validation2_ 내 풀이

더보기
package quiz17;

public class Validation2 {
	 /* 문제2
		1. String palindromeCheck(String)함수는 매개변수로 String 값을 받아, 회문 여부를 검사하는 static 메서드입니다.
		2. 회문: 똑바로 읽으나 거꾸로 읽으나 똑같은 단어나 문장.
		3. ex) 다시 합창 합시다, 다 같은 것은 같다, 아 좋다 좋아 등
		4. 문장은 공백을 포함하여 받을 수 있습니다.
		5. 회문이라면 "회문입니다", 아니라면 "회문이 아닙니다" 를 리턴합니다.
		6. 힌트)
		* 함수를 이용하여 공백을 제거하세요. 힌트: replace() 
		* 문장의 길이의 중간값을 구하세요. 
		* 첫문장과, 마지막문장을 비교하며 중간으로 이동
		* for문에서 charAt()을 사용해서 반대로 잘라 붙이세요. (or 빌더를 이용 하여 문자를 뒤집어 비교)
	*/
	
	public static void main(String[] args) {
		
		Validation2 val = new Validation2();
		System.out.println(val.palindromeCheck("다 같은 것은 같다"));
		
	} // main의 끝
	
	
	public static String palindromeCheck(String word) {
		
		String b = word.replace(" ", "");
		int mid = b.length() / 2;
//		System.out.println(mid);
		int end = b.length()-1;
		
		char[] arr = b.toCharArray();
		String answer = "회문입니다";
	
		for(int i = 0 ; i < mid; i++) {
			if(arr[i] != arr[end]) {
				answer = "회문이 아닙니다";
				break;
			} 
			end--;
		}
		return answer;
	}
	
//	  검색) stringBuilder의 reverse() 사용
//	  public static void Solution(String str){
//        // 대소문자 구분하지 않기 위함
//        str = str.toLowerCase(Locale.ROOT);
//
//        StringBuilder builder = new StringBuilder(str).reverse();
//        if(builder.toString().equals(str)){
//            System.out.println("YES");
//        }else{
//            System.out.println("NO");
//        }
//	main에서
//	Scanner in=new Scanner(System.in);
//	String input = in.next();
//	
//	Solution(input);
	
}

Math - 수학관련

  • 수학계산에 사용할 수 있는 메서드
  • 모두 static 메서드 → Math. 으로 사용 가능

Math 클래스의 주요 메서드

메서드 내용 기타
abs() 절대값  
ceil() 소수점 올림, 정수 반환  
floor() 소수점 내림, 정수 반환  
round() 소수점 반올림값  
max() 수를 비교하여 최대값  
main() 수를 비교하여 최소값  
random() 랜덤값  0.0 <= 값 < 1.0
rint() 가장 가까운 정수를 실수 형태로 만듦  
더보기

MathEx

package api.lang.math;

public class MathEx {

	public static void main(String[] args) {
		
//		Math m = new Math(); 객체 생성 X

//		올림
		double up = Math.ceil(1.3);
		System.out.println(up);
		
//		내림
		double down = Math.floor(1.2);
		System.out.println(down);
	
//		반올림
		double r = Math.round(3.14);
		System.out.println(r);
		
//		루트값
		double sqrt = Math.sqrt(16);
		System.out.println(sqrt);
		
//		절대값
		double abs = Math.abs(-4);
		System.out.println(abs);
		
//		큰 값
		int max = Math.max(5, 3);
		System.out.println(max);
	}
}
----------------------출력-------------------
2.0
1.0
3.0
4.0
4.0
5

Wrapper (중요)

  • 기본 타입의 값을 갖는 객체(포장 객체)
    기본 타입의 값을 객체 내부에 두고 포장하기 때문
  • 원래 기본타입은 객체 X, .(점) 찍어서 나타낼 수 X → 포장 객체로 만들면 객체 생성 O, 점 찍어서 사용 가능
Wrapper 클래스
Byte, Short, Integer(int), Long, Float, Double, Boolean, Character(char)

Integer.toString() - 정수값을 10진수 문자열로 변환

boxing & unboxing

더보기

Boxing

package api.lang.wrapper;

public class Boxing {

	public static void main(String[] args) {
		
		int a = 100;
		double b = 3.14;
		long c = 200L;
		
//		기본형 → 객체형 포장하는 작업을 boxing
		Integer val = new Integer(a);
		Double val2 = new Double(b);
		Long val3 = new Long(c);
		
		System.out.println(val); // 원래는 주소가 나오는데 이렇게하면 값이 나옴
		
		Object[] arr = { val, val2, val3 }; //객체형 변수를 Object 배열에 저장
		
//		객체형 → 기본형으로 변경하는 작업 unboxing
		int a1 = val.intValue();
		double b1 = val2.doubleValue();
		long c1 = val3.longValue();
	
	}
}

Autoboxing

package api.lang.wrapper;

public class Autoboxing {

	public static void main(String[] args) {
		
//		Autoboxing → 자동형변환
		int a = 100;
		Integer val = a;
		a = val;

		Object[] arr = { 1, 2, 3 }; // 상호형변환이 되면서 이게 가능해짐
		
		int v1 = Integer.parseInt("3");
		int v2 = Integer.parseInt("34");
		double v3 = Double.parseDouble("3.14");
		long v4 = Long.parseLong("12323423454654");
		
		System.out.println(v1 + v2 + v3 + v4);
		
	}
}

오늘 하루

더보기

기억에 남는 부분

- 메서드 모형 읽는법

- replace사용법!!!

 

어려운 부분

- String 문자열 사용하는 부분, 어떻게 해야 효율적으로 사용할지 잘 모르겠음

- Wrapper의 boxing, unboxing 완벽 이해는 못 한 듯

 

문제 해결 부분

- quiz17 Validation: 선생님처럼 정확하게는 못 풀었지만 substring, replace, charAt 사용해서 출력은 함

                               예외의 던지기도 사용

 

728x90
profile

원지의 개발

@원지다

250x250