[계산] package Override; class Person1 { String name; public Person1(String name) { this.name = name; } public boolean equals(Object obj) { if (obj instanceof Person1) { Person1 person = (Person1) obj; if (this.name.equals(person.name)) return true; } return false; } } public class Test57 { public static void main(String[] args) { Person1 p1 = new Person1("홍길동"); System.out.println(p1.equals(new Person1("홍길동"))); // true System.out.println(p1.equals(new Person1("최명태"))); // false } }
[결과값] true false
[계산] package Override; //제네릭 문법에서 쓰임 //한마디로 primitive type이 아닌 객체(래퍼클래스)데이터 타입으로 선언해야 할때가 있음 public class WrapperClassUnBoxing { public static void main(String[] args) { Integer iObj = 10; // 오토 박싱 진행 Double dObj = 3.14; // 오토 박싱 진행 int num1 = iObj.intValue(); // 오토 언박싱 진행 double num2 = dObj.doubleValue(); // 오토 언박싱 진행 System.out.println(iObj); System.out.println(dObj); System.out.println(); System.out.println(num1); System.out.println(num2); System.out.println(); } }
[결과값] 10 3.14 10 3.14
[계산] //valueOf = 오버로딩 : 같은 함수 이름으로 타입 또는 파라미터 개수를 달리함. package Override; public class WrapperClassBoxing3 { public static void main(String[] args) { // 클래스 메소드를 통한 인스턴스 생성 방법 두 가지 // static 함수들이다. Integer n1 = Integer.valueOf(5); // 숫자 기반 Integer 인스턴스 생성 Integer n2 = Integer.valueOf("1024"); // 문자열 기반 Integer 인스턴스 생성 // Integer.valueOf("1024"); → 문자열을 숫자 int형으로 바꿔준다. // String str = String.valueOf(n2); // int를 String으로 바꿔준다. // 대소 비교와 합을 계산하는 클래스 메소드 System.out.println("큰 수: " + Integer.max(n1, n2)); System.out.println("작은 수: " + Integer.min(n1, n2)); System.out.println("합: " + Integer.sum(n1, n2)); System.out.println(); // 정수에 대한 2진, 8진 16진수 표현 결과를 반환하는 클래스 메소드 System.out.println("12의 2진 표현: " + Integer.toBinaryString(12)); System.out.println("12의 8진 표현: " + Integer.toOctalString(12)); System.out.println("12의 16진 표현: " + Integer.toHexString(12)); } }
[결과값] 큰 수: 1024 작은 수: 5 합: 1029 12의 2진 표현: 1100 12의 8진 표현: 14 12의 16진 표현: c
[계산] package Override; import java.math.BigInteger; public class BigIntegerTest { public static void main(String[] args) { // long 형으로 표현 가능한 값의 크기 출력 System.out.println("최대 정수: " + Long.MAX_VALUE); // Long : Wrapper class 이다. 각각의 기본형을 객체로 만들어 놓은 것 // .MAX_VALUE : class 이름.으로 들어가서 static으로 선언된 변수이다. (함수 아니다) // Long 타입의 MAX_VALUE System.out.println("최소 정수: " + Long.MIN_VALUE); System.out.println(); // 매우 큰 수를 BigInteger 인스턴스로 표현 BigInteger big1 = new BigInteger("100000000000000000000"); BigInteger big2 = new BigInteger("-99999999999999999999"); // BigInteger 기반 덧셈 연산 BigInteger r1 = big1.add(big2); System.out.println("덧셈 결과: " + r1); // BigInteger 기반 곱셈 연산 BigInteger r2 = big1.multiply(big2); System.out.println("곱셈 결과: " + r2); System.out.println(); // 인스턴스에 저장된 값을 int형 정수로 반환 int num = r1.intValueExact(); System.out.println("From BigInteger: " + num); } }
[계산] package Override; import java.math.BigDecimal; // 실수는 오차가 있다. // 오차 없는 실수를 사용하기 위해선 BigDecimal을 사용하면 된다. public class BigDecimalTest { public static void main(String[] args) { BigDecimal d1 = new BigDecimal("1.6"); BigDecimal d2 = new BigDecimal("0.1"); System.out.println("덧셈 결과: " + d1.add(d2)); System.out.println("곱셈 결과: " + d1.multiply(d2)); // 덧셈 : public BigDecimal add(BigDecimal augend) // 뺄셈 : public BigDecimal subtract(BigDecimal subtrahend) // 곱셈 : public BigDecimal multiply(BigDecimal multiplicand) // 나눗셈 : public BigDecimal divide(BigDecimal divisor) } }
[결과값] 덧셈 결과: 1.7 곱셈 결과: 0.16
[계산] package Override; import java.math.BigDecimal; public class MathClass { public static void main(String[] args) { System.out.println("원주율: " + Math.PI); System.out.println("2의 제곱근: " + Math.sqrt(2)); // 루트 System.out.println(); System.out.println("파이에 대한 Degree: " + Math.toDegrees(Math.PI)); System.out.println("2 파이에 대한 Degree: " + Math.toDegrees(2.0 * Math.PI)); System.out.println(); double radian45 = Math.toRadians(45); // 라디안으로의 변환! System.out.println("싸인 45: " + Math.sin(radian45)); System.out.println("코싸인 45: " + Math.cos(radian45)); System.out.println("탄젠트 45: " + Math.tan(radian45)); System.out.println(); System.out.println("로그 25: " + Math.log(25)); System.out.println("2의 16승: " + Math.pow(2, 16)); } }
[결과값] 원주율: 3.141592653589793 2의 제곱근: 1.4142135623730951 파이에 대한 Degree: 180.0 2 파이에 대한 Degree: 360.0 싸인 45: 0.7071067811865475 코싸인 45: 0.7071067811865476 탄젠트 45: 0.9999999999999999 로그 25: 3.2188758248682006 2의 16승: 65536.0
[계산] package Override; import java.util.Random; public class RandomClass { public static void main(String[] args) { Random rand = new Random(); for (int i = 0; i < 7; i++) System.out.println(rand.nextInt(1000)); } // seed : Random()안에 있는 숫자 // Random rand = new Random(12); // →seed값을 주면 계속 동일한 값을 준다. // seed값을 할당하지 않으면 랜덤으로 값이 출력된다. }
[결과값] 968 629 116 296 401 110 955
StringTokenizer : String에서 구분자를 통해서 토큰형태로 나눌 때 사용하는 클래스
hasMoreToken() : StringTokenizer에 사용할 수 있는 토큰이 더 있는지 확인
nextToken() : StringTokenizer에서 다음 토큰을 불러오는 메서드
[계산] package Override; import java.util.StringTokenizer; public class TokenTest { public static void main(String[] args) { StringTokenizer st1 = new StringTokenizer("PM:08:45", ":"); while (st1.hasMoreTokens()) System.out.print(st1.nextToken() + ' '); System.out.println(); StringTokenizer st2 = new StringTokenizer("12 + 36 - 8 / 2 = 44", "+-/="); while (st2.hasMoreTokens()) System.out.print(st2.nextToken() + ' '); System.out.println(); } }
[결과값] PM 08 45 12 36 8 2 44
[계산] package Override; import java.util.Scanner; import java.util.StringTokenizer; public class TokenTest2 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); boolean run = true; String input; try { while (run) { System.out.println("문자를 입력 해 주세요"); input = sc.nextLine(); StringTokenizer st1 = new StringTokenizer(input, " "); int count = 0; while (st1.hasMoreTokens()) { // StringTokenizer에 사용할 수 있는 토큰이 더 있는지 확인 System.out.println(st1.nextToken() + ' '); // StringTokenizer에서 다음 토큰을 불러오는 메서드 count++; } System.out.println("count " + count + "개의 단어 입니다."); System.out.println("다시 하시겠습니까(y/n)"); String yOrN = sc.nextLine(); if (yOrN.equals("y") || yOrN.equals("Y")) { continue; } else if (yOrN.equals("n") || yOrN.equals("N")) { System.out.println("종료합니다."); run = false; } else { System.out.println("error"); run = false; } } } catch (Exception e) { e.printStackTrace(); } } }
[결과값] 문자를 입력 해 주세요 무궁화 꽃이 피었습니다. 무궁화 꽃이 피었습니다. count 3개의 단어 입니다. 다시 하시겠습니까(y/n) n 종료합니다.