분류 전체보기 250

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

객체 배열

객체 배열 지금까지는 자바 기본 타입의 배열만 다루었다. 그러나 사실, 자바에서는 객체가 원소인 객체 배열도 만들 수 있다. 객체 배열이란 객체에 대한 레퍼런스를 원소로 갖는 배열이다. 이전 글에서 만들었었던 Person 클래스로 만든 Person 타입 객체로 이루어진 배열로 예시를 들어보도록 하자. i.e.Person[] pa; //객체 배열 레퍼런스 선언pa = new Person[20]; //객체 배열 생성 for (int i = 0; i < pa.length; i++) {pa[i] = new Person(); //객체 배열에 원소로 들어갈 객체 생성pa[i].age = 30 + i; //객체의 필드에 접근 (객체 배열의 경우 배열의 인덱스를 이용해서 원하는 객체에 접근 가능)} 객체 배열은 이전에..

Java/Java 기본 2018.06.22

클래스 선언과 활용

클래스 선언과 활용 1. 클래스와 객체 객체 지향 프로그래밍에서는 실제 세상의 물체들을 객체로 모델링한다고 하였다. 그렇다면 클래스는 객체와 어떻게 다른가? 클래스는 객체를 만들기 위한 설계도라고 보면 된다. 즉, 객체 지향 프로그래밍은 인터넷 세계 상에 자판기나 달력, 전화기등 어떠한 일을 하기 위해서 우리를 도와주는 객체를 만들고, 그 객체를 사용해서 주어진 임무를 완수하는 방식이라고 보면 된다. 이때, 이 객체들을 만들기 위해서는 설계도가 필요할 것이다. 예를 들어, 볼펜의 설계도를 통해서 철수와 영희에게 각각 볼펜을 만들어 준다고 생각해 보자. 같은 설계도를 통해서 만들어졌으니 두 볼펜의 종류는 같겠지만, 철수의 볼펜과 영희의 볼펜은 같은 볼펜이 아니다. 두 볼펜은 엄연하게 다른 객체이다. 그렇지..

Java/Java 기본 2018.06.22

객체 지향과 자바

객체 지향과 자바 1. 객체 지향 언어의 목적 객체 지향 언어 (Object Oriented Language)가 출현할 당시 가장 범용으로 사용되던 언어는 절차 지향 언어 (Structured Procedural Programming Language) 였다. 객체 지향 언어는 절차 지향 언어가 가진 단점을 보완하고 다음의 목적을 달성하기 위해 탄생하였다. 1) 소프트웨어의 생산성 향상컴퓨터 산업이 발전함에 따라 소프트웨어의 생명 주기(life cycle)가 짧아졌는데, 이는 어떤 제품이 기획되면 짧은 시간 내에 소프트웨어를 만들어야만 했기 때문이다. 객체 지향 언어는 상속, 다형성, 객체, 캡슐화 등 소프트웨어의 재사용을 위한 여러 장치를 내장하고 있다. 객체 지향 소프트웨어를 새로 만드는 경우, 이미 ..

Java/Java 기본 2018.06.21

예외 (Exception)

예외 (Exception) 1. 예외란? 프로그래밍 언어의 문법에 맞지 않게 프로그램을 작성하면 컴파일 오류가 발생한다. 그러므로 실행하기 전에 문법에 맞지 않게 작서오딘 오류는 미리 걸러내어야 한다. 그러나 프로그램 실행 중 계속 변하는 배열의 인덱스가 범위를 벗어나는 것은 컴파일 시점에서 걸러낼 수 없다. 이퍼럼 프로그램 실행 중에 발생하는 런타임 오류(runtime error)는 미리 걸러낼 수가 없어 자바에서는 예외(Exception)라는 것을 사용하여 처리하낟. 예외란 프로그램의 실행 중에 런타임 오류틔 발생을 응용프로그램에게 알리는 행위이다. 예외가 발생하는 몇가지 경우를 나열해보자. 1) 정수를 0으로 나누는 경우2) 배열의 크기보다 큰 인덱스로 배열의 원소를 접근하는 경우3) 파일의 마지막..

Java/Java 기본 2018.06.21

main() 메소드의 인자

main() 메소드의 인자 main() 메소드는 자바에서 응용프로그램이 시작되는 메소드로서 특별한 의미를 가진다. main() 메소드의 원형은 다음과 같다. public static void main(String[] args) {...} 1. main() 메소드의 타입과 특징 1) 자바 응용프로그램 실행은 main() 메소드부터 시작한다. 2) main() 메소드는 public 속성이다.public 속성은 메소드가 다른 모든 클래스에서 호출 가능함을 표시한다. 자바 응용프로그램이 실행을 시작할 때 자바 가상 기계(JVM)에 의해 호출되어야 하므로 public 속성으로 선언 되어야 한다. 3) main() 메소드는 static 속성이다.main() 메소드는 시작할 때부터 JVM에 의해 호출되어야 하므로 프..

Java/Java 기본 2018.06.13