| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |
- JAVA기본
- Java환경
- 회고
- 코드스테이츠 #
- 호스트주소 #Host주소
- 회고록_코드스테이츠
- 에러해결
- git #intellij
- jvm
- 코딩테스트
- 글 foramt
- Git #회고록
- 정리글 작성법
- WSL #Linux #ubuntu
- 네트워크 기초
- WSL2 #권한
- 롤중독
- 인터넷 #ISP
- 시작 #꾸준히 #과하지않게
- mapstruct
- 백엔드로드맵
- 몰입학습 #몰입
- 공부방식
- OOP
- 회고 #주간회고
- 피드백
- 코드스테이츠 #회고록
- 사용자계정 #WSL2
- String
- 회고록
- Today
- Total
목록JAVA기본 (7)
느리더라도 꾸준히
이 글에서 쓰이는 컴포넌트와 인터페이스(API, OPEN API)는 사실 Java와 큰 관련은 없지만, 용어들을 정리한다는 느낌으로 작성했다. 컴포넌트 정의 소프트웨어 시스템에서 독립적인 기능을 수행하는 모듈이다. 실행 기능의 단위로 사용된다. 아래 글을 읽으며 독립적이란 말을 체감해보자. 탄생 배경 모듈들에는 여러 버전과 종류의 패키지들이 들어있기 때문에 서로 호환되지 않을 때가 있었다. 그러므로 수시로 모듈을 수정하여 재컴파일 해야하는 불편함이 존재했었다. 다시 말하자면, 객체 지향은 소스 코드 설계에 있어서 재 사용성을 가지고는 있으나, 실행되고 있는 소프트웨어 부분에서는 재 사용성이 부족해 개발 생산성을 떨어트릴 수 있었다. 그렇기 때문에 독립적인 단위 모듈의 Component 와 CBD(Comp..
패키지 자바의 패키지는 하나의 디렉토리로 비슷한 성격의 클래스들을 묶어둔 것을 말한다. 상위패키지.하위패키지.클래스 package app.MartService.customer; // "."로 이동할 수 있다. 그림예시 모듈 자바의 모듈은 외부에서 재사용할 수 있도록 패키지들을 묶은 것을 말한다. (패키지의 상위개념) 일반적으로 이클립스나 인텔리제이에서 개발하는 프로젝트는 모듈이라고 볼 수 있다. 서로 다른 프로젝트(모듈)끼리 import와 export를 이용하여 다른 모듈에 존재하는 패키지를 주고받을 수 있다. 그림 예시 탄생배경 자바 9 이전에는 모든 클래스들을 패키지를 통해서 관리 했다. 그러나 자바가 점점 더 다양한 곳에 사용되고 규모가 커짐에 따라 여러 문제가 발생했다. 1. 패키지의 캡슐화가 완..
1. 문제 상황 자주 사용되는 용어들이지만 명확한 의미를 알지 못하고 사용하니, 문서를 읽을때 문제가 발생하고 있다. 그래서 이번에 조금 정리를 해두려고 한다. 2. 문제 해결 선언(declaration)과 정의(definition) 선언은 컴파일러에게 어떤 대상의 이름을 알려주는 행위이다. 정의는 컴파일러에게 어떤 대상의 실제 내용을 알려주는 행위이다. public class ClassA { int a; // 변수 a를 선언 //abstract void func(); // 추상메서드로 메서드도 선언( 단 클래스가 추상클래스이여야한다.) void func2(){ // func2 정의 int b = 10; System.out.println(b); } ClassB classB; // 클래스 선언 public..
정리 생성자와 필드 선언 시점 과 순서를 이해하여, 문제를 해결했다. 초기화 시점 클래스변수의 초기화시점 : 클래스가 처음 로딩될 때 단 한번 초기화 된다. 인스턴스변수의 초기화시점 : 인스턴스가 생성될 때마다 각 인스턴스별로 초기화가 이루어진다. 초기화 순서 클래스변수의 초기화순서 : 기본값 -> 명시적초기화 -> 클래스 초기화 블럭 인스턴스변수의 초기화순서 : 기본값 -> 명시적초기화 -> 인스턴스 초기화 블럭 -> 생성자 1.문제상황 저장소 public class Repository { ArrayList al = new ArrayList(){{ add(1); add(2); add(3); add(4); add(5); }}; public int sumAll(ArrayList al) { int sum =..
목표 문제 일반적으로 상위 클래스 타입에 하위 클래스의 인스턴스타입이 할당되면 하위 클래스에만 존재하는 메서드들은 사용할 수가 없다. 그런데 다형성(참조변환)으로 인해 상위 클래스 타입에 하위클래스의 인스턴스가 들어있고 같은 이름의 메서드가 존재할때는, 오버라이딩 된 메서드가 호출이 된다. 어떻게 이런 구조가 가능한 것일까? 가상메서드를 이해하며 오버라이딩에 대해 더 알아보자. 정리 가상함수란 Java에서 상속하는 클래스 내에서 같은 시그니처(메서드명, 매개변수, 리턴형)의 함수로 오버라이딩 될 수 있는 함수 또는 메소드를 말한다. 어떻게 오버라이딩을 동작 시키는 것일까? 일반적으로 static이 아닌 메서드는 객체가 생성될 때 메서드 영역에 생성된다. 그리고 가상 함수는 가상함수 테이블(virtual ..
목표 메서드는 클래스내부에서 인스턴스 메서드와 static 메서드로 선언할수 있다. 이때 이 static 메서드가 왜 필요한지를 이해하고 어떤 장단점이 있는지 이해하자. 본문 static Method 정적메서드는 static 멤버들만 이용해서, 모든 인스턴스에 공유되는 메서드(명령모음)이다. 즉 해당 객체의 인스턴스 변수를 사용하지 않고, 메서드를 호출한다는 의미이다. 예를 들어 우리는 String.format(), Math.max(), Arrays.sort() 등의 메서드들은 해당 객체를 new로 생성하지 않아도, 해당 클래스의 메서드를 사용할 수 있다. 이는 바로 static 메서드가 클래스 영역에 저장되어 있기 때문이다. static Method 어떻게 사용할까? method 앞에 static만 붙..