웅진씽크빅 스타터스 부트캠프/교육일지

유데미 스타터스 취업 부트캠프 3기 - 백엔드 4주차 학습 일지

할루솔이 2022. 12. 16. 19:13
반응형

또 한주가 지나가고 있다!

그래도 이번 주는 뭔가 알차고 즐겁게 보낸 느낌이다.

물론 새로운 맛집을 알게 되어 만족스러운 점심을 먹어서 더 기분이 좋은 것 같기도 하고!!!!


!이 용!

멤버변수

변수가 너무너무너무 헷갈렸다.

멤버변수, 클래스변수, 인스턴스변수, 지역변수, 객체변수...

뭐야?!?!?!?

 

그래서 따로 포스팅해서 정리해두었다 후후(근데 아직 조금 헷갈림)

 

멤버변수: 클래스 영역에서 선언한 변수

  • 클래스변수: 클래스 영역 내부에 선언되고 다른 클래스에서도 호출 가능/변수 앞에 static 키워드 필요. 하나의 저장공간을 공유하기 때문에 항상 공통 값을 가지고 있다.
  • 인스턴스변수: 클래스 영역 내부에 선언되고 같은 클래스 내부에서 호출 가능. 생성될 때마다 서로 다른 값을 가진다.

지역변수: 클래스 외부 영역. 메소드나 생성자 내부에서 선언한 변수

 

 

 

call by value

값 복사해서 전달하는 방식이다.

기본형 - 실제 값 복사 전달(메소드 매개변수값이 변경되면 원래 전달한 인수값은 변경되지 않는다)

참조형 - 주소 값 복사 전달(같은 객체 동일 참조./같은 객체 내부 값이 변경되면 영향을 받아 같이 변경됨)

 

A a1 = new A();
A a2 = new A();
a2 = a1;
a1.id = 3;
System.out.println(a1.id);
System.out.println(a2.id);

출력하면 값이 얼마 나올까?

처음 봤을 때 당연히 a1만 3이지~! 했는데 둘 다 3으로 출력됐다.

알고 보니 참조형이라 주소 값을 공유해서 값이 같이 변경되었던 것!!!!!!!!!!!

 

 

static메소드
  1. 객체 생성 이전 메모리 할당
  2. 객체 생성 이전 같이 메모리 할당 변수만 사용 가능=static 변수만 사용 가능

 

생성자
  1. 클래스 내부 선언 구성요소
  2. constructor - 객체 생성 호출. new키워드 뒤에서 호출된다.
  3. 생성자는 클래스명과 같다.
  4. 자바의 모든 클래스에는 정의하지 않아도 기본 생성자가 자동으로 정의된다. 클래스명(){}
  5. 객체 생성 변수값 초기화 문장 정의가 가능함.
  6. 사용자 생성자 정의하면 자동 정의 생성자는 없어진다.
  7. 1개 클래스에 여러 개 생성자 정의. 매개변수 리스트 다르게 정의해야 한다.

 

Employee em1 = new Employee();

클래스명 객체주소참조변수명 = 객체생성연산자 생성자호출

  1. stack영역에 e1변수 할당(가진 값은 null)
  2. new키워드 실행되면 heap영역에 Employee복사본을 만든다.(변수+메소드 복사 할당)-(주소 1000번지라고 가정)
  3. Employee() 정의 내용 실행
  4. 사용자 생성자 정의하면 자동 생성자는 사라진다.
  5. =(대입 연산자) 실행 ⇒ 1000번지 주소가 e1변수값으로 변경됨. e1 = 1000

 

this

⇒ 현재 자신의 객체를 의미하는 자바 키워드!!!

  1. 매개변수/지역변수 이름이 객체변수의 이름과 같다면 this를 사용해 구분한다.
    매개변수명이 num인 경우 this.num = num(매개변수) ⇒ 구분 의미를 명확하게 하기 위해서
  2. this([매개변수]) ⇒반복 정의하지 않고 재사용 가능하다.
    (생성자 내부에서 사용. 생성자 내부에서 호출 시 첫 문장에 꼭!!! 써줘야 함.)

 

super

=> 상위클래스 객체를 의미하는 키워드

  1. 상속받은 후 부모, 자식클래스에 같은 이름을 가진 변수가 존재할 때 부모 클래스 상속 변수이다. super.상속변수명
  2. 자식클래스 변수를 우선 사용~~(this)~~
  3. 단, private변수인 경우 super붙일 수 없다.
  4. super.상속메소드명 ⇒ 오버라이딩 하위 메소드말고 상위 메소드 호출&사용
  5. super() - 부모 기본 생성자 호출. 첫 문장 자동 포함
  6. super(매개변수) - 부모 매개변수 정의 생성자 호출. 첫 문장 명시 문장 작성
  7. this() - 자신의 다른 생성자 호출. 생성자 첫문장
  8. super(), this()는 1개 생성자 내부에서 동시에 선언 불가능(둘 다 첫 문장이어야 하니까)

 

상속

is a 관계 ⇒ 상속(extends)

 학생은 사람"이다" => is a 관계

class 학생 extends 사람

 

has a 관계 ⇒ 객체생성(new -/ car.a ;)

 운전자는 자동차"이다" => has a 관계

자동차 car = new 자동차();

car.drive();

 

 

package

여러 개의 클래스 모음으로 폴더 형태!

유사한 성격의 클래스를 분류해서 사용할 수 있다.

(패키지)

board ⇒ 게시물 연관 클래스들

product⇒ 상품 관리 연관 클래스들

 

 

import

 

 

import끝!!(ctrl + shift + O 눌러도 나온다)

뒤에 Date를 *로 바꿔주면 Util 패키지 모두 사용할 수 있다!

 

 

final
final변수 변수값 수정 불가능 => 상수
final메소드 메소드 구현부 수정 불가능 (= 메소드 overriding 불가능)
final클래스 클래스 수정 불가능.
상속 후에 자식 클래스에서 모든 메소드 overriding불가능.

final메소드는 final키워드 붙은 메소드만 오버라이딩 불가인데
클래스 앞에 final을 붙이면 아예 모든 메소드 불가.
그냥 상속 자체가 불가능함.
(=모든 메소드에 final선언한것과 동일한 의미) 객체 생성으로만 사용 가능.

 

 

형변환
class A{}
class B extends A{}
class c extends A{}
class D extends C{}
class F{}

---------------------------

A a1 = new A(); //형변환 불필요
A a2 = new B(); //자동형변환 가능
A a3 = new C(); //자동형변환 가능
A a4 = new D(); //자동형변환 가능
A a5 = new F(); //자동형변환 error(상속x라서)


B b1 = new C(); //자동형변환 error(상속x라서)
B b2 = new D(); //자동형변환 error(상속x라서)
B b3 = new A(); //자동형변환 error(부모-자식 변환X)


C c1 = new D(); //자동형변환 가능
C c2 = new C(); //형변환 불필요

 


다 이해했다고 생각했는데 막상 해보니까 50%만 알고 있었다...ㅠㅠ

과제도 풀긴 푸는데 제대로 내용 정리가 되어있지 않으니 자꾸 중간에 막힘-_-

그래도 아주 중요한 개념은 확실히 알게 됐다!

 

m과 c처럼 서로 다른 객체를 비교할 때 자꾸 같은 글자임에도 불구하고 false가 리턴됐다.

class CellPhone{
     String m;
     int num;

     CellPhone(String model) {
           this.model = model;
      }
}
main(){
    CellPhone c = new CellPhone("java");
}

if(m.equalsIgnoreCase(String.valueOf(c))){.....}

이렇게 조건을 주었는데 뭐가 문제일까 한참 고민하다 해답을 얻었다.

if(m.equalsIgnoreCase(String.valueOf(c.m))){.....}

...ㅠㅠㅠㅠㅠㅠㅠㅠㅠ

m은 변수고 c는 객체 자체라서 변수 m의 내용과 객체 c의 내용 전체를 비교하고 있었던 것.

어떤 내용을 비교해야 하는지 정확하게 c.m이라고 해줘야 true가 리턴된다!!!!!!

(북북북 문제를 더 뜯어봐야겠다!!!)

 

객체..........더 공부해야지...^_ㅠ

 

 

 

 

——————————————————————————

* 유데미 바로가기 : https://bit.ly/3V220ri

* STARTERS 취업 부트캠프 공식 블로그 보러가기 : https://blog.naver.com/udemy-wjtb

본 후기는 유데미-웅진씽크빅 취업 부트캠프 3기 백엔드 과정 학습 일지 리뷰로 작성되었습니다.

반응형