728x90
반응형
다차원 배열
일차원 배열
int[] myArray1 = {1, 2, 3, 4, 5};
char[] myArray2 = {'a', 'b', 'c', 'd', 'e'};
다차원 배열
int[][] myArray3 = {{1, 2, 3}, {4, 5, 6}};
int[][][] myArray4 = {{{1, 2}, {3, 4}}, {{5, 6}, {7, 8}}};
이차원 배열
이차원 배열의 생성 방법
int[][] myArray = {{1, 2, 3}, {4, 5, 6}}; // 생성과 동시에 초기화
int[][] myArray2 = new int[2][3]; // 배열 공간만 확보
System.out.println("[===== 다차원 배열 =====]");
// 이차원 배열 생성과 동시에 초기화
int[][] array = {{1, 2}, {3, 4}};
// 이차원 배열 생성
int[][] array1 = new int[2][2];
array1[0][0] = 1;
array1[0][1] = 2;
array1[1][0] = 3;
array1[1][1] = 4;
// 이차 출력
// for문
for (int i = 0; i < array.length; i++) { // 행의 수
for (int j = 0; j < array[i].length; j++) { // 열의 수
System.out.print(array[i][j]);
}
System.out.println();
}
// 결과
// 12
// 32
// 향상 for문 (foreach)
for (int[] ints : array1) {
for (int anInt : ints) {
System.out.print(anInt);
}
System.out.println();
}
// 결과
// 12
// 34
클래스 (class)
객체를 정의하는 설계도
붕어빵 틀
객체, 인스턴스
객체 (Object) - 실체
인스턴스 (Instance)
- 클래스와 객체의 관계
- 클래스로부터 객체를 선언 (인스턴스 화)
- 어떤 객체는 어떤 클래스의 인스턴스
클래스 사용
클래스 : 객체를 만들기 위한 설계도
- 객체 변수, 메소드로 이루어짐
public class 클래스명 {
// 객체 변수
// 메소드
// + 접근제어자
// + static
}
클래스명 객체명 = new 클래스명();
생성자(Constructor)
객체가 생성될 때 자동으로 호출됨
생성자 규칙
- 클래스명과 이름 맞추기
- 리턴 타입 없음
public class 클래스명 {
클래스명() {}
}
this, this()
this - 객체 자신을 의미
this() - 생성자
오버로딩 (Overloading)
한 클래스 내에서 같은 이름의 메소드를 여러 개 정의
오버로딩 조건
- 메소드의 이름이 같아야 함
- 매개변수의 개수 또는 타입이 달라야 함 (리턴타입의 차이로는 오버로딩이 되지 않음)
public class 클래스명 {
클래스명() {}
클래스명(String name, String type) {
구현 내용;
}
}
접근제어자
클래스의 변수나 메소드의 접근에 제한을 두는 키워드
접근제어자 종류
- private : 해당 클래스에서만 접근 가능
- public : 어디서든 접근 가능
- default : 해당 패키지 내에서만 접근 가능
- protected : 해당 패키지 및 상속받은 클래스에서 접근 가능
Static
변수나 메소드의 특성을 바꾸는 키워드
Static 특징
- 메모리에 한번만 할당됨
- 즉, Static 변수나 메소드는 공유되는 특성을 가짐
Static 클래스 변수
- 해당 클래스의 각 객체들이 값을 공유
Static 클래스 메소드
- 객체를 생성하지 않아도 호출 가능
/**
* 회원 클래스
*/
class User {
static String message = "OO회원 리스트 출력";
String name;
int age;
String email;
User() {}
User(String name, int age, String email) {
this.name = name;
this.age = age;
this.email = email;
}
/**
* 회원 정보 출력
*/
public void printUserInfo() {
System.out.println("== 회원 정보 출력 ==");
System.out.println("name = " + name);
System.out.println("age = " + age);
System.out.println("email = " + email);
}
/**
* 메시지 출력
*/
public static void printMessage() {
System.out.println(message);
}
/**
* 회원 이름 변경 후 회원 정보 출력
* @param name
*/
public void updateUserInfo(String name) {
this.name = name;
printUserInfo();
}
/**
* 회원 이름, 이메일 변경 후 회원 정보 출력 (오버로딩)
* @param name
* @param email
*/
public void updateUserInfo(String name, String email) {
this.name = name;
this.email = email;
printUserInfo();
}
}
public class Main {
public static void main(String[] args) {
User.printMessage();
// OO회원 리스트 출력
// 스태틱 메소드는 객체 생성없이 바로 접근가능
User user1 = new User();
user1.name = "홍길동";
user1.age = 10;
user1.email = "hong@gmail.com";
user1.printUserInfo();
// 결과
// == 회원 정보 출력 ==
// name = 홍길동
// age = 10
// email = hong@gmail.com
User user2 = new User("유재석", 20, "You@gmail.com");
user2.printUserInfo();
// 결과
// == 회원 정보 출력 ==
// name = 유재석
// age = 20
// email = You@gmail.com
user2.updateUserInfo("강호동");
// 결과
// == 회원 정보 출력 ==
// name = 강호동
// age = 20
// email = You@gmail.com
// 오버로딩
user2.updateUserInfo("강호동", "Kang@gmail.com");
// 결과
// == 회원 정보 출력 ==
// name = 강호동
// age = 20
// email = Kang@gmail.com
}
}
728x90
반응형
'📌Back-End > Java' 카테고리의 다른 글
Java 추상 클래스, 인터페이스, 내부 클래스 (0) | 2024.04.22 |
---|---|
Java 상속과 다형성 (0) | 2024.04.20 |
Java 조건문과 반복문 (1) | 2024.04.18 |
Java 연산자 (0) | 2024.04.17 |
Java 변수와 자료형 (0) | 2024.04.16 |