자바 상속의 특징 상속 한 클래스(자식 클래스)가 부모 클래스의 모든 속성(필드)과 행동(메소드)를 취득하는 메커니즘 즉, 부모 클래스를 기반으로 새로운 클래스를 만들 수 있다 OOP의 중요한 요소 중 하나 상속을 사용하는 이유 메소드 오버라이딩 (runtime polymorphism이 가능해진다) 코드 재사용성 상속 문법 extends 키워드를 사용 public class Parent {} --- public class Child extends Parent {} 상속 구조 자바에서 가능한 구조 Single Multilevel Hierarchical public class ClassA {...} // Single public class ClassB extends ClassA {...} // Multile..
클래스란? 클래스는 공통의 특징(characteristics)/행동(behavior)/속성(properties, attributes)을 공유하는 객체들의 집합 클래스는 다양한 타입의 변수들과 메소드의 그룹 클래스가 포함하는 것들 data member (field) - 객체의 데이터가 저장되는 곳 method - 객체의 동작에 해당 constructor - new 연산자로 호출되는 메소드로 객체 생성 시 필드의 초기화를 담당 nested class - 클래스 내부에 또 다른 클래스를 선언할 수 있음 interface (!!) 내부 클래스 (Inner Class) 내부 클래스는 외부 클래스의 private을 포함한 멤버들에 쉽게 접근이 가능하며 연관된 클래스를 그룹핑할 수 있다는 장점 때문에 사용 내부 클래..
3주차 - 연산자 산술 연산자 변수와 데이터에 대한 산술 연산을 수행하는데 사용됨 연산자 수행 연산 + 덧셈 - 뺄셈 * 곱셈 / 나눗셈 (몫만 취함) % Modulo 연산 (나누기 연산 후 나머지만 취함) Overflow 가능성 연산 결과가 피연산자 타입의 저장 가능 범위를 벗어나게 되면 오버플로우가 발생, 의도치 않은 값이 변수에 저장됨 int a = 2_100_000_000; int b = 2_000_000_000; System.out.println(a + b); // -194967296 따라서 연산 시, 오버플로우 발생 가능성을 염두에 두어야 함 /와 % /는 몫만 취하고, %는 나머지만 취함 즉, 6 / 4 = 1, 6 % 4 = 2. 나눗셈 연산 시 /의 반환 타입 a / b 에서 a와 b가 ..
후기 작년에 쎼트렉아이에서 인턴을 하며 자바에 대해 더 깊게 공부하고 좋은 코드를 작성할 수 있는 능력을 갖추고 싶다는 생각을 많이 했었다. 학습 방법을 찾다가 넥스트스텝의 'TDD, 클린 코드 with Java' 과정이 좋다는 이야기를 많이 들어 신청했고 약 4달간 수강했다. 미션을 주고 PR로 제출하면 코드 리뷰 방식으로 피드백을 받고 계속해서 코드를 개선해나가는 과정이기 때문에 짧은 시간이 많은 것들을 배웠다고 느꼈다. PR 당 평균 15 ~ 25 회 정도 코멘트를 주고 받으면서 코드를 사이에 두고 토론하는 경험이 신기했고 재밌었다. 이런 코드 리뷰 문화를 가진 회사에 입사하고 싶다는 생각도 하게되었다. 이전까지는 코드를 작성할 때 이게 정답이 아니면 어떡하지? 하는 막막함때문에 코드를 작성하는데 ..
프리미티브 타입과 레퍼런스 타입 프리미티브 타입 (Primitive Type) 실제 값 자체를 Stack에 저장 byte, short, int, long, char 등 레퍼런스 타입 (Reference Type) class, interface, enum, array, String 값에 대한 참조(주소값)을 Stack에 저장 실제 값은 Heap에 저장 Example Stack Heap int a = 10; char b = 'C'; MyClass myClass = 100번지; 100번지 = myClass 인스턴스 프리미티브 타입 종류, 범위, 기본 값 이름 크기 값 범위 기본 값 비고 byte 1 byte -128 ~ 127 0 short 2 bytes -32,768 ~ 32,767 0 signed int ..
JVM이란 무엇인가 JVM (Java Virtual Machine) Java로 작성된 프로그램은 .class 확장자로 컴파일됨 이렇게 변환된 .class 파일이 JVM 위에서 실행됨 즉, JVM은 프로그램을 실행하기 위한 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것을 말함 WORA(Write Once Run Anywhere) JVM의 목적 중 하나 JVM 라는 가상 머신이 OS 위에서 동작하기 때문에 자바 코드가 동일하게 하나의 .class 파일로 컴파일되어도 모든 OS (위의 JVM)에서 실행할 수 있다. JVM 자체는 OS에 의존적이다. [출처 : Tecoble - JVM에 관하여 - Part 1] JRE (Java Runtime Environment) JRE는 자바 코드를 실행하기 위한 환경..
2022년은 개발자로 진로를 정하고 나에게 가장 의미있는 해인 것 같다. 고민도 많이하고 그만큼 성장도 많이 했지만 후회도 많았던 한 해였다. 회고를 분류별로 작성할지 시간 순서대로 작성할지 고민하다가 한 해동안 내가 했던 고민이나 그 결과를 잘 돌아보기 위해선 시간 순서대로 작성하는게 좋을 것 같아 후자를 택했다. 백엔드 공부 시작 2022년 2월쯤부터 백엔드 공부를 (아예 처음) 시작했다. 보통은 2-3학년 때 진로를 정하고 공부를 시작하는데 나는 학부 4학년이 시작될 시기에 시작했으니 좀 많이 늦었다고 생각이 든다. 근데 그렇다고 그전까지는 마냥 놀았냐고 하면, 그렇진 않았다. 뭔가 항상 무지하게 바빴다. 매일 4-5시에 잠들면서 과제를 쳐내고 전공 공부를 했다. 운이 좋게 성적도 잘 받아서 자연스..
어제 오후 7시부터 오늘 오전 7시까지 대구에서 진행한 해커톤 devfest 2022에 참여했다. 다시 기차를 타고 대전에 아침 11시에 도착해서 한숨자고 비몽사몽한 정신으로 써보는 본격 가수면해커톤후기아니고일기. 저녁 식사 도착하자마자 주최측에서 식사를 제공해주셨다. 원래는 밥을 식사 제공이 안 된다고 안내를 받아서 근처에서 먹고 들어가려고 했는데 오늘인가 어제 다시 저녁을 준다고 공지를 해주셨다! 해커톤이 진행된 장소는 대구그랜드호텔 지하 홀이었는데 같은 건물 5층에서 식사를 할 수 있었다. 아직 팀 빌딩전이라 굉장히 뻘쭘했지만 맛있게 먹었다ㅎㅎ 팀 빌딩 요즘 대부분의 해커톤이 사실 그러한 것 같던데 GDG Daegu에서 주최한 devfest2022 역시 경쟁보다는 네트워킹 위주의 해커톤이어서 사전에..
9월 말부터 11월 초까지 충남대 SW중심대학 사업단에서 주최하는 해커톤인 ‘콜라톤’에 참가하여 계획 관리 & 기록앱을 개발하고 결과적으로 3등상인 우수상을 수상했다! 어떤 과정을 거쳐 기획 및 개발이 이뤄졌는지 또, 앞으로는 어떤 방향으로 프로젝트를 발전시켜나갈 지 간단히 기록해보고자 한다. 참여 계기 백엔드 공부를 해오면서 계속해서 강의만 듣고 예제 코드만 따라 치다보니 너무 지루하고 공부를 해도 계속 까먹는 것 같았다. 인프콘에서 영한님께서 공부만 해선 안 되고, 반드시 내 것으로 만들기 위해 직접 기술을 사용해보라고 하셨던 이야기도 계속 맴돌았다. 내가 가진 지식으로 내 서비스를 직접 만들어보고 싶다는 생각이 강하게 들던 와중에 마침 우리 학과 동아리에서 해커톤을 주최한다길래 며칠 고민하다가 (내..
시작 올해 6월부터 8월까지 2달이 조금 넘는 기간동안 위성시스템을 개발하는 쎄트렉아이에서 인턴으로 근무했었다. 짧은 시간이었지만 많은 것들을 배웠고 아쉬운 점도 많았다. 이때 느꼈던 점들을 간략하게 정리해보려고 한다. 점심먹고 카페갔다가 다시 들어갈 때 잠을 깨워주던 귀여운 사냥이(팀원분들이 그렇게 부르시던데 아마 회사+고양이..로 추측🤔)로 시작 😋 배운 점 페어 프로그래밍과 클린코드 인턴 과정을 통해 가장 크게 배운점을 말해보라고 하면 좋은 코드에 대한 필요성을 느끼고 안목을 기르게 된 것을 얘기할 것 같다. 인턴 전까지 작성해본 코드라고는 학부 전공 과제 코드밖에 없었기 때문에 그저 동작하는 코드를 짜기에 바빴고 코드의 품질이나 유지보수성에 대해서는 고민해본적이 없었다. 인턴 과정은 대체적으로 사..