개발언어/JAVA
-
Java - 기본 클래스(Class 클래스)5개발언어/JAVA 2023. 11. 6. 16:46
Class 클래스 자바의 모든 클래스와 인터페이스는 컴파일되고 나면 class 파일로 생성된다. 예를 들어 a.java 파일이 컴파일 되면 a.class 파일이 생성되고 이 class파일에는 클래스나 인터페이스에 대한 변수, 메서드, 생성자 등의 정보가 들어있다. Class 클래스는 컴파일된 class 파일에 저장된 클래스나 인터페이스 정보를 가져오는데 사용한다. Class 클래스란? 앞 전 까지의 Java 문법에 대한 게시물에 예시 코드에서는 변수를 선언할 때 자료형을 미리 파악하고 그 자료형에 따라 변수를 선언했다. 그리고 클래스를 사용할 대도 이미 그 클래스 정보(변수,매서드 등)를 알고 있는 상황에서 프로그램을 만들었다. 그런데 코드를 짜다 보면 어떤 경우에는 여러 클래스 주에 상황에 따라 다른 ..
-
Java - 기본 클래스(Wrapper 클래스)5개발언어/JAVA 2023. 11. 6. 15:07
Wrapper 클래스 기본 자료형을 위한 클래스 public void setValue(Integer i){...} //객체를 매개변수로 받는 경우 public Integer returnValue(){...} //반환 값이 객체형인 경우 보통 정수를 사용할 때는 기본형인 int를 사용했다. 그런데 정수를 객체형으로 사용해야 하는 경우가 있다 위와 같이 매개변수가 객체이거나 반환값이 객체형인 경우이다. 기본형 Wrapper 클래스 boolean Boolean byte Byte char Character short Short int Integer long Long float Float double Double 이를 위해 자바에서는 기본 자료형처럼 사용할 수 있는 클래스를 제공한다. 이러한 클래스를 기본 자료형..
-
Java - 기본 클래스(String 클래스)4개발언어/JAVA 2023. 11. 6. 14:09
String을 선언하는 두 가지 방법 String str1 = new String("abc"); //생성자의 매개변수로 문자열 생성 String str2 = "test" //문자열 상수를 가리키는 방식 String 타입의 변수를 생성하는 방식에는 두가지가 존재한다. 문자열을 생성자의 매개변수로 하여 생성하는 방식과 이미 생성된 문자열 상수를 가리키는 방식이 그것이다. 이 두 방식은 언뜻 비슷해 보이지만, 내부적으로는 두 가지 방식에 큰 차이가 있다. new 예약어를 사용하여 객체를 생성하는 경우는 "abc" 문자열을 위한 메모리가 할당되고 새로운 객체가 생성된다. 하지만 str = "test"와 같이 생성자를 이용하지 않고 바로 문자열 상수를 가리키는 경우에는 str2가 기존에 만들어져 있던 "test"..
-
Java - 기본 클래스(Objectd의 equals()메서드)2개발언어/JAVA 2023. 11. 4. 16:06
equals( )메서드 equal()메서드의 원래 기능은 두 인스턴스의 주소 값을 비교하여 boolean 값(ture/false)을 반환해주는 것이다. 주소값이 같다면 당연히 같은 인스턴스이다. 그런데 서로 다른 주소 값을 가질 때도 같은 인스턴스라고 정의할 수 있는 경우가 있다. 따라서 논리적 동일성을 구분할 때 equals()메서드를 재정의 해서 사용한다. 물리적 동일성을 가질때 Student studentLee = new Student(100,"이진희"); Student studentLee2 = new studentLee; //주소 복사 위 코드 와 같이 Student 인스턴스를 두개 생성하면 생성된 인스턴스를 가리키는 참조 변수(studentLee)를 다른 변수(studentLee2)에 복사한다...
-
Java - 기본 클래스(Object 클래스, Object의 toStirng()메서드)1개발언어/JAVA 2023. 11. 4. 15:02
모든 클래스이 최상위 클래스 Object 컴파일 과정에서 오른 쪽과 같이 extends Object가 자동으로 쓰인다. 직접 만드는 커스텀 클래스뿐 아니라 기존 JDK에서 제공하는 클래스도 모두 Object클래스에서 상속을 받는다. 모든 클래스가 Object클래스를 상속받았으므로 Object의 메서드를 사용할 수 있고, 재정의할 수도 있고, Object형을로 반환할 수도 있다. 자바로 프로그래밍을 하다 보면 클래스가 Object형으로 변환되는 경우도 있고, Object에서 원래 클래스형으로 다운 캐스팅되는 경우도 있다. 주로 사용되는 Object 메서드 메서드 설명 String toString( ) 인스턴스를 문자열로 표현하여 반환한다. 재정의하여 인스턴스에 대한 설명이나 특정 멤버 변수 값을 반환한다...
-
Java - 인터페이스(인터페이스와 다형성)2개발언어/JAVA 2023. 11. 4. 09:32
인터페이스와 다형성 인터페이스의 역할 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세(specification)또는 약속의 역할을 한다. 예를 들어 Abc 인터페이스를 구현한 A클래스가 있다. 이 클래스를 사용하는 Z프로그램이 있다고 가정하자. Abc 인터페이스에는 구현할 추상 메서드가 모두 선어되어 있고, 어떤 매개변수가 사용되는지, 어떤 자료형 값이 반환되는지 선언되어 있다. 즉 Z프로그램에서는 A클래스의 구현 코드 전체를 살펴보지 않고 Abc인터페이스 선어부만 봐도 이 A클래스를 어떻게 사용할지 알 수 있는 것이다. Abc abc; abc = new A(); abc = new B(); abc = new C(); 만약 Z프로그램에서 Abc 인터페이스를 구현한 다른 클래스..
-
Java - 추상 클래스(템플릿 메서드 응용하기)4개발언어/JAVA 2023. 11. 4. 07:05
템플릿 메서드 응용하기 클래스의 기능과 관계 if(level == beginner) //beginner 기능구현 else if(level == advanced) //advanced 기능구현 else if(level == super) //super 기능구현 간단하게 생각하면 Player 클래스를 만들고 현재 player의 레벨에 따라 if 조건문으로 코드를 구현하면 된다. 의사 코드(pseudo code)로 작성하면 위 코드와 같다. 그런데 위와 같이 구현하면 level 수만큼 if문이 증가해서 유지보수가 어려운 코드가 된다. 현재는 level이 3개 밖에 없지만, 기능이 추가되어 level이 7개 정도로 늘어난다면 각 level마다 if-else if문을 7개씩 코딩해야 하기 때문이다. 클래스 설계하기 ..
-
Java - 추상 클래스(템플릿 메서드)3개발언어/JAVA 2023. 11. 3. 16:25
추상 클래스와 템플릿 메서드 '템플릿(template)'이란 용어를 사전에서 찾아보면, 틀이나 견본을 뜻한다. 틀이 있는 메서드라는 의미이다. 템플릿 메서드는 추상 클래스를 사용하여 구현할 수 있다. package template; public abstract class Car{ public abstract void drive(); public abstract void stop(); public void startCar(){ System.out.println("시동을 켭니다."); } public void turnOff(){ System.out.println("시동을 끕니다."); } //템플릿 메서드 final public void run(){ startCar(); drive(); stop(); tur..