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 |