일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- css
- node.js
- 변수
- logger
- MySQL
- Spring
- bean
- 코딩테스트
- 자료구조
- TIL
- 탐욕법
- LifeCycle
- queue
- dfs
- winston
- OOP
- typescript
- Interceptor
- Deep Dive
- 인접리스트
- 알고리즘
- javascript
- 인접행렬
- 프로그래머스
- REST API
- JWT
- GraphQL
- java
- nestjs
- html
- Today
- Total
목록java (20)
처음부터 차근차근
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/oSZZN/btsCTwHWpSd/X9CjV89Ubz5tAZQd6D9Pw1/img.png)
추상이란?? 여러 가지 사물이나 개념에서 공통되는 특성이나 속성 따위를 추출하여 파악하는 작용. 즉, 추상화란 '형상을 뽑아내어 변화시키는 것'이라고 정의할 수 있습니다. 고양이, 강아지, 소에서 추상을 하면 동물, 포유류 등을 추상화 할 수 있습니다. 쉽게 말하자면 '일반화' 같은 것입니다. 추상 클래스 클래스를 설계도에 비유한다면, 추상 클래스는 미완성 설계도라고 비유할 수 있습니다. 추상 클래스는 이름 그대로 추상적인 개념을 제공하는 클래스입니다. 따라서 실체인 인스턴스가 존재하지 않습니다. 대신에, 상속을 목적으로 사용되고 부모 클래스 역할을 맡는 중요한 의미를 갖습니다. abstract class AbstractAnimal {...} 추상 클래스는 클래스를 선언할 때 앞에 추상이라는 의미의 ab..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bJR8kH/btsCWMCQZDZ/KBDUfHxeMkktv6AmkKiTZk/img.png)
객체 지향 프로그래밍의 대표적인 특징으로는 캡슐화, 상속, 다형성이 존재합니다. 좋은 개발자가 되기 위해서는 다형성에 대한 이해가 필수입니다. 다형성(Polymorphism)이란? "다양한 형태", "여러 형태", 즉, 여러 가지 형태를 가질 수 있는 능력을 의미 프로그래밍에서 다형성은 한 객체가 여러 타입의 객체로 취급될 수 있는 능력을 뜻합니다. 자바에서는 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현했습니다. 다형성을 이해하기 위해서는 크게 2가지 핵심 이론을 알아야 합니다. 다형적 참조 메서드 오버라이딩 다형적 참조 다형적 참조를 이해하기 위해 간단한 상속 관계 코드를 만들어보겠습니다. package poly.basic; public class P..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/b5SwKW/btsCVI8caDu/ZcL7M9WpAhix4RcCc3Lkek/img.png)
Final이란? Final 키워드는 말 그대로 '마지막의' 또는 '변경될 수 없는' 의미를 가지고 있으며, 이름 그대로 끝이라는 뜻입니다. 거의 모든 대상에 사용될 수 있습니다. Final이 사용될 수 있는 대상 Class 변경할 수 없는 클래스, 즉, 확장될 수 없는 클래스를 의미합니다. 즉, 다른 클래스의 조상이 될 수 없습니다. Method 변경될 수 없는 메서드를 의미하며, Overriding을 통해 재정의 될 수 없습니다. 멤버 변수, 지역 변수 변수 앖에 final이 붙으면, 값을 변경할 수 없는 상수가 됩니다. 재할당을 할 경우, 컴파일 오류가 발생합니다. Final 사용해보기 지역변수 package final1; public class FinalLocalMain { public static..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cBgetX/btsCMpvBsG9/K1wdRmXtd6KM07MASydD9k/img.png)
Static이란? 정적(static)은 고정된이란 의미를 가지고 있습니다. Static이라는 키워드를 사용하여 Static변수와 Static메소드를 만들 수 있는데 다른말로 정적필드와 정적 메소드라고도 하며 이 둘을 합쳐 정적 멤버라고 합니다.(클래스 멤버라고도 합니다.) 정적 필드와 정적 메소드는 객체(인스턴스)에 소속된 멤버가 아니라 클래스에 고정된 멤버입니다. 그렇기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리됩니다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있습니다. Static 멤버 생성 Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당됩니다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/RnsC6/btsCzsM0EyU/PRKyAfSUyYOnlszWKxhXC1/img.png)
제어자(modifier)란? 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여합니다. 제어자는 클래스나 멤버 변수와 메서드에 주로 사용되며, 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능합니다. 접근 제어자 : public, protected, (default), private 그 외 : static, final, abstract, native, transient, synchronized, volatile, strictfp 접근 제어자 access modifier 멤버 또는 클래스, 메서드에 사용되어, 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하는 역할을 합니다. 접근 제어자 종류 private : 같은 클래스 내에서만 접근이 가능하다. (모든 ..
Package란? Package란 클래스의 묶음입니다. Package에는 클래스 또는 인터페이스를 포함시킬 수 있으며, 서로 관련된 클래스들끼리 그룹 단위로 묶어 놓음으로써 클래스를 효율적으로 관리할 수 있습니다. 즉, 클래스가 물리적으로 하나의 클래스파일(.class)인 것과 같이 패키지는 물리적으로 하나의 디렉토리 입니다. Package 사용 먼저 IntelliJ를 통해 패키지를 먼저 만들고 그 안에 클래스를 만들어야 합니다. package pack; public class Data { public Data() { System.out.println("패키지 pack Data 생성"); } } 패키지를 사용하는 경우 항상 코드 첫줄에 package pack과 같이 패키지 이름을 적어줘야 합니다. 이후에..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/eyVQCD/btsCzDN0vIh/zqIZDC9SOEKVrm7kuhAddk/img.png)
Java에서 객체를 생성하는 시점에 어떤 작업을 하고 싶다면 생성자(Constructor)를 이용하면 됩니다. 생성자란? 생성자(Constructor)는 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다. 따라서 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 하는 작업을 위해서도 사용된다. 생성자를 알아보기 전에 먼저 생성자가 왜 필요한지 코드로 알아보겠습니다. 생성자가 필요한 이유 간단한 MemberInit Class를 만들고, MemberInit 객체를 사용하는 코드를 작성해보겠습니다. public class MemberInit { String name; int age; int grade; } public class MethodInitMain1 { public..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/Ch3y7/btsCzslcNAF/SAk1okfdTBZanMSS6EuFW1/img.png)
Java는 Class 기반 객체 지향 프로그래밍입니다. 하지만 지금까지 작성했던 코드들은 모두 절차 지향 프로그래밍이였습니다. 두 개의 차이점과 어떻게 하면 객체 지향 프로그래밍으로 작성하는지 알아보겠습니다. 절차 지향 vs 객체 지향 절차 지향 프로그래밍 절차를 지향합니다. 쉽게 이야기해서 실행 순서를 중요하게 생각하는 방식입니다. 프로그램의 흐림이 순차적으로 따르며 처리하는 방식입니다. 즉, "어떻게"를 중심으로 프로그래밍 합니다. 객체 지향 프로그래밍 이름 그대로 객체를 지향합니다. 쉽게 이야기해서 객체를 중요하게 생각하는 방식입니다. 실제 세계의 사물이나 사건을 객체로 보고, 이러한 객체들 간의 상호작용을 중심으로 프로그래밍 하는 방식입니다. 즉, "무엇을" 중심으로 프로그래밍 합니다. 차이점 절..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bNEEqZ/btsCoyfSDKF/4M8OY7easzTDd1UjckNQi0/img.png)
Java 변수의 종류 멤버 변수(필드) : 클래스에 선언합니다 지역 변수 : 메서드에 선언, 매개변수도 지역 변수의 한 종류입니다. 지역 변수는 이름 그대로 특정 지역에서만 사용되는 변수라는 의미입니다. (왜 전역 변수가 없을까..) 멤버 변수, 필드 예시 public class Student { String name; int age; int grade; } 지역 변수 예시 public class Method1 { public static void main(String[] args) { Student student1 = new Student(); } } static void initStudent(Student student, String name, int age, int grade) { student.n..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/xK2iQ/btsCsoiya6g/ANVfsIwoeTw1NUQeYXEeNk/img.png)
저번 포스팅에서 기본형 타입을 간단하게 알아봤는데, Java에서 사용되는 데이터 타입인 기본형과 참조형에 대해 알아보겠습니다. [Java] Java 변수 선언, 데이터 타입 변수 프로그래밍을 하다 보면 값을 저장해 둘 공간이 필요한데, 그 공간을 변수라고 합니다. 변수(variable)는 이름 그대로 변할 수 있다는 뜻을 의미하며, 공간에 들어간 값은 변할 수 있습니다. hangju95.tistory.com 기본형과 참조형 Java의 변수 데이터 타입을 가장 크게 보면 기본형과 참조형으로 분류할 수 있습니다. 기본형(Primitive Type) : int, long, double, boolean처럼 변수에 사용하는 값을 변수에 직접 넣을 수 있는 데이터 타입 기본형은 소문자로 시작하며, 자바가 기본으로 ..