39일차 java 연산(2023-02-16)

권단비·2023년 2월 16일
0

IT

목록 보기
73/139

[Eclipse 연습]

[계산]
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

[매우 큰 정수 표현을 위한 java.math.BigInteger 클래스]

[계산]
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);
	}
}

[오차 없는 실수 표현 위한 BigDecimal 클래스]

[계산]
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

[수학 관련 연산 기능을 제공하는 Math 클래스]

[계산]
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

[Random 난수 생성]

[계산]
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

[Tokenizer 문자열 토큰 구분]

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
종료합니다.

0개의 댓글