StringBuffer 와 StringBuilder 클래스 / java.lang.Math 클래스

2022. 10. 6. 08:09Dev.Program/Java & Spring

728x90

p433

======== Ex3.java

< StringBuffer 와 StringBuilder 클래스 >

  • 문자열 조작이 빈번할 경우 사용하는 클래스
  • String 클래스와 아무런 관계가 없는 클래스(상속 관계 X)
  • 내부적으로 임시 저장 공간인 버퍼(Buffer)를 사용하여 문자열을 관리

⇒ 버퍼의 문자열을 직접 조작하므로 연산 과정에서 새로운 문자열 생성 X

  • toString() 메서드가 오버라이딩 되어 있기 때문에 문자열 출력 가능
  • StringBuffer 클래스는 멀티쓰레딩 환경을 지원하며 무겁고,

StringBuilder 클래스는 멀티쓰레딩 환경을 지원하지 않으며 가볍다.

  • 기본적인 사용법은 거의 유사함

 

  • Java.lang 패키지의 StringBuffer 와 StringBuilder가 보인다.

  • 객체 생성 시 문자열을 사용하여 객체를 초기화하는 경우
  • 출력창
  • 출력 시 toString() 메서드 생략 가능

> 대신 저장할 때는

이렇게 안됨

  • 저장 시 toString() 메서드 생략 불가

 

  • 아무것도 출력되지 않는다.

 

  1. append(문자열) : 문자열 추가(맨 뒤에 붙임)

  • 출력창
  • 버퍼에 문자열 추가(기존 문자열 뒤에 결합)

  • 출력창
  • .append() 버퍼에 문자열 또 추가(기존 문자열 뒤에 결합)

 

  1. insert(특정 인덱스, 삽입할 문자열) : 특정 인덱스에 문자열 삽입

  • 출력창
  • insert(특정 인덱스, 삽입할 문자열)
  • 버퍼 문자열 특정 인덱스에 문자열 삽입

append 와 insert 의 차이

append 는 맨 뒤에 붙이는 거, insert 는 원하는 index에 삽입하는 거

  1. reverse() : 문자열 반전

  • 출력창
  • 뒤집어져서 나옴! 
  • ex) 암호화 같은 거 할 때 쓰임 ( 각 문자에 -3 을 해서 reverse 해서 보내면 받은 사람은 +3으로  해독하고 뭐 이런식으로…. )

 

p436

p437 Math

======== Ex4.java

< java.lang.Math 클래스 >

  • 수학 관련 여러가지 기능을 제공하는 클래스
  • final 클래스로 상속 불가
  • 모든 멤버는 static 이므로, 클래스명만으로 접근 가능

1. Math.PI : 가장 기본적인 상수 - 3.14~

  • 가장 기본적인 상수~~ PI

2. Math.abs() : 절대값

3. Math.max(), Math.min() : 최대, 최소값

 

  • 루트 4

4. Math.sqrt(x, y) : xy(x의 y승) 계산

  • x, y 일 때 xy로 계산해줌

5. Math.round() : 반올림



======== Test4.java

Math 클래스의 활용 연습

문제 1) 실수 num 의 소수점 둘째자리 반올림 수행

double num = 3.45;

  • 푼 답
  • 출력창

풀이 단계

1) 3.45 를 34.5 로 변환하여 소수점 둘째자리 숫자를 첫째자리 숫자로 이동

2) 34.5 를 Math.round() 메서드를 통해 반올림 수행 ⇒ 35

3) 35 를 10.0 으로 나누어서 다시 3.5 로 되돌림

 

<Ex4.java>

6. Math.random() : 난수 발생

  • double 타입 범위 내의 무작위 숫자(난수) 발생시키는 메서드

범위 : 0.0 <= x < 1.0

  • 0 <= n < X 까지의 정수형 난수를 생성할 경우 : (int)(Math.random() * X)

 

  • 리턴타입(double) 확인

  • 이런식으로 난수 발생(호출할 때마다 달라짐! 랜덤!)

 

> 0 <= n < X 까지의 정수형 난수를 생성할 경우 : (int)(Math.random() * X)

  • 일단 그냥 실행해보기
  • 소수점까지 나온다.

  • int 로 형변환 해준다.
  • 출력창

  • 처음 시작 범위를 바꿔주고 싶을 땐 + n 해주기! (모르겠다면 공식처럼 외우기)
  • 5까지 나옴

 

<Test4.java>

문제2) Math.random() 메서드를 사용한 난수 생성

1) 1 ~ 45 사이의 난수 6개 생성 및 출력(중복 포함)

  • 푼 답
  • 출력창 (지금은 중복값이 나옴)

 

2) 주사위 2개를 던져 두 주사위의 합 출력

  • 주사위는 각각 int형 변수 dice1, dice2 로 선언하여 1 ~ 6 사이의 난수 저장

  • 푼 답
  • 출력창
  • 이런걸로 모두의 마블 같은 게임 만드는거~~!

 

728x90