아무튼 개발
article thumbnail
반응형
  • 내부클래스

내부클래스는 총 4가지이다.
1. 클래스 안에 클래스를 두는 이너클래스
2. 메소드 안에 클래스를 두는 로컬클래스
3. static으로 만드는 클래스(중첩)
4. 익명의 클래스인 anonymous 클래스
로 표현할 수 있다.

  • 이너클래스
class Outer {
  class Inner{

이에 따라 outer클래스 내 메소드에서 inner클래스의 객체 생성을 할 수 있다.

메인절에서 이너클래스를 나타낼 때에는
먼저 outer의 객체 먼저 생성한 뒤, -> Outer out = new Outer();
1. out.print();  //외부클래스가 갖고 있는 메소드 통해서
2. Outer.Inner in = out.new Inner();  //다이렉트로 이너클래스 부르는
2가지 방법으로 할 수 있다.

  • Local 클래스
class Outer {
  public void write() {
    class Inner {

이 경우에는 해당 메소드안에서만 객체를 생성할 수 있다.
메인절에서는 outer클래스의 write메소드를 통해 나타낸다.

  • static으로 만드는 클래스
class Outer {
  public static class Inner {
    public void write() {

static이기 때문에 자동으로 메모리 할당된다.
Outer변수 중 int b의 변수와 달리 Inner의 변수인 int c는 static차이로 인해 출력 시 c만 가능하고
b는 'new'를 통한 객체 생성을 해줘야 가능해진다.

  • 익명의 클래스
public class Test {
 public Obejct getTitle() {
  return new Object() {
   @Override
    public String toString() {
     return "익명의 클래스";
(이후 괄호 생략)

이 경우에는 return "~" 값이 String이므로 Object에게 upcast이다. 값이 더 작으니 따로 내용을 쓰지 않아도 자연스럽게 들어가는 것.
위의 new부분의 return은 객체 생성하는 이 자체가 값이다.

  • Collection Framework

배열의 단점은 크기를 정하면 변경이 불가능하다는 것이다.
배열 사이에 삽입도 불가능하며 미리 크게 잡아도 메모리의 낭비가 된다.

public static void main(String[] args) {
  Vector v = new Vector<>();

벡터의 기본데이터 타입은 Object

add는 값을 넣는 것이다

넣은 값을 찾기 위해 get을 사용하며, 벡터의 타입은 Object이지만 "서울"이라는 글자는 String타입이기 때문에 downcast를 통해 앞에 (String)을 해줌으로써 사용할 수 있다.

마찬가지로 30은 정수니까 Interger이고 'c'는 char로 활용할 수 있다.

 

코드에 있는 city 배열은 String타입일 경우에는 확장for문안에도 String타입이기 때문에 upcast가 아니다. 

add메소드로 위에서 일일이 넣어주지 않고 반복문으로 값을 넣을 수 있다.

String 외에 int와 같은 다른 타입은 넣을 수 없다. 이미 선언했기 때문에!

 

String str;
  str = v.firstElement();

firstElement: 첫번째 요소의 값을 꺼내라는 것

lastElement는 그 반대

중간 순서의 값들은 get을 통해서 꺼내준다.

 

  • Iterator 반복자

컬렉션 전용출력기로 꺼냄과 동시에 출력한다.

next메소드는 read기능으로 읽으면서 읽은 곳의 데이터를 나타낸다

 

  • Generic

컬렉션의 자료형타입으로 wrapper클래스와 같이 표시한다

Vector<@@> v = new vector<>();

@@부분을 말한다.

 

  • Vector

벡터의 초기 용량은 10이고, 늘어날 때에도 10씩 늘어난다.

데이터 갯수를 부를 때에도 length인 배열과 달리 벡터는 size로 부른다. 

 

수정)

v.set(0,"Seoul")

0번째 인덱스 값을 "Seoul"로 바꿔라

 

삽입)

insertElementAt("한국",0)

기존의 0번째 인덱스 값부터 뒤로 밀려나가고, 그 자리에 "한국" 값이 들어온다.

 

검색)

v.indexof("부산") : 부산의 인덱스 번호

 

정렬)

Collections.sort(v); : 오름차순 정렬 방식

Collections.sort(v, Collections.reverseOrder()) : 내림차순 정렬 방식

 

삭제)

v.remove(3);

또는

v.remove("서울")

괄호 안에는 인덱스 번호 혹은 객체 이름을 넣을 수 있다.

 

용량 증가)

정수인 숫자가 문자화된다. 즉 문자가 되는 것이다.

 

범위 삭제)

인덱스 5번부터 지워지며 -> 총 9번 반복하여 결과적으로 9개의 값이 지워진다.

(그만큼 뒷 순서였던 값들이 앞으로 땡겨지는 것!)

 

미사용 공간 삭제)

trimToSize

 

모든 데이터 삭제)

clear

 

trimToSize

벡터의 용량을 자동으로 늘어나지만, 줄일 땐 일일이 줄여야 한다.

반응형
profile

아무튼 개발

@릴쥬

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

profile on loading

Loading...