Java/Java 기본 45

접근 지정자

접근 지정자 객체 지향 언어에는 기본적으로 접근 지정자의 개념이 있다. 객체를 캡슐화하기 때문에객체에 다른 객체가 접근하는 것을 허용할 것인지 말지를 지정할 필요가 있기 때문이다. 자바에서는 다음 4가지 접근 지정 방식을 정의하고 있다 - public- protected- private- 접근 지정자 생략 = default 1. 클래스 접근 지정자 클래스 접근 지정이란, 다른 클래스에서 이 클래스 이름을 사용할 수 있는지에 대한 허용 여부를 지정하는 것을 말한다. 클래스 접근 지정자는 클래스의 선언 부분에 표시되며, public, private, 그리고 접근 지정자 생략 이렇게 총 3가지가 있을 수 있다. - publicpublic 접근 지정자로 선언된 클래스는 어떤 다른 클래스에서도 사용할 수 있다. ..

Java/Java 기본 2018.06.28

가비지와 가비지 컬렉션

가비지(Garbage)와 가비지 컬렉션(Garbage Collection) 1. 가비지 (Garbage) 가비지란 응용프로그램에서 더 이상 사용되지 않는 메모리이다. 자바 응용프로그램에서 new 연산자를 이용하여 시스템으로부터 할당받아 사용하다 더 이상 사용하지 않는 객체나 배열 메모리가 가비지가 된다. 더 이상 사용하지 않는다는 뜻은 객체나 배열을 가리키는 레퍼런스가 하나도 없음을 의미한다. 2. 가비지 컬렉션 (Garbage Collection) 가비지는 더 이상 참조되지 않기 때문에 가비지가 차지하고 있는 메모리 공간은 회수되어야 한다. 가비지가 많아지면 상대적으로 자바 가상 기계에서 응용프로그램에게 할당해줄 수 있는 가용 메모리의 양이 줄어들게 된다. 자바에서는 시간이 지날수록 가비지가 점점 늘어..

Java/Java 기본 2018.06.26

객체의 소멸

객체의 소멸 자바에서는 객체를 생성하는 new 키워드와 생성자는 있지만 객체를 소멸시키는 기능은 없다. 또한 자바에서는 객체가 생성될 때 호출되는 생성자는 정의할 수 있지만, 소멸할 때 호출되는 소멸자 메소드는 정의할 수 없다. 객체 소멸이란 new에 의해 생성된 객체 메모리를 자바 가상 기계에게 돌려주어 가용 메모리(available memory)에 포함시키는 것이다. C++에는 new로 할당받은 객체가 더 이상 필요 없을 때 시스템에게 리턴할 수 있도록 delete 연산자를 두고 있으며, delete 연산자가 실행되어 객체가 소멸되면 소멸자가 호출된다. 소멸자의 역할은 객체가 사라지는 시점에서 필요한 마무리 작업을 수행하는 것이다. 예를 들어, 어떤 객체가 파일을 열어놓고 있다가 소멸되면 소멸자에서 ..

Java/Java 기본 2018.06.25

this(), 다른 생성자 호출

this(), 다른 생성자 호출 this()는 한 클래스 내의 한 생성자에서 다른 생성자를 호출할 때 사용하는 자바 코드이다. 한 클래스 내의 어떤 메소드가 다른 메소드를 호출할 수 있는 것처럼 생성자도 중복된 다른 생성자를 호출할 수 있다. this()는 동일한 클래스 내의 다른 생성자의 호출이다. i.e.public class Book {String title;String author;int ISBN; public Book(Stiring title, String author, int ISBN) {this.title = title;this.author = author;this.ISBN = ISBN;System.out.println("객체 생성!");} public Book (String title, i..

Java/Java 기본 2018.06.25

생성자

생성자 앞에서 클래스는 객체를 생성하기 위한 설계도 또는 틀이며 객체는 설계도 또는 틀로 찍어낸 실체라고 하였다. 생성자는 객체가 생성될 때 초기화를 위해 실행되는 메소드이다. 예를 들어, 얼굴이라는 클래스로 사람 객체를 만들어낼 수 있다. 그런데, 만약 생성자 없이 그냥 객체를 생성한다면 새롭게 생성된 사람 객체는 아무런 옷도, 화장도, 돈도 없는 그냥 맨몸의 사람이 된다. 그런데, 생성자를 통해서 필요한 멤버 변수 등을 초기화 시켜준다면, 옷도 입고 경우에 따라 악세사리나 화장도 한 사람 객체가 될 것이다. 또한 생성자를 호출하여 매개 변수등을 이용해서 키나 몸무게, 머리 색깔, 성격 등을 다르게 하게 되면 다른 특징을 가진 사람 객체를 생성할 수 있다. 1. 생성자 선언과 호출 생성자는 객체가 생성..

Java/Java 기본 2018.06.24

this 키워드

this this는 자바의 중요한 키워드로서 단어가 의미하는 데로 객체 자신을 가리킨다. (this는 객체 자신을 참조하는 키워드) 1. this의 기초 개념 자바에서 this는 현재 실행되는 메소드가 속한 객체에 대한 레퍼런스이다. this는 컴파일러에 의해 자동으로 생성되며 개발자는 별도로 this를 선언할 필요 없이 사용하기만 하면 된다. 다음 소스는 this를 사용하는 전형적인 예이다. i.e.class Samp {int id;public Samp(int x) {this.id = x;} public void set (int id) {this.id = id;} public int get() { return id;}} 이 소스에서 this는 현재 객체에 대한 레퍼런스이므로, this로 Samp 클래스..

Java/Java 기본 2018.06.23

메소드 오버로딩

메소드 오버로딩 오버로딩이란? -> 매개 변수의 유형과 개수가 다르게 하여 같은 이름의 메소드를 여러 개 가질 수 있게 하는 기술 자바에서는 한 클래스 내에 이름이 같지만 인자의 타입이나 개수가 서로 다른 여러 개의 메소드를 중복 작성할 수 있다. 이것을 메소드 오버로딩(method overloading) 혹은 메소드 중복이라고 부른다. 메소드 오버로딩은 객체 지향적 특징 중 다형성 의 한 종류이다. 여러 개의 모소드가 메소드 오버로딩으로 성립되려면 다음 세 조건을 모두 만족하여야 한다. 1) 메소드 이름이 동일하여야 한다. 2) 메소드 인자의 개수가 서로 다르거나, 메소드 인자의 타입이 서로 달라야 한다. (타입이 같고 매개 변수의 이름만 다르다고 해서 오버로딩이 되는 것이 아니다.) 3) 메소드의 이..

Java/Java 기본 2018.06.23

인자 전달

인자 전달 기본적으로, 자바의 메소드 호출 시 인자 전달 방식은 '값에 의한 호출 (call by value)'이다. 그러므로 호출하는 인자의 값이 복사되어 메소드의 인자에 전달된다. 1. 기본 타입이 인자로 전달되는 경우 (call by value) byte, char, short, int, long, float, double, boolean 등의 자바 기본 타입이 인자로 전달되는 경우에는 호출자(caller)가 건네는 인자의 값을 복사하여 메소드의 인자에 전달한다. 다음 예제 코드는 기본 타입의 값이 전달되는 사례이다. Person의 setAge()가 호출되면 인자 n이 생기며 이곳에 main()의 지역 변수 a의 값 33이 복사되어 넘어온다. setAge()에서 n의 값을 34로 증가시킨다. 그러나..

Java/Java 기본 2018.06.23

메소드 형식

메소드 형식 메소드는 클래스의 멤버 함수이므로 일반적인 함수 작성법과 동일하다. 자바에서 메소드는 다음과 같은 형식을 가진다. 접근_지정자 리턴_타입 메소드_이름 ( 메소드_인자들) {...메소드_코드...} 1) 접근 지정자 메소드를 선언할 때에는 접근 지정자를 선언하여야 한다. 접근 지정자는 public(클래스 내부/ 외부에서 모두 호출이 가능), private(클래스 내부 멤버들만 호출 가능), protected(클래스 내부 메소드들은 호출 가능하며, 다른 클래스 중 상속받은 서브 클래스만 호출 가능)가 있으며, 접근 지정자가 생략된 default 형태의 경우(아무 접근 지정자도 선언하지 않는 경우)에는 동일한 패키지 내의 모든 클래스가 호출 가능한 package private 상태가 된다. 2) ..

Java/Java 기본 2018.06.22