[Java] 객체와 클래스

Hyo Kyun Lee·2022년 1월 28일
0

Java

목록 보기
8/61
post-custom-banner

1. 객체와 클래스

Java는 기본적으로 객체지향언어, 즉 특정 기능을 동작하는 객체를 생성한 후 긴밀하게 연결 및 상호작용을 통한 프로그램 동작을 구현하는 것이 핵심이다.

객체를 만들기 위해선 반드시 클래스를 먼저 생성해야하고, 바로 여기서 파생되는 것이 객체가 된다.

2. 클래스 선언

java project에 해당 class를 별도로 구성

public class class_name{
	...
}

3. 객체 구성

class 파일을 구성한 후, 별도의 class파일을 더 만들어 객체를 생성한다.
다만 위에서 만든 class를 참조한다면 해당 class에서 파생된 객체를 만들 수 있다.

public classObject{
	public static void main(String[], args){
    	Car c1 = new Car();
        Car c2 = new Car();
    }
}

위에서 만든 Car Class를 이용하여, new를 통해 생성자를 구성하고 해당 Car class (=Car())를 참조하도록 구성한다.
c1이라는 객체는 Car class를 참조하는 객체형태(Car c1...)이다.

4. 참조형 타입

Java에서 변수를 선언할 때, 변수에 대한 형태를 반드시 선언해주어야 한다.

이때 흔히 알고 있는 정수, 실수 등 보편적인 형태의 정수는 기본형이라 일컫고, 나머지 기본형을 제외한 모든 형태는 참조형이라 일컫는다.

String str = new String('hello world');

위와 같이 String이라는 class를 참조하여 새로운 개체를 생성할 때, String이라는 클래스는 참조형이 되고 생성자(String('hello world'))를 통해 새로운 형태의 객체가 생성된다.

※ 이때 String 생성자를 참조하도록 해주는 역할은 new 연산자가 맡는다.

이때 위와 같은 참조가 발생하는데, hello world라는 생성자를 통해 생성된 객체를, str가 참조하는 구조가 된다.

5. 문자열 클래스

String class, 문자열 표현 시 가장 많이 사용하는 클래스이다.
가장 많이 사용하기도 하고, Java에서 특별히 취급하는 클래스인 만큼 new 연산자를 사용하지 않고도 관련 인스턴스를 생성해낼 수 있다.

  • new 연산자를 사용하지 않은 경우

new 연산자를 사용하지 않고 String class를 선언할 경우, 상수값이 저장되는 메모리에 값이 저장된다.
다시 말하면 해당 문자열이 저장되어있는 인스턴스 값을 str1, str2 객체가 참조하게 되는데, 이러한 문자열들은 값이 변하지 않는 상수로써 인식이 된다.

만약 이후 생성되는 객체에 대하여, 동일한 값을 참조할 경우가 생긴다면(아래 그림처럼) 굳이 다른 인스턴스를 만들지 않고 str2는 기존에 만들어진 str1 인스턴스(객체)를 동일하게 그대로 참조하게 된다.

따라서 위 str2는 str1의 객체를 그대로 참조하게 되고, str1값이 바뀐다면 str2 값도 똑같이 바뀐다.

  • new 연산자를 사용한 경우

반면 위와 같이 new 연산자를 통한 인스턴스 참조가 이루어지도록 구성하였다면, str1 str2 모두 같은 값이더라도 무조건 서로 다른 인스턴스를 참조하도록 구성되기 때문에, 두 인스턴스는 다른 객체를 참조하고 서로 다른 객체값이 된다.

6. 유의사항

Class로 부터 사용할 수 있는 기능을 메소드라 한다.
따라서 각 class, 특히 내장되어있는 클래스로 부터 사용할 수 있는 다양한 메소드에 대한 사용법을 어느 정도 숙지하고 있는 것이 좋다.

문자열은 바뀌지 않는다.

str.substring(index) : index 부터의 문자열만 출력한다.
str.equals(str2) : str, str2에 저장된 값이 같다면 true를 출력한다.

7. 참조자료

프로그래머스 - 클래스
https://programmers.co.kr/learn/courses/5/lessons/139

post-custom-banner

0개의 댓글