일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 | 31 |
- IoC container
- 크레인인형뽑기게임
- call by value
- getOrDefault
- 헤이로라
- 2751
- 용돈관리
- Spring
- 프로그래머스
- vue3
- java
- Spring Security
- jvm
- springboot
- 백준
- 병합정렬
- Di
- swagger3
- Baekjoon
- 스웨거
- 6236
- 2178
- 수들의 합
- springdoc
- 1032
- 추억점수
- docker
- 자바
- 대충 만든 자판
- vue-cli
- Today
- Total
목록개발/java (7)
개발쿠키
들어가기 전 먼저 이 글을 쓰게 된 계기를 말하자면 스프링과 자바를 이용해서 개발하는 중에 이런 생각이 들었다. '그래서 쓰는 법은 알겠는데 controller - service - repository 구조에서 각각의 클래스들을 활용한게 어떤 의미에서 객체지향 프로그래밍이라는거지?' (이걸 생각하기까지 1년 반이 걸린 나에게 충격이였다.) 답을 찾기 위해 객체지향프로그래밍 즉 OOP가 정확히 어떤것인가를 공부하다가 도저히 이해가 안가서 OOP를 공부하기 이전에 OOP의 본질 객체지향이라는 것이 무엇인가를 찾아보았고 와중에 조영호님의 '객체지향의 사실과 오해'를 읽고 내가 이해한 바를 정리하기 위해 쓰게 되었다. 1. 객체지향이란? 우선 객체지향 패러다임이 왜 등장했는지는 다른 분들이 많이 이야기한다. 나..
들어가기전... 개발자로서 과연 나는 OOP를 얼마나 알고 있나를 곰곰히 생각해보면 정확하게 설명하기 힘들겠다는 부분에서 두루뭉실하게 알고 있다고 느꼈다. 그래서 OOP에 대하여 공부를 하고 이해를 하는 과정에서 클래스, 객체, 인스턴스는 왜 나왔는가라는 의문이 들었다. OOP 관점에서 아직도 이들이 무엇이고 어떤 역할인지를 딱 명확하게 정의할 수는 없지만 이 기록을 통해 어느정도 가닥을 잡고 정리를 하고싶어 작성한다. 아마 해당 글은 계속해서 수정이 되면서 이해한 부분들이 추가되어 어느정도 완성되지 않을까 싶다. 클래스, 객체, 인스턴스 객체 다른 글들을 보면 프로그래밍에서 객체라는 것은 소프트웨어 세계에서 구현될 대상, 클래스에 정의된 그대로 생성된 실체라고들 한다 사실 이 부분이 많이 이해가 안갔다..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/0ZeEq/btsnC7WuxOG/1wMzmmmD1VKLPkBzmHSpMk/img.png)
프로그래밍에서 메소드 매개변수 호출 방식에는 call by reference와 call by value 두가지 방식이 있다. 아마 많은 개발자 분들은 취준 시절에 면접 단골 질문이라고 많이 공부들 하셨을 것이다. 물론 나도 해당 내용에 대하여 찾아보았지만 단순히 대답을 위해서 이해는 제대로 못하고 암기식으로 외웠던 기억이 있다. 하지만 이제는 말할 수 있다!...그럼 본론으로 들어가기 전에 간단히 두가지 방식이 무엇을 의미하는지 알아보자. call by reference - 직역을 하자면 참조에 의한 호출이다. call by value - 값에 의한 호출. 저렇게 적어놓으면 뭔가 더 없나 하겠지만 정말 저게 전부다. 우선 자바에서 저 두개를 이해하기 전에 JVM을 알고 있다면 훠어얼씬 이해하기 쉽다. 만..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bL1q6F/btsmFgm8aYV/yuPiaRtJcIzpHIUCfgkKv0/img.png)
JVM과 자바 어플리케이션 JVM은 자바 프로그램을 실행하기 위한 소프트웨어이다. 다시 말해 결국 JVM도 일종의 프로그램이다. 그렇기 때문에 자바 어플리케이션을 실행 시키면 우선 JVM이 OS로부터 메모리를 할당을 받는다. 이후 .java 파일의 소스 코드를 컴파일 하여 나오는 바이트 코드를 해석하고 실행하는 역할을 한다. public class Main { public static void main(String[] args) { Audio audio = new Audio(); } } class Audio { final static String color = "WHITE"; int volume; void volumeUp() { this.volume += 1; } void volumeDown() { th..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/WcXrd/btsmlUxchs8/d5MKhatZ1njBkDvb9DIY40/img.png)
1.시작하기 전 동일성과 동등성 동일성은 비교하는 두 객체가 완전히 같은 것을 의미한다. 다시 말해 두 객체는 하나의 객체로 봐도 무방하다라는 뜻이며 해당 두 객체의 주소값은 같은 주소값을 가리킨다. 동등성은 두 객체가 가지고 있는 값은 같지만 서로 다른 객체라는 것을 의미한다. 쉽게 말하면 주소값은 다르지만 두 객체가 가지고 있는 값은 같다라고 볼 수 있다. 자바에서는 동일성을 확인하기 위해서는 == 을 사용하고 동등성을 확인하기 위해서는 equals 메소드를 사용한다. equals 메소드는 모든 객체들의 부모 객체인 Object 객체에서 구현하고 있으며 해당 메소드의 구현을 보면 == 을 사용하여 결과를 return 한다. 따라서 해당 메소드를 오버라이딩 하여 재정의 하지 않고 쓴다면 결국 동일성을 ..
JVM(Java Virtual Machine) JVM은 일종의 프로그램이다. 우선 JAVA와 C와 같은 언어들은 컴퓨터가 알아들을 수 있도록 소스 코드를 컴파일 하여 기계여로 변환하는 과정을 거친다. 하지만 c나 c++ 등의 언어들은 각 OS에 맞는 컴파일러가 없다면 윈도우에서 개발한 프로그램이 다른 OS에서는 동작하지 않는다. 하지만 JAVA는 "Write once, Run anywhere"라는 모토를 가지고 있다. 말 그대로 한 번 작성되면 다른 운영체제에서도 동일하게 실행 될 수 있다는 의미이다. 이를 가능하게 하는 것이 JVM이다. 각 OS 별로 JVM이라는 통역사를 둔다고 생각하면 이해하기 편하다. JAVA는 컴파일러((javac)가 컴파일시에 작성된 코드(.java 파일)를 바로 기계어로 변환..