본문 바로가기

Language/Java

(32)
[Java] 다차원 배열 다차원 배열이란? 수학에서 평면을 나타내기 위해 x, y좌표를 쓰는 것처럼 프로그램에서도 평면을 구하기 위해 이차원 배열을 사용할 수 있다. 삼차원 이상의 배열도 가능한데, 삼차원 배열은 주로 공간을 나타내는 프로그램에서 활용한다. 이차원 이상으로 구현한 배열을 ‘다차원 배열’이라 한다. 다차원 배열은 평면이나 공간 개념을 구현하는 데 사용한다. 이차원 배열 [실습] 이차원 배열 초기화하기 package array; public class TwoDimension { public static void main(String[] args) { int[][] arr = {{1, 2, 3}, {4, 5, 6}}; for(int i = 0; i < arr.length; i++) { for(int j = 0; j <..
[Java] 배열이란? 배열이란? 자료가 연속으로 나열된 자료구조로, 배열을 사용하면 자료형이 같은 자료 여러 개를 한 번에 관리할 수 있다. 배열을 사용하려면 먼저 배열을 선언해야 한다. 배열도 변수와 마찬가지로 자료형을 함께 선언한다. 자료형 [ ] 배열 이름 = new 자료형 [개수]; 자료형 배열 이름[ ] = new 자료형 [개수]; 배열을 이루는 각각의 자료를 배열 요소라 한다. 배열 요소는 자료형이 모두 같다. int[] studentIDs = new int[10]; //int형 요소가 10개인 배열 선언 위 문장은 int형 요소가 10개인 배열을 선언한 것이다. 이렇게 선언했을 때 메모리 상태를 나타내면 배열 초기화하기 자바에서 배열을 선언하면 그와 동시에 각 요소의 값이 초기화된다. 배열의 자료형에 따라 정수는..
[Java] static 응용 - 싱글톤 패턴 싱글톤 패턴이란? 객체 지향 프로그램에서 인스턴스를 단 하나만 생성하는 디자인 패턴을 싱글톤 패턴(singleton pattern)이라 한다. 📌 디자인 패턴이란? 객체 지향 프로그램을 어떻게 구현해야 좀 더 유연하고 재활용성이 높은 프로그램을 만들 수 있는지를 정리한 내용이 디자인 패턴(design pattern)이다. 간단히 말해서 프로그램 특성에 따른 설계 유형을 이론화 한 내용이며, 특정 알고리즘이나 프로그래밍 언어를 위한 라이브러리가 아니라 객체 지향으로 설계하는 방법을 설명한 것이다. 따라서 디자인 패턴은 자바는 물론 C++ 나 C#과 같은 다른 객체 지향 언어에도 적용하여 구현할 수 있다. 싱글톤 패턴으로 회사 클래스 구현하기 1단계 : 생성자를 private로 만들기 생성자가 하나도 없는 ..
[Java] 변수 유효 범위 변수는 어디에 어떻게 선언되느냐에 따라 유효 범위(scope)가 달라진다. 지역변수의 유효 범위 지역변수는 함수나 메서드 내부에 선언하기 때문에 함수 밖에서는 사용할 수 없다. 지역변수가 생성되는 메모리를 스택(stack)이라 한다. 스택에 생성되는 지역 변수는 함수가 호출될 때 생성되었다가 함수가 반환되면 할당되었던 메모리 공간이 해제되면서 함께 없어진다. 멤버 변수의 유효 범위 멤버 변수는 인스턴스 변수라고도 한다. 클래스가 생성될 때 힙(heap) 메모리에 생성되는 변수이다. 멤버 변수는 클래스의 어느 메서드에서나 사용할 수 있다. 힙에 생성된 인스턴스가 가비지 컬렉터(garbage collector)에 의해 수거되면 메모리에서 사라진다. 클래스 내부의 여러 메서드에서 사용할 변수는 멤버 변수로 선..
[Java] static 변수 static 변수란 다른 용어로 ‘정적 변수’라 한다. 다른 멤버 변수처럼 클래스 내부에 선언하지만, 다른 멤버 변수처럼 인스턴스가 생성될 때마다 새로 생성되는 변수가 아니다. 프로그램이 실행되어 메모리에 올라갔을 때 딱 한번 메모리 공간이 할당되어 그 값은 모든 인스턴스가 공유한다. 그래서 static 변수를 클래스에 기반한 변수라 해서 ‘클래스 변수(class variable)’이라고도 한다. static int serialNum; [실습] static 변수 사용하기 package staticex; public class Student { public static int srialNum = 1000; public int studentID; public String studentName; public ..
[Java] 객체 간 협력 [실습] 학생 클래스 구현하기 package cooperation; public class Student { public String studentName; //학생 이름 public int grade; //학년 public int money; //학생이 가지고 있는 돈 public Student(String studentName, int money) { this.studentName = studentName; this.money = money; } public void takeBus(Bus bus) { bus.take(1000); this.money -= 1000; } public void takeSubway(Subway subway) { subway.take(1500); this.money -= 15..
[Java] this 예약어 this의 역할 알아보자. 자신의 메모리를 가리키는 this this는 생성된 인스턴스 스스로를 가리키는 예약어이다. [실습] this 출력하기 package thisex; class BirthDay { int day; int month; int year; public void setYear(int year) { //태어난 연도를 지정하는 메서드 this.year = year; } public void printThis() { System.out.println(this); //this 출력 메서드 } } public class ThisExample { public static void main(String[] args) { BirthDay bDay = new BirthDay(); bDay.setYear(..
[Java] 정보 은닉 객체 지향 프로그램에서 예약어를 사용해 클래스 내부의 변수나 메서드, 생성자에 대한 접근 권한을 지정할 수 있는데, 이러한 예약어를 '접근 제어자(access modifier)'라 한다. 클래스 앞에 사용하는 public이라는 예약어는 public이라고 선언한 변수나 메서드는 외부 클래스에서 접근이 가능하며, 외부 클래스가 사용할 수 있다는 뜻이다. 반대로 private로 전언한 변수나 메서드는 외부 클래스에서 사용할 수 없다. [실습] private 사용하기 package hiding; public class Student { int studentID; private String studentName; //studentName 변수를 private로 선언 int grade; String address;..