1차원 배열 선언

정수형 : 0, 실수형 : 0.0, 객체형 : NULL 로 자동 초기화

  • 자료형[] 배열명 = new 자료형[개수]
  • 자료형 배열명[] = new 자료형[개수]

1차원 배열 초기화

  • 자료형[] 배열명 = new 자료형[] {~, ~, ~}
  • 자료형[] 배열명 = {~, ~, ~}

다차원 배열 선언

  • 자료형[][] 배열명 = new 자료형[개수][개수]

다차원 배열 초기화

  • 자료형[][] 배열명 = new 자료형[][] {~, ~, ~,{~, ~}}

배열 활용 향상된 for문

Book library[] = new Book[5];

library[0] = new Book("태백산맥1", "조정래");
library[1] = new Book("태백산맥2", "조정래");
library[2] = new Book("태백산맥3", "조정래");
library[3] = new Book("태백산맥4", "조정래");
library[4] = new Book("태백산맥5", "조정래");

//기본 for문
/*for(int i = 0; i < library.length; i++){
//            System.out.println(library[i]);
    library[i].showBookInfo();
}*/

//향상된 for문
for(Book book : library){
    book.showBookInfo();
}

ArrayList 클래스

자바에서 제공하는 객체 배열을 더 쉽게 사용하기 위한 클래스

  • 배열 길이 선언 후 요소를 더 추가하게 되면, 길이를 수정해줘야 하는 불편함 해소
  • 배열 중간에 추가 요소를 삽입 가능 기능 제공
  • 편리한 메소드 제공
public static void main(String[] args) {
  ArrayList<String> list = new ArrayList<String>();
  list.add("a");
  list.add("b");
  list.add("c");
  for(int i = 0; i < list.size(); i++){
      //ArrayList는 index 제공 X
      //.get() 사용
      System.out.println(list.get(i));
  }

  ArrayList<Book> library = new ArrayList<Book>();
  library.add(new Book("태백산맥1", "조정래"));
  library.add(new Book("태백산맥2", "조정래"));
  library.add(new Book("태백산맥3", "조정래"));
  for(Book book:library){
      book.showBookInfo();
  }
}

 

'JAVA' 카테고리의 다른 글

this, static  (0) 2022.11.26
객체지향-생성자, 접근제어자  (0) 2022.11.26
클래스, 인스턴스  (0) 2022.11.26
자바프로그래밍 시작하기  (0) 2022.11.26

this

  • 자기 자신의 메모리를 카리킴(this를 리턴하면 주소값 출력 = 인스턴스와 this 가 동일)
MyDate mydate = new MyDate();

public MyDate(int day){
	this.day = day;
}

>>> this.day = mydate.day 역할을 한다
  • 생성자 오버로딩 : 다른 생성자를 생성 이 전에 해당 생성자의 다른 메소드 호출, 변수 초기화 등은 불가능. this 로 생성자 오버로딩 이후에는 가능
public Person() {
  this("이름없음", "주소없음");
}
  • 자기 자신을 반환할 때
public Person showResult(){
    return this;
}
>>> 인스턴스와 동일한 역할로, 주소값 반환

static

다양한 인스턴스가 공유할 변수의 타입 (↔ 인스턴스 변수 : 인스턴스 별 가지고 있는 변수)

  • 객체 생성할 필요 없이 사용 가능
  • 인스턴스 생성과 상관 없이 클래스가 메모리에 로드될 때 생성
  • static 메소드에서는 인스턴스 변수를 사용할 수 없다(인스턴스 변수는 객체가 생성될 때 생성되기 때문)
package staticex;

public class Card {
    static int serialNum = 1000;
    int cardNumber;

    public Card() {
        serialNum++;
        cardNumber = serialNum;
    }
}
package staticex;

public class CardTest {
    public static void main(String[] args) {

        System.out.println(Card.serialNum);

        Card cardLee = new Card();
        System.out.println(cardLee.cardNumber);

        Card cardKim = new Card();
        System.out.println(cardKim .cardNumber);

        System.out.println(cardLee.serialNum);
        System.out.println(cardKim.serialNum);
    }
}

 

'JAVA' 카테고리의 다른 글

Array, ArrayList  (0) 2022.11.26
객체지향-생성자, 접근제어자  (0) 2022.11.26
클래스, 인스턴스  (0) 2022.11.26
자바프로그래밍 시작하기  (0) 2022.11.26

생성자

클래스를 인스턴스로 만들 때 호출

Person person1 = new Person(); // Person() > 생성자
  • 클래스 내부에 생성자를 구현 안해도, 컴파일러가 자동으로 기본생성자를 구현(1개 클래스에 1개 이상 생성자)
  • public Person(){} //기본생성자
  • 생성자명 = 클래스명
  • 메서드가 아니고, 객체를 생성할 때만 호출
  • 상속 불가능, return 없음
  • 접근제어자 클래스명 ([[매개변수]) { 초기화 할 로직 }

생성자 example

package classexample;

public class Person {

    int height;
    int weight;
    String name;

    public Person() {}

    public Person(String pName) {
        name = pName;
    }

    public Person(int pHeight, int pWeight, String pName) {
        height = pHeight;
        weight = pWeight;
        name = pName;
    }

    public String showPersonInfo(){
         return name + "," + height + "," + weight;
    }
}
package classexample;

public class PersonTest {
    public static void main(String[] args) {
        Person personLee = new Person();
        personLee.height = 180;
        personLee.weight = 80;
        personLee.name = "이정하";
        System.out.println(personLee.showPersonInfo());

        Person personKim = new Person("김정은");
        personKim.height = 160;
        personKim.weight = 50;
        System.out.println(personKim.showPersonInfo());

        Person personPark = new Person(170, 90, "박은정");
        System.out.println(personPark.showPersonInfo());

        System.out.println(personLee);
        System.out.println(personKim);
        System.out.println(personPark);

    }
}

접근제어자

  • public : 외부 모든 클래스에서 접근 가능
  • default(default 값) : 동일 패키지 내 접근 가능
  • private : 현재 클래스 내에서만 사용 가능(이외 어떤 외부 클래스 접근 불가능) = 정보은닉 구현
  • protected : 다른 패키지의 하위 클래스까지 가능

정보은닉

private 접근제어자로 객체 생성 시 정보를 감추는 것

  • 정보은닉 구현된 변수에 값을 넣는 방법 생성자에서 매개변수 넘겨서 매개변수를 통해 초기화
  • 외부에서 변경 및 조회는 별도 메서드 구현으로 가능(getter, setter)→ 중요 변수들을 외부에서 조작할 수 없도록 한다
  • → 세부 내용/로직을 내부적으로 조작할 수 있다

'JAVA' 카테고리의 다른 글

Array, ArrayList  (0) 2022.11.26
this, static  (0) 2022.11.26
클래스, 인스턴스  (0) 2022.11.26
자바프로그래밍 시작하기  (0) 2022.11.26

변수

  • 기본 자료형 : boolean, int, byte, float …
  • 참조 자료형 :
    • JDK 제공 클래스 : String …
    • 직접 구현 클래스로 선언된 변수

클래스

객체지향프로그래밍의 가장 기본 단위, 하나의 객체를 표현하는 단위

  • 멤버변수(속성, property), 메서드로 구성
    • 멤버변수 : 클래스로 선언한 변수 > [접근제어자] 자료형 변수명;
    • 메서드 : 접근제어자 리턴타입 메서드명(){}
  • 이름은 대문자로 시작(패키지명은 소문자)
  • 1개 java 파일에 1개 클래스가 원칙 예외) 여러개 클래스 필요 시, public 클래스는 단 한 개만 존재(클래스명은 파일명과 일치)
  • java 모든 코드는 클래스 내부에 존재
  • 클래스를 사용하기 위해서는 생성자 활용

public void vs public static void

  • static : 특정 인스턴스 (객체)가 아니라 클래스와 연결되어 있음을 의미, 클래스의 객체를 만들지 않고 정적 메서드 자체로 호출

클래스가 지원하는 OOP(객체지향 프로그래밍) 특성

  • 캡슐화
  • 상속
  • 다형성

인스턴스

클래스를 new 로 생성해서 만든 것 (static → dynamic)

용어 정리

  • 클래스 : 객체를 프로그래밍 하기 위해 코드로 만든 상태
  • 인스턴스 : 클래스가 메모링 생성된 상태
  • 객체 : 생성된 인스턴스, 객체지향 프로그램의 대상
  • 멤버변수 : 클래스의 속성, 특성
  • 메서드 : 멤버변수로 클래스 기능을 구현
  • 참조변수 : 메모리에 생성된 인스턴스를 가리키는 변수
  • 참조값 : 생성된 인스턴스의 메모리 주소값

'JAVA' 카테고리의 다른 글

Array, ArrayList  (0) 2022.11.26
this, static  (0) 2022.11.26
객체지향-생성자, 접근제어자  (0) 2022.11.26
자바프로그래밍 시작하기  (0) 2022.11.26
  • Java Code(.java) > javac 컴파일러 (=JDK) > Java Code(.class)
  • .java 저장 시 자동으로 컴파일 수행(.class 가 .java 와 동일한 경로로 생성)
  • Java Code(.class) 만으로는 바로 실행 불가 JVM 위에서 실행 가능(자바 작동 위한 필수 환경)

  • C언어는 os마다 컴파일러, 실행파일이 다른데 java는 동일하다는 특징 → java : 디바이스에 독립적이라는 장점

java 기본 세팅

  • JDK : 기본 클래스 포함된 java 라이브러리 (컴파일러 포함)
  • JRE : java 가상 머신 (실행 시키기 위해 필요, JVM 포함)

'JAVA' 카테고리의 다른 글

Array, ArrayList  (0) 2022.11.26
this, static  (0) 2022.11.26
객체지향-생성자, 접근제어자  (0) 2022.11.26
클래스, 인스턴스  (0) 2022.11.26

+ Recent posts