자료구조


  • 자료구조란 데이터 단위와 데이터 자체 사이의 물리적 또는 논리적인 관계를 말한다.
  • 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법을 말한다.

접근 제한자


  • 멤버는 객체 자신만의 속성이자 특징이므로 외부에 공개하는 것이 반드시 좋은 것은 아니다.
  • 객체의 멤버에 대한 접근을 제한할 때가 있는데, 이를 접근 제한자라고 한다.
  • 종류
    • public : 모든 접근 허용
    • protected : 같은 패키지(폴더)의 객체, 상속관계의 객체 허용
    • default : 같은 패키지(폴더)의 객체 허용
    • private : 현재의 객체 안에서만 허용
  • 사용
    • 클래스 : public, default
    • 생성자, 멤버 변수, 멤버 메서드 : 모두 사용 가능
    • 지역 변수 : 접근 제한자 사용 불가

난수


생성

  1. import java.util.Random을 기입한다.
  2. Random 클래스형의 변수 선언을 한다. Random rand = new Random(n);
    • n은 seed이며, 생략하면 자동으로 생성된다.
    • seed에 따라 난수 생성 방식이 결정된다. 즉, 생성되는 난수는 진짜 난수가 아닌 의사 난수이다.
  3. 변수 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; // 형식 A
int a[]; // 형식 B
  • 형식 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);
profile
do for me

0개의 댓글