자료구조
- 자료구조란 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계를 말한다.
- 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법을 말한다.
접근 제한자
- 멤버는 객체 자신만의 속성이자 특징이므로 외부에 공개하는 것이 반드시 좋은 것은 아니다.
- 객체의 멤버에 대한 접근을 제한할 때가 있는데, 이를 접근 제한자라고 한다.
- 종류
- public : 모든 접근 허용
- protected : 같은 패키지(폴더)의 객체, 상속관계의 객체 허용
- default : 같은 패키지(폴더)의 객체 허용
- private : 현재의 객체 안에서만 허용
- 사용
- 클래스 : public, default
- 생성자, 멤버 변수, 멤버 메서드 : 모두 사용 가능
- 지역 변수 : 접근 제한자 사용 불가
난수
생성
import java.util.Random
을 기입한다.
- Random 클래스형의 변수 선언을 한다.
Random rand = new Random(n);
- n은 seed이며, 생략하면 자동으로 생성된다.
- seed에 따라 난수 생성 방식이 결정된다. 즉, 생성되는 난수는 진짜 난수가 아닌 의사 난수이다.
- 변수 rand에 대한 난수를 생상하는
next자료형
메서드 호출한다.
- nextInt(n)은 0 ~ n-1의 정수를 랜덤으로 리턴한다.
증가 연산자
- ++a : 전위형 증가연산자. b = ++a의 경우 a에 1을 먼저 더한 후 b에 대입된다.
- a++ : 후위형 증가연산자. b = a++의 경우 b에 a를 대입한 후 a에 1을 더한다.
String 클래스
- int형, double형과 달리 문자열은 java.lang 패키지에 소속된 String 클래스이다. 즉, 필드, 생성자, 메서드를 가진다.
String s = "ABC";
에서 s는 단순히 "ABC"문자 배열을 참조하는 것이 아닌, "ABC"의 문자 배열과 문자 수 등을 가지고 있는 String형 인스턴스에 대한 참조이다.
- 대표적인 메서드
- char charAt(int i) : 인덱스가 i인 곳의 문자를 가져온다.
- int length() : 문자열의 문자 수를 가져온다.
- boolean equals(String s) : 문자열 s와 같은지 조사한다.
배열(1)
- 같은 자료형의 변수로 이루어진 구성요소가 모인 것이다.
int[] a;
int a[];
- 형식 A가 많이 사용된다.
- 구성요소의 자료형이 int형이고, 구성요소의 개수가 5개인 배열은 다음과 같이 선언한다. int형의 배열 본체를 선언한 후 변수 a가 참조하도록 설정한다는 의미이다.
a = new int[5];
- 위의 방법으로 참조하면, 배열의 구성요소는 자동으로 0으로 초기화되는 규칙이 있다.
- int a;와 같은 지역변수 선언은 초기값으로 초기화되지 않는다. 따라서 해당 변수를 사용하면 에러가 발생한다.
배열 요솟값을 초기화하면서 선언
int[] a = {1, 2, 3, 4, 5};
int[] a = new {1, 2, 3, 4, 5};
- 둘 다 가능하며, new로 명확하게 선언 가능하다.
배열의 복제
배열 이름.clone();
- 단순히 배열 a를 b에 대입하면 서로 참조관계가 형성되서 b의 요소를 변경하면 a의 요소도 변경된다.
기수 변환
- 정숫값을 임의의 기수로 변환하는 알고리즘이다.
- 원래의 정숫값을 원하는 진수로 나눈 후 나머지를 해당 진수로 변환하는 것이 핵심이다.
- 여기서는 기수를 문자열에 담아놓고 나머지를 인덱스로 사용하여 해당 문자열에 접근했다.
int x = 변환하려는 정숫값;
int r = 변환하려는 진수;
char[] d = 변환한 값을 차례로 저장하려는 배열;
int digits = 0;
String dchar = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
do {
d[digits++] = dchar.charAt(x%r);
x/=r;
} while(x != 0);