본문 바로가기

JAVA

JAVA(2022.05.04)- class,String클래스,field, 메소드

class

  • 자바는 클래스를 먼저 만들어야 객체를 만들 수 있다 > 클래스는 설계도정도의 개념이다
  • 클래스는 일종의 틀 ex) 메인메소드가 팔을 움직이는거라면 팔,손목 설계도 정도라고 생각하면 됨. 그 설계도를 통해 팔을 만들어내는게 객체화를 통해 이루어지는 것. 그리고 그 팔을 어떻게 할지 메인메소드에서 실행. (매우 중요)

-기본구조

ex)

   public class Car{

    }

> 여기서 Car 클래스는 생성이 되었지만 객체가 만들어진 것은 아니다 (팔의 설계도만 만들어지는 것) 

 

객체화-

메소드와 변수를 모아놓은 것에 불과한 클래스를 사용할 수 있도록

해당 클래스 타입의 객체명을 선언하고 값을 넣어줘서

해당 클래스의 변수나 메소드를 사용 가능한 상태로 만드는 것

  • 객체를 생성하려면?

ex)

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

Car c1 = new Car();  > 여기서 실제 객체가 생성된다(즉 팔이 만들어진다는 것) 

이때 만들어진 객체를 인스턴스라고 한다

c1과 c2는 객체를 참조하는 변수이다

 

 

String 클래스

    String str1 = "hello";
    String str2 = "hello";

str1과 str2 모두 같은 인스턴트를 참조한다.

 

    String str3 = new String("hello");
    String str4 = new String("hello");

위 코드는 인스턴스화를 하는 코드이다. 

str3과 str4은 다른 인스턴스를 참조한다. 

 

 

이게 차이점이 있는데,

str1 == str2 은 TRUE가 되지만,

str3 == str4 은 false가 된다.

 

str3와 str4는 서로 다른 인스턴스를 참조하기에 

두 개의 값을 비교하려면

str1.equals(str2) 라는 구문을 통해서 비교해야하고

이 값은 TRUE가 된다.

 

 

field

  • 객체의 데이터가 저장되는 곳
  • 객체의 고유 데이터를 저장한다 > ex) 손목의 길이, 팔의 길이 등 

ex)

 

 public class Car{
        String name;    
        int number;
    }

 

- 이름과 번호를 필드로 가짐

ex)

 //c1.name은  c1이 참조하는 객체의 name 을 의미.

    c1.name = "소방차";  //c1이 참조하는 객체의 name을 소방차로 설정 
    c1.number = 1234;   // c1.number = 1234란 c1이 참조하는 객체의 number를 1234 로 설정 

    c2.name = "구급차"  //c2가 가리키는 객체의name을 구급차로 설정
    c2.number = 1004;  //c2가 가리키는 객체의 number를 1004로 설정


    System.out.println(c1.name);  //콘솔에 c1이 참조하는 객체의 name 을 출력합니다. 
    System.out.println(c1.number); //콘솔에 c1이 참조하는 객체의 number 를 출력합니다. 

    String name = c2.name;   //c2가 참조하는 객체의 name 을 String 타입 변수 name 도 참조하게 합니다.

 

메소드 

 

기능을 구현하는 부분을 메소드라고 한다 

 

ex) 매개변수X, 리턴X

  public class MyClass{
        public void method1(){
            System.out.println("method1이 실행됩니다.");
        }
    }

ex) 매개변수O, 리턴X

    public class MyClass{       
        public void method2(int x){
            System.out.println(x + " 를 이용하는 method2입니다.");
        }
    }

ex) 매개변수X, 리턴O

  public int method3(){
        System.out.println("method3이 실행됩니다.");

        return 10;
    }
    //위 메소드가 실행되면, 콘솔에 'method3이 실행됩니다.' 를 출력하고, 이 메소드를 호출한 쪽에 10을 리턴한다.

ex) 전체 코드를 살펴보기 

 public class MyClass{
        public void method(){
            System.out.println("method1이 실행됩니다.");
        }

        public void method2(int x){
            System.out.println(x + " 를 이용하는 method2입니다.");
        }

        public int method3(){
            System.out.println("method3이 실행됩니다.");
            return 10;
        }

        public void method4(int x, int y){
            System.out.println(x + "," + y + " 를 이용하는 method4입니다.");
        }

        public int method5(int y){
            System.out.println(y + " 를 이용하는 method5입니다.");
            return 5;
        }
    }
 public class MyClassExam{
        public static void main(String args[]){
            MyClass my1 = new MyClass(); //메소드가 정의된 클래스 생성 

            my1.method1();   //MyClass에서 정의해 놓은 메소드 method1() 를 호출한다.       

            my1.method2(10);

            int x = my1.method3();

            System.out.println("method3 이 리턴한 " + x + " 입니다.");

            my1.method4(10,100);

            int x2 = my1.method5(50);

            System.out.println("method5 가 리턴한 " + x2 + " 입니다.");

        }
    }

결과 : 

m1이 실행됩니다.

10를 이용하는 method2입니다.

method3이 리턴한 10입니다

110를 이용하는 method4입니다

50을 이용하는 method5입니다

method가 리턴한 5입니다

 

 

 

 

 

 

 

*본 글은 프로그래머스<자바입문>를 공부하며 복습한 내용을 정리한 것입니다.