TIL 13 [ Java(동일성 문제, 클래스와 객체, charAt함수) ]

2025. 3. 6. 21:10·[내일배움캠프-Sparta]/Spring 6기
반응형

1. 오늘 학습 키워드 : Java 복습, 계산기 과제 해설

2. 학습내용

14:00 ~ 15:00 계산기 과제 해설 ( 박성규 튜터님 )  - 나중에 담당 튜터님이랑 1:1로 해설받을때 작성할 예정!

※ charAt( index ) 함수 

// charAt() 함수 예시
class Main {
    public static void main(String[] args) {
 
        String s = "hi world"; // 띄어쓰기도 인덱스번호로 포함됨
        
        char a = s.charAt(3); // 3은 인덱스 값이며 0부터 시작한다.
        System.out.println("a = " + a); // w
        
    }
}

 

동일성 문제 비교 (equals ? , == ? )

// 문자열로 변수 선언
String str1 = "hello";
String str2 = "hello";

// 객체로 인스턴스화
String str3 = new String("hello");
String str4 = new String("hello");

System.out.println(str1 == str2); // true
System.out.println(str1.equals(str2)); // true

System.out.println(str3 == str4); // false
System.out.println(str3.equals(str4)); // true

문자열로 값을 동일성 판단할 때는 equals 함수를 통해서 비교하는 것이 좋다고 배웠다. 

그런데 여기서 의문이 들었던 점이. 인스턴스화 시켜서 str3 == str4 는 왜 true가 나오지 않는지 이유를 찾아보니 str3과 str4는 참조하고 있는 주소값이 다르기 때문에 false가 나타나고 있다.

그림으로 표현 ( 그림판 )

Heap 영역 에는 객체가 저장 되고 있기 때문에 str3가 생성되면 str3의 객체, str4가 생성되면 str4객체가 생성되며 이때  

Stack 영역 에서 str3와 str4는 각각 str3객체, str4객체를 참조하고 있다고 볼수 있다.

 

○ 클래스와 객체 ○

클래스 -  객체를 정의해 놓은것 ex) Tv설계도

객체 -  실제로 존재하는것 ( 사물 )  ex) Tv

  • 객체 = 속성(변수) + 기능(메서드)

객체랑 인스턴스는 거의 비슷한 말이다.

객체 : 모든 인스턴스를 대표하는 일반적인 용어

인스턴스: 특정 클래스로부터 생성된 객체 ex) Tv 인스턴스

 

클래스 → 인스턴스화  → 인스턴스(객체)

 

메서드 : 문장들을 묶은것 ( 작업 단위 )

값(입력)을 받아서 처리하고, 결과를 반환(출력)

[접근제어자] [반환타입] [메소드명] (매개변수, ...)  {
	명령문;
}
// 접근제어자 (public, private등).. 없으면 default임.
// 반환타입이 void이면 return 작성 X
// 매개변수가 없을수 있음.
// 예시 1
int add(int x, int y) {
	int result = x + y;  // result는 add 메소드내 지역변수임. { } 밖을 나가면 사라진다. ★★
	return result; // 결과를 반환
}

void infoPrint() {
	System.out.println("출력 내용을 출력합니다.");
}

 

★ 기본형 매개변수 와 참조형 매개변수 차이

class Data { int x; }

public class Ex6_6 {
    public static void main(String[] args) {
        Data d = new Data();
        d.x = 10;
        System.out.println("main() : x = " + d.x);

        change(d.x);
        System.out.println("After change(d.x)");
        System.out.println("main() : x = " + d.x);

    }

    static void change(int x) { // 기본형 매개변수
        x = 1000;
        System.out.println("change() x = " + x);
    }
}

기본형 매개변수는 지역변수로 보기 때문에 change 이후에는 값이 변하지가 않는다.

class Data { int x; }

public class Ex6_7 {
    public static void main(String[] args) {
        Data d = new Data();
        d.x = 10;
        System.out.println("main() : x = " + d.x);

        change(d);
        System.out.println("After change(d.x)");
        System.out.println("main() : x = " + d.x);

    }

    static void change(Data d) { // 참조형 매개변수
        d.x = 1000;
        System.out.println("change() x = " + d.x);
    }
}

참조형 매개변수는 객체 자체를 참조하기 때문에 그값을 그대로 들고오게 된다. ( 지역변수 x )

 

인스턴스 메소드와 static 메소드는 반대 관계임

인스턴스 메소드 ( static [x] , 일반적인 메소드)

  • 인스턴스 생성후  참조변수.메소드명()  으로 호출
  • 인스턴스 멤버와 관련된 작업을 하는 메소드
  • 메소드 내 인스턴스 변수 사용 가능

static 메소드 (클래스 메소드)

  • 객체 생성 없이 클래스이름.메소드명() 으로 호출
  • 인스턴스 멤버와 관련없는 작업을 하는 메소드
  • 메소드 내 인스턴스 변수 사용 불가  why? 객체를 생성하지 않기 때문임

 

 - 새롭게 알게 된 점
자격증의 유무가 이력서 1줄 증명의 차이가 있을 수 있겠지만, 취업에 있어서 자격증 하나로 크게 영향력이 바뀌지는 않을 것이다. 블로그를 작성하는데 있어서, 기술 별로 다양하게 공부한 흔적을 남겨 놓는것이 좋다. ( 황원욱 튜터님 튜터링 ) 

2. 내일 학습 할 것: 자바 복습, 내일 과제 맛보기

반응형

'[내일배움캠프-Sparta] > Spring 6기' 카테고리의 다른 글

TIL 15 [ 키오스크 과제(3~4단계) ]  (0) 2025.03.10
TIL 14 [ 키오스크 과제(1~2단계) ]  (0) 2025.03.07
TIL 12 [계산기 과제 3단계(enum, 제네릭, 람다, 스트림)]  (0) 2025.03.05
TIL 11 [Java(접근제어자, 클래스란?, 객체지향?) + 계산기 과제 2단계 ]  (0) 2025.03.04
TIL 10 [ Java(람다식, 스트림, 쓰레드) + 계산기 과제 1단계 ]  (0) 2025.02.28
'[내일배움캠프-Sparta]/Spring 6기' 카테고리의 다른 글
  • TIL 15 [ 키오스크 과제(3~4단계) ]
  • TIL 14 [ 키오스크 과제(1~2단계) ]
  • TIL 12 [계산기 과제 3단계(enum, 제네릭, 람다, 스트림)]
  • TIL 11 [Java(접근제어자, 클래스란?, 객체지향?) + 계산기 과제 2단계 ]
dimenshun
dimenshun
한 소년의 개발 일기
    반응형
  • dimenshun
    Dev Life Notes
    dimenshun
  • 전체
    오늘
    어제
    • 분류 전체보기 (268)
      • CS (23)
        • 자료구조 (0)
        • 알고리즘 (0)
        • 컴퓨터 구조 (8)
        • 네트워크 (6)
        • 운영체제 (3)
        • DB ( + SQLD ) (5)
        • SW공학 (1)
      • 프로그래밍 (3)
        • Java (0)
        • Spring (0)
        • HTML,CSS (3)
        • JavaScript (0)
      • 개발 툴 (7)
        • Git(버전관리) (1)
        • Docker (3)
        • AWS (2)
        • JSP (1)
      • 코딩테스트(Algorithm) (125)
        • 백준 (6)
        • 프로그래머스 (119)
      • [내일배움캠프-Sparta] (110)
        • Spring 6기 (106)
        • KPT 회고 (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    세션
    docker
    AWS
    KPT
    내일배움캠프
    운영체제
    네트워크
    메모리
    SQLD
    spring
    CPU
    코딩테스트
    Python
    db
    web
    배포
    트랜잭션
    컴퓨터구조
    개발자
    백엔드
    알고리즘
    Java
    Til
    It
    OS
    SQL
    Testcode
    웹
    cs
    network
  • hELLO· Designed By정상우.v4.10.3
dimenshun
TIL 13 [ Java(동일성 문제, 클래스와 객체, charAt함수) ]
상단으로

티스토리툴바