[Java] Arrays 클래스, Math 클래스

18571 단어 JavaJava

Math Class

난수의 생성

  • 컴퓨터를 통해 발생하는 난수를 수도 난수(가짜 난수)라 칭한다.
  • seed값을 통해 동작하는 알고리즘이 적용된 것이다.

예제

Random rand = new Random();

public boolean nextBoolean();

public int nextInt();

public int nextint(int bound); //0이상 bound 미만 범위의 int형 난수 반환

public double nextDouble();

public long nextLong();

public float nextFloat();

문자열의 토큰 구분

  • 토큰은 주민등록 번호를 예로 들 수 있다.
  • 930823-1065627
    • '-' 은 구분자를 의미한다.
    • 930823, 1065627은 토큰을 의미한다.
  • 쉽게 말해 구분자를 통해 구분된 한 덩어리를 의미한다.

StringTokenizer

  • 첫번째 인자로 문자열을 전달한다.
  • 두번째 인자로 구분자를 전달한다.
  • hasMoreTokens()을 통해 토큰의 여부를 확인 후 nextToken()를 호출한다.
  • 두번째 인자로 전달되는 인자를 둘 이상으로 둘 수 있다.
    • 공백 역시 구분자로 포함이 된다.
  • String Class의 Split()를 사용하면 되는 것 아닌가?

예제 1-1

StringTokenizer st = new StringTokenizer("PM:08:45, ":");

public boolean hasMoreTokens() //반환할 토큰이 남아있는가?

public String nextToken() //다음 토큰을 반환

예제 1-2

public String void main(String[] args){
	StringTokenizer st1 = new StringTokenizer("PM:08:45", ":");

	while(st1.**hasMoreTokens**())
		System.out.println(st1.**nextToken**() + ' ');
		System.out.println();
		
	StringTokenizer st2 = new StringTokenizer("12 + 36 - 8 / 2 = 44","+-/="); //여러개의 구분자

	while(st2.**hasMoreTokens**())
		System.out.println(st2.**nextToken**() + ' ');
		System.out.println();
}
// 출력
PM 08 45
12 36 8 2 44

Array Class의 배열 복사, 복제 Method

  • copyOf, copyOfRange복제의미가 내포되어 있다.
    • new를 선언하지 않아도 새로운 배열이 생성이 된다.
  • arrayCopy복사할 위치도 존재해야 하며 새로운 배열이 생성되지 않는다.
    • 즉, 복사의 의미가 내포되어 있다.

예제 1-1

// Method

public static int[] copyOf(int[] original, int newLength)
	-> original에 전달된 배열을 첫 번째 요소부터 newLength의 길이만큼 복사.

public static int[] copyOfRange(int[] original, int from, int to)
	-> original에 전달된 배열을 인덱스 from부터 to 이전 요소까지 복사

public static void arraycopy(Object src, int srcPos, Object dest, iny destPos, int length)
	-> 배열 src의 srcPos에서 배열 desyt의 destPos로 length 길이만큼 복사.

예제 1-2

//Arrays.copyOf

public static void main(String[] args){
	double [] arOrg = {1.1, 2.2, 3.3, 4.4, 5.5};	

	//배열 전체를 복사
	double[] arCpy1 = Arrays.**copyOf**(arOrg, arOrg.length); //첫번째 요소부터 배열의 길이만큼 복사

	//세번째 요소까지만 복사
	double[] arCpy2 = Arrays.**copyOf**(arOrg, 3); //첫번째 요소부터 3번째 요소까지 복사

	for(dobule d : arCpy1)
		System.out.println(d + "\t");
		System.out.println();

	for(dobule d : arCpy2)
		System.out.println(d + "\t");
		System.out.println();
}

예제 1-3

//System.arraycopy

public String void main(String[] args){
	double [] arOrg = {1.1, 2.2, 3.3, 4.4, 5.5};
	double [] cpy = new double[3];
	
	System.**arraycopy**(arOrg, 1, cpy, 0, 3);

	for(dobule d : cpy)
		System.out.println(d + "\t");
		System.out.println();
}

인스턴스 저장 배열의 비교

Arrays.equals

  • 위 메소드는 각 요소별 저장값을 비교해 같은 경우에만 TRUE를 반환한다.
  • Equals가 내용 비교를 하기 위해서는 Overriding이 필요하다.
    • Object Class의 equalsOverriding하지 않으면 참조 값 비교를 한다.
      • Object의 Equals - 참조값 비교
      • String Equals - 내용 비교

예제 1-1

예제 1-2

좋은 웹페이지 즐겨찾기