2022/04/17 자바 및 Spring

김석진·2022년 4월 17일
0

다시 초심으로

목록 보기
1/19

97년생.. 22년 2월 졸업.. 3월 취업 아직 준비한것도 많이없고 정보처리기사, 어학도 없는 상태에서 면접도 제대로 많이 경험해 보지 못했다! 물론 회사를 다니면서공부하는건 어렵지만 꾸준히 공부를 해보겠다!취직 후 다시 공부를 해야겠다고 생각했다..
막상 취직을하고 생각을 해본 결과.. 취직을 위해서 너무 급하게 공부를 해서 이해도 제대로 하지않고 포트폴리오만 만들자 라는 생각을 했던거같다!

면접을 준비하면서 CS와 JAVA, Spring에 대해서 할줄을 알지만 자세하게 구동되는 방법?이라 해야하나? 음.. 암튼
대학교 다니면서 제대로 공부안한거 같다고 느껴졌다.. 내 등록금..
아무튼 그래서 열심히 다시 꾸준히 강의샀던것도 다시듣고 부족했던 CS, 알고리즘을 공부하며 Spring 공부도 꾸준히 해서 더 좋은 조건에서 개발을 할 수 있는 개발자가 되도록 노력해봐야겠다

거의 공부한것이나 회사에 대한 투덜투덜이 주로 될거같은 시리즈 일 거 같다. ㅠㅠ

앞으로 포스팅 된 정리된 내용들은 패스트 캠퍼스에서 공부한 내용들을 정리할 예정이다!

객체와 객체 지향 프로그래밍

객체(Obejct)

사전적인 의미는 의사나 행위가 미치는 대상
구체적, 추상적 데이터의 단위 이다

객체 지향 프로그램과 절차지향 프로그래밍

절차지향프로그래밍

  • 시간의 흐름에 따라 프로그래밍을함
  • 대표적으로 C언어가 있음
    객체지향프로그래밍
  • (C++,C#,Java,Python)등등-현재 필드에서 많이쓰이는 언어들
  • 객체와 객체들간의 상호작용이 있음
    예를 들어 학생이 학교를 갈때
    객체는 학생 밥 버스 학교등이 있을 수 있고 각 객체들간의 상호작용 먹고 가고 타는 상호작용이 있을 수 있음

객체지향을 구현하는방법은 객체를 정의하고 각 객체 제공하는 기능들을 구현하고 각 객체가 제공하는 기능들 간의 소통을 통하여 객체간의 협력을 구현함

생활 속 객체를 찾아 클래스로 구현

클래스는 객체의 청사진 -> 클래스를 만든다는 것은 어떤 객체를 추상화해서 코딩으로 하는것

예를 들어서 학생 객체를 클래스로 만든다고하면 학생객체가 가지고 있는 속성들을 생각해서 뽑아내는게 중요하다
객체의 속성은 클래스의 멤버변수(member variable)로 선언한다

ex) 학생을 클래스로 만들면
public class Student{
	int studentNumber;	
    String studentName;
    int majorCode;
    String majorName;
  	int grade;
}
이런식으로 작성할 수 있을 것이다.

함수와 메서드

함수(function)

  • 하나의 기능을 수행하는 일련의 코드
  • 구현된함수는 호출하여 사용하고 호출된 함수는 기능이 끝나면 제어가 반환된다.
  • 함수는 하나의 기능을 구현해 놓고 여러군데서 쓸수 있는 장점이 있음
int add(int num1, int num2) {
		
	int result;
	result = num1 + num2;
	return result;
}
함수 정의의 예 add는 함수명이고 함수명앞의 int는 함수의 반환값 타입이다. ()안의 값들은 매개변수로서 함수안의 지역변수로 사용할 수 있음
반환을 안하는 경우 void, 반환하는 경우 반환값의 타입을 쓰면됨 

함수 호출과 스택메모리


1. main()함수가 사용할 메모리 공간이 스택에 생성된다
안에 있는 값들은 main()함수의 지역변수들이다.
2. main()에서 add()함수 호출시 add()함수가 사용할 메모리공간이 스택에 생성됨
3. add()수행후 메모리가 해제되고 add()함수가 사용한 메모리 공간은 자동으로 사라진다.

  • 스택메모리
    - 함수가 호출되면 지역 변수들이 사용하는 메모리임
    - 지역변수같은경우는 그 지역( 함수 블럭내)의 수행이 끝나면 메모리에서 사라짐!

메소드

  • 객체의 기능을 구현하기 위해 클래스!내부에 구현되는 함수
  • 메서드를 구현함으로써 객체의 기능이 구현된다.

함수와 메소드의차이

함수는 어디에 속해있지 않은 단독모듈
메소드는 클래스 안에 속해 있음 그 클래스에 멤버변수를 이용해서 구현한것

인스턴스생성과 힙 메모리(heap memory)

인스턴스(instance)

실제 클래스 기반으로 생성된 객체 즉 인스턴스는 각각 다른 멤버변수값을 가지게 된다.
가령 같은 클래스에서 생성된 각각의 인스턴스는 각각다른 값들을 가지게 됨
new 키워드를 통해서 인스턴스를 생성하며 생성을하면 동적메모리(heap영역)에 생성이 됨

힙 메모리

생성된 인스턴스는 동적메모리(heap memory)에 할당이된다.
자바에서는 GC(Gabage Collector)가 주기적으로 사용하지 않는 메모리를 수거해가며
하나의 클래스로 부터 여러개의 인스턴스가 생성되고 각각 다른 메모리 주소를 가지게된다

예제



이렇게 실행을 하면 studentkim과 studentLee는 다른 주소값(참조값)을 가지고 있음을 알수있다
이 주소값이 가리키는 값은 studentKim과 studentLee가 자리잡은 address주소를 의미(JVM이 준 가상 addresss)
이렇게 studentKim을 참조 변수라고하고 저기서 나온값들은 참조값이라고한다

profile
주니어 개발자 되고싶어요

0개의 댓글