공부 9

Compile과 implementation의 차이점

현재 인프런이라는 강의 서비스에 CTO로 계신 김동욱님의 책인 '스프링부트와 AWS로 혼자 구현하는 웹 서비스' 라는 책을 통해 다시 웹 백엔드 부분을 공부하고 있다.(유툽에서 분명히 많이 본 이름이였는데, 아 그분? 하면서 얼굴이 떠올랐다. 그분이 그 분인거 같다....) 책에서는 인텔리제이와, JPA, JUnit테스트, Gradle, 소셜로그인, AWS 인프라로 무중단 배포까지를 망라해 책을 공부하는 독자들에게 지식을 전수해준다. 이 책이 끝판왕 개발 서적은 아니지만 더 깊은 내용을 공부하고 싶다면 다른 책을 찾아봐야한다. (인프런의 김영한-JPA수업 추천) 해당 책은 이미 서버 개발자(주니어 급)를 꿈꾸는 학생 또는 취준생이라면 한 번쯤은 봤거나, 접해볼 만한 책일 것이다. 내가 여기서 얻고자 하는..

스프링/백엔드 2022.01.30

내부 클래스(inner class)

1. 내부클래스(inner class) 내부 클래스는 클래스 내에 선언된 클래스로 두 클래스가 서로 가까운 관계가 있을 때 내부 클래스를 사용한다. 이로인해 멤버에 쉽게 접근할 수 있으며, 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다. (크게 중요하지 않음.) 1) 내부 클래스의 예시 class A{ //외부 클래스 class B{ // 내부 클래스 } } 2) 내부 클래스의 선언 class Outer{ int iv = 0; // 인스턴스 변수 static int cv = 0; // 클래스 변수 void myMethod(){ int iv = 0; //지역 변수 } } 같은 위치에 선언뿐만 아니라 멤버 변수와 같은 성질을 갖는다. 따라서 내부 클래스가 외부 클래스의 멤버와 같이..

Language/Java 2022.01.22

생성자(Constructor)

메서드처럼 클래스 내에 선언되는 '생성자'는 메서드와 유사한 구조를 가지고 있으나 리턴값이 없다는 점이 다르다. 그럼 생성자는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 그래서 인스턴스 변수의 초기화 작업에 주로 사용된다. 생성자의 조건은 2가지가 있다. 1. 생성자의 이름은 클래스의 이름과 같아야 한다. 2. 생성자는 리턴 값이 없다. 1) 생성자 예시 class Card{ Card(){//매개변수가 없는 생성자.} Card(String k, int num){// 매개변수가 있는 생성자.} } 2) 생성자 분석 클래스 이름(타입변수 명, 타입변수 명 ***){ // 인스턴스 생성 시 수행될 코드, // 주로 인스턴스 변수의 초기화 코드를 적음. } 생성자도 오버로딩이 가능해 하나의 ..

Language/Java 2022.01.21

오버로딩(overloading)

자바에서는 메서드도 변수와 마찬가지로 같은 클래스 내에 서로 구분이 가능해야한다. (그럼 계속해서 이름을 다르게 사용해야하나?) 정답은 그렇지 않다. 같은 이름이라도 매개변수의 개수, 타입이 다르면 같은 이름을 사용해 메서드를 정의할 수 있다. 이렇게, 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '오버로딩'이라고 한다(중복 메서드) 보면 한 클래스 내에 같은 이름으로 3개의 getInfo가 정의된 것을 볼 수 있는데, 각자 변수의 개수 및 타입이 다르다. 이렇게 오버로딩의 조건은 크게 2가지이다 1. 메서드의 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 그럼 오버로딩의 장점은 무엇일까? 생각을 해보자. 오버로딩? 우선 효율적일 것이다. 굳이 여러 개의 메서드를 ..

Language/Java 2022.01.20

클래스 메서드(static)와 인스턴스 메서드 (static은 무엇일까)

변수와 마찬가지로, 메서드 앞에 static이 붙어 있으면 클래스 메서드이고, 없으면 인스턴스 메서드이다. (클래스 영역에 선언된 변수를 멤버변수라 하고, 멤버변수 중 static이 붙은 것을 클래스 변수, 붙지 않은 것을 인스턴스 변수라 함. 인스턴스 변수와 static 변수 모두를 통칭하는 말이 멤버 변수!) 그럼 과연 static이 무엇일까? 무엇이길래 유무의 차이로 인해 정의가 바뀌는 것일까? static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스 변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static멤버변수)는 인스턴스에 관계없이 같은 값을 갖는다. 이와 같은 이유는 하나의 변수를 모든 같은 인스턴스가 공유하기 때문이다. static이 ..

Language/Java 2022.01.20

1) 객체 지향 프로그래밍 및 클래스 제작과 객체 생성 그리고 변수와 메서드)

1) 객체지향적 코드의 예시 - 비객체지향적 코드 - int hour1, hour2, hour3; int minutel, minute2, minute3; float second1, second2, second3; int [] hour = new int[3]; int [] minute = new int[3]; float [] second = new float[3]; - 객체지향적 코드 - Time t1 = new Time(); Time t2 = new Time(); Time t3 = new Time(); Time[] t = new Time[3]; t[0] = new Time(); t[1] = new Time(); t[2] = new Time(); 1) 객체지향 언어의 장점 1. 코드의 재사용성이 높다.(새..

Language/Java 2022.01.17

Java에 대한 기본적인 이해(배열과 메모리 그리고 조건문, 반복문)

1) 배열은 인덱스를 이용해 자료형이 같은 데이터를 관리하는 것이다. 2) 배열의 선언 및 초기화 배열도 변수와 마찬가지로 선언과 동시에 초기화를 할 수 있는데, 자바는 배열의 크기를 정하면 수정이 불가능하다. // 배열 선언 후 초기화 int []arr1 = new int[5]; arr[0]=100 arr[1]=200 arr[2]=300 // 배열 선언과 동시에 초기화 int [] arr2 = {1,2,3,4}; 3) 베열의 메모리 크기는 배열을 구성하는 데이터의 자료형에 따라 배열의 메모리 크기가 결정된다. 4) 배열을 가리키는 배열의 이름 = 기본 자료형 데이터를 담고 있는 변수와 달리 배열 변수는 배열 데이터의 주소를 담고 있다. 5) 배열의 기본 속성 = 기본 자료형 데이터를 담고 있는 변수와 ..

Language/Java 2022.01.17

기본적인 자바코드의 이해 (변수와 메인, 메인메서드, 자료형과 연산자)

Hello world를 이용한 코드 분석(기본 코드의 분석) public class Java{ public static void main(String [] args){ System.out.println("Hello world") }; } 접근제한자 클래스선언 클래스이름{ 접근 제한자 static 반환형 메서드이름(메인함수)(파라미터){ 구현할 코드 } } public class Java{ public static void main(문자열 배열 변수명){ 구현할 코드 }; } 가장 기본적인 Java의 Hello world 출력을 위한 코드로 코드를 분석해보면 다음 위와 같다. // 1) 접근 제한자 -> public, private, protected, default -> 클래스나 메서드에 접근할 수 있는..

Language/Java 2022.01.16