Java 78

[JAVA] 패키지

패키지 디렉터리는 클래스를 컴파일하는 과정에서 자동으로 생성된다. 컴파일러는 클래스의 패키지 선언을 보고 디렉터리를 자동 생성시킨다. 패키지 선언은 package 키워드와 함께 패키지 이름을 기술한 것으로, 항상 소스 파일 최상단에 위치해야 한다.package 상위패키지.하위패키지;public class 클래스명 {...} 패키지 이름은 모두 소문자로 작성하는 것이 관례이다. 그리고 패키지 이름이 서로 중복되지 않도록 회사 도메인 이름의 역순으로 작성하고, 마지막에는 프로젝트 이름을 붙여 주는 것이 관례이다.com.samsung.projectnamecom.lg.projectnameorg.apache.projectname 이클립스에서는 패키지를 먼저 생성하고 클래스를 나중에 추가하는 방식을 사용한다. 만약..

Language/JAVA 2024.09.04

[JAVA] final 필드와 상수

인스턴스 필드와 정적 필드는 언제든지 값을 변경할 수 있다. 그러나 경우에 따라서는 값을 변경하는 것을 막고 읽기만 허용해야 할 때가 있다. 이때 final 필드와 상수를 선언해서 사용한다. final 필드 선언final은 최종적이라는 뜻을 가지고 있다. final 필드는 초기값이 저장되면 이것이 최종적인 값이 되어서 프로그램 실행 도중에 수정할 수 없게 된다. final 필드는 다음과 같이 선언한다.final 타입 필드 [=초기값]; final 필드에 초기값을 줄 수 있는 방법은 다음 두 가지 밖에 없다.필드 선언 시에 초기값 대입생성자에서 초기값 대입고정된 값이라면 필드 선언 시에 주는 것이 가장 간단하다. 하지만 복잡한 초기화 코드가 필요하거나 객체 생성 시에 외부에서 전달된 값으로 초기화한다면 생..

Language/JAVA 2024.09.04

[JAVA] 인스턴스 멤버와 정적 멤버

필드와 메서드는 선언 방법에 따라 인스턴스 멤버와 정적 멤버로 구분할 수 있다. 인스턴스 멤버로 선언되면 객체 생성 후 사용할 수 있고, 정적 멤버로 선언되면 객체 생성 없이도 사용할 수 있다.구분설명인스턴스(Instance) 멤버객체에 소속된 멤버(객체를 생성해야만 사용할 수 있는 멤버)정적(static) 멤버클래스에 고정된 멤버(객체 없이도 사용할 수 있는 멤버) 인스턴스 멤버 선언 및 사용인스턴스 멤버는 객체에 소속된 멤버이다. 따라서 객체가 있어야만 사용할 수 있는 멤버다. 다음과 같이 Car 클래스에 gas 필드와 setSpeed() 메서드를 선언하면 인스턴스 멤버가 된다.public class Car { int gas; void setSpeed(int speed) {...} } ga..

Language/JAVA 2024.09.04

[JAVA] 메서드

메서드 선언과 호출메서드 선언은 객체의 동작을 실행 블록으로 정의하는 것을 말하고, 메서드 호출은 실행 블록을 실제로 실행하는 것을 말한다. 메서드는 객체 내부에서도 호출되지만 다른 객체에서도 호출될 수 있기 때문에 객체 간의 상호작용 방법을 정의하는 것이라고 볼 수 있다. 메서드 선언리턴타입 메서드명 (매개변수, ...) { 실행 코드; } 리턴 타입리턴 타입은 메서드가 실행한 후 호출한 곳으로 전달하는 결괏값의 타입을 말한다. 리턴값이 없는 메서드는 void로 작성해야 한다.void powerOn() {...} // 리턴값이 없는 메서드 선언double divide(int x, int y) {...} // double 타입 값을 리턴하는 메서드 선언 리턴 타입이 있는 메서드는 실행 블록 안에서 ..

Language/JAVA 2024.09.04

[JAVA] 생성자

생성자 선언과 호출new 연산자는 객체를 생성한 후 연이어 생성자를 호출해서 객체를 초기화하는 역할을 한다. 객체 초기화란 필드 초기화를 하거나 메서드를 호출해서 객체를 사용할 준비를 하는 것을 말한다.클래스 변수 = new 클래스(); // 클래스() = 생성자 호출 생성자가 성공적으로 실행이 끝나면 new 연산자는 객체의 주소를 리턴한다. 리턴된 주소는 클래스 변수에 대입되어 객체의 필드나 메서드에 접근할 때 이용된다. 기본 생성자모든 클래스는 생성자가 존재하며, 하나 이상을 가질 수 있다. 클래스에 생성자 선언이 없으면 컴파일러는 다음과 같은 기본 생성자(Default Constructor)를 바이트코드 파일에 자동으로 추가한다.[public] 클래스() {} 클래스가 public으로 선언되면 기본..

Language/JAVA 2024.09.04

[JAVA] 필드

필드는 객체의 데이터를 저장하는 역할을 한다. 객체의 데이터에는 고유 데이터, 현재 상태 데이터, 부품 데이터가 있다. 자동차 객체를 예로 들면 모델, 색깔, 최고 속도는 고유 데이터에 해당하고, 현재 속도, 엔진회전 수는 상태 데이터에 해당한다. 그리고 차체, 엔진, 타이어는 부품에 해당한다. 필드 선언필드를 선언하는 방법은 변수 선언과 동일하다. 단, 반드시 클래스 블록에서 선언되어야만 필드 선언이 된다.타입 필드명 [ = 초기값]; 필드와 (로컬) 변수의 차이점구분필드(로컬)변수선언 위치클래스 선언 블록생성자, 메서드 선언 블록존재 위치객체 내부에 존재생성자, 메서드 호출 시에만 존재사용 위치객체 내외부 어디든 사용새성자, 메서드 블록 내부에서만 사용 타입은 필드에 저장할 데이터의 종류를 결정한다...

Language/JAVA 2024.09.04

[JAVA] 클래스

객체를 생성할 때에는 설계도가 필요하다. 현실 세계에서 자동차를 생성하려면 자동차의 설계도가 필요하듯이, 객체지향 프로그래밍에서도 객체를 생성하려면 설계도에 해당하는 클래스(Class)가 필요하다. 클래스로부터 생성된 객체를 해당 클래스의 인스턴스(Instance)라고 부른다. 그리고 클래스로부터 객체를 만드는 과정을 인스턴스화라고 한다. 동일한 클래스로부터 여러 개의 인스턴스를 만들 수 있는데, 이것은 동일한 설계도로 여러 대의 자동차를 만드는 것과 동일하다. 클래스 선언클래스 선언은 객체 생성을 위한 설계도를 작성하는 작업이다. 클래스 선언은 소스 파일명과 동일하게 다음과 같이 작성한다.public class 클래스명 {} public class는 공개 클래스를 선언한다는 뜻이다. 클래스명은 첫 문자..

Language/JAVA 2024.09.04

[JAVA] 객체지향 프로그래밍

현실 세계에서 어떤 제품을 만들 때는 부품을 먼저 만들고, 이 부품들을 하나씩 조립해서 완성품을 만든다. 소프트웨어를 개발할 때에도 부품에 해당하는 객체들을 먼저 만들고, 이 객체들을 하나씩 조립해서 완성된 프로그램을 만드는 기법을 객체지향 프로그래밍(Object-Oriented Programming, OOP)이라고 한다. 객체물리적으로 존재하거나 개념적인 것 중에서 다른 것과 식별 가능한 것을 말한다. 예를 들어 물리적으로 존재하는 자동차, 자전거, 책 사람은 물론, 개념적인 학과나 강의, 주문 등도 모두 객체가 될 수 있다. 객체는 속성과 동작으로 구성된다. 사람은 이름, 나이 등의 속성과 웃다, 걷다 등의 동작이 있고, 자동차는 색상, 모델명 등의 속성과 달린다, 머문다 등의 동작이 있다. 자바는 ..

Language/JAVA 2024.09.04

[JAVA] 다차원 배열

배열 항목에는 또 다른 배열이 대입될 수 있는데, 이러한 배열을 다차원 배열이라고 부른다. 다차원 배열은 1차원 배열을 서로 연결한 것이라고 볼 수 있다. 다차원 배열에서 각 차원의 항목에 접근하는 방법은 다음과 같다.변수[1차원인덱스][2차원인덱스]...[N차원인덱스] 값 목록으로 다차원 배열 생성값 목록을 다차원 배열을 생성하려면 배열 변수 선언 시 타입 뒤에 대괄호 []를 차원의 수만큼 붙이고, 값 목록도 마찬가지로 차원의 수만큼 중괄호를 중첩시킨다.타입[][] 변수 = { { 값1, 값2, ... }, { 값3, 값4, ... }, ... }; 두 반의 학생 점수를 저장하는 배열을 생성해 보자. 각 반은 1차원 배열이고, 해당 반의 학생 점수는 2차원 배열이라고 볼 수 있다.int..

Language/JAVA 2024.09.03

[JAVA] 배열(Array)

변수는 하나의 값만 저장할 수 있다. 따라서 저장해야 할 값의 수가 많아지면 그만큼 많은 변수가 필요하다. 변수가 많아질수록 매우 비효율적이고 지루한 코딩이 되기 때문에, 이를 효율적으로 다루는 방법이 바로 배열이다. 배열은 연속된 공간에 값을 나열시키고, 각 값에 인덱스 구조를 부여해 놓은 자료구조이다. 인덱스는 대괄호 []와 함께 사용하여 각 항목의 값을 읽거나 저장하는 데 사용한다. 배열은 다음과 같은 특징을 가지고 있다.배열은 같은 타입의 값만 관리한다.배열의 길이는 늘리거나 줄일 수 없다.배열을 생성과 동시에 길이가 결정된다. 또한 한 번 결정된 배열의 길이는 늘리거나 줄일 수 없다. 배열 변수 선언배열을 사용하기 위해서는 우선 배열 변수 선언을 해야한다. 배열 변수 선언은 두 가지 형식으로 작..

Language/JAVA 2024.09.03