인텔리제이에서 내부 클래스를 선언할 때, static으로 선언하지 않으면 경고 메세지가 표시된다.그냥 그런가 보다 하고 있었는데, 어느날 궁금해서 찾아보다가 간과하기에는 큰 문제점이 있다.내부 클래스는 외부 클래스를 참조비정적(non-static) 내부 클래스는 외부 클래스와 강하게 연결되어 있기 때문에 외부 클래스의 맴버 변수나 메서드에 접근할 수 있다. 특히 비정적(non-static) 맴버 클래스의 인스턴스는 외부 클래스의 인스턴스 없이는 독립적으로 존재할 수 없기 때문에 암묵적으로 연결된다.public class OuterClass { private int outerNum = 10; public void func1() { InnerClass innerClass = new I..
Goals빌드(Build)란?Maven이란?Gradle이란?Maven과 Gradle의 차이 빌드(Build)란?먼저 소프트웨어에서 말하는 빌드란 무엇인가?소프트웨어 빌드(software build)는 소스 코드 파일을 컴퓨터나 휴대폰에서 실행할 수 있는 독립(standalone) 소프트웨어 가공물로 변환하는 과정을 말하거나 그에 대한 결과우리가 코딩을 하고, 실행을 할 때 빌드를 거친 뒤에 실행이 되는데, JAVA를 예로 들면, .java 파일을 JVM에서 실행 가능한 바이트 코드 덩어리인 .class 파일로 변환하는 컴파일 과정도 빌드의 부분 집합이다.또한, 여러개로 분리된 소스파일들이 컴파일 된 결과물에서 최종 실행가능한 파일을 만들기 위해 필요한 부분을 찾아서 연결해주는 작업인 정적링크 과정도 빌드..
Goals람다식(Lambda expression)이란?함수형 인터페이스(Functional Interface)java.util.function 패키지 람다식(Lambda expression)이란?JDK1.8부터 추가된 람다식(Lambda expression)은 메서드를 하나의 식(expression)으로 표현한 것이다.메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지므로, 람다식을 ‘익명 함수(anonymous function)’이라고도 한다. 람다식 작성 방법람다식은 메서드에서 이름과 반환 타입을 제거하고, 매개변수 선언부와 몸통 {} 사이에 ->를 추가한다.예를 들어 두 값 중 큰 값을 반환하는 메서드 max가 있다고 하자.int max(int a, int b) { return a > b ..
세상은 객체(object)들로 이루어져 있다. 여기서 객체는 눈으로 보는 것, 머릿속으로 상상되는 모든 것이 될 수 있다. 즉, 사람이 세상을 인지하는 방식대로 프로그래밍하는 것이 객체 지향의 출발이다. 따라서 객체 지향은 이전의 방식(구조적 프로그래밍)보다 사람 지향적인 방법론이라고들 한다.객체 지향의 대표적인 4대 특성은 아래와 같다.캡슐화(Encapsulation)상속(Inheritance)추상화(Abstraction)다형성(Polymorphism)Java는 대표적인 객체지향 프로그래밍 언어다. 객체지향 언어는 기존의 프로그래밍 언어에 몇 가지 객체지향적인 특징들을 추가한, 보다 발전된 형태의 언어다. 위 객체 지향 특성들이 Java에 어떻게 녹아 들어가 있는지 알아보자. 추상화 == 모델링 == ..
지네릭스(Generics)란? 지네릭스는 JDK1.5에서 처음 도입된 문법으로 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크를 해주는 기능이다. 자바는 객체 지향 개념 중 하나인 다형성이란 개념이 있다. 이 다형성을 자바에서는 형변환으로 크게 지원하고 있는데, 이 형변환은 프로그래머에게 큰 편리함을 주지만 컴파일러에게는 큰 약점이 된다. 컴파일러는 변수 안에 담겨 있는 실제 값을 확인하지 않는다. 단지 참조 변수의 타입을 보고 문법적 오류가 있는 지를 판단한다. 이것이 컴파일러의 한계인데, 다형성에서 이로 인한 런타임 에러가 발생할 수 있다. 하나의 예시를 들어보자. import java.util.ArrayList; public class GenericsTest { pub..
모든 일은 많은 사람들에 의해 수 차례 반복되고, 연구되면서 여러가지의 방법론이나 원칙이 성립된다. 그 중에서 가장 효율적이고 합리적인 방법론이 정립되고, 그 일을 수행하는데 일반적으로 적용하는 대표 방법론 또는 원칙이 된다. 객체 지향 언어를 이용해 객체 지향 프로그램을 올바르게 설계해 나가는 방법이나 원칙이 존재한다. 로버트 C. 마틴(Robert C. Martin)이 2000년대 초반 객체 지향 프로그래밍 및 설계의 다섯 가지 기본 원칙으로 제시한 것을 마이클 페더스(Michael Feathers)가 두문자어로 소개한 SOLID다. SRP(Single Responsibility Principle) : 단일 책임 원칙 OCP(Open Closed Principle) : 개방 폐쇄 원칙 LSP(Lisk..
변수의 종류 Java에서 변수의 종류를 결정짓는 중요한 요소는 ‘변수의 선언된 위치’다. 인스턴스 변수(Instance variable) 인스턴스를 생성할 때 만들어지며, 독립적인 저장 공간을 가진다. 인스턴스마다 고유한 값을 가질 수 있다. 인스턴스를 생성해야 사용할 수 있다. 클래스 변수(class variable) 인스턴스 변수 앞에 static을 붙이기만 하면 되므로 스태틱 변수라고도 한다. 클래스가 메모리에 로딩될 때 생성되어 프로그램이 종료될 때 까지 유지된다. 모든 인스턴스가 공통된 저장공간을 공유하므로 한 클래스의 모든 인스턴스들이 공통적인 값을 유지한다. 인스턴스를 생성하지 않아도 사용할 수 있다. 지역 변수(local variable) 메서드 내에 선언되어 메서드 내에서만 사용 가능하며..
본 내용은 책 "자바의 신" (로드북) 을 보고 공부한 내용 중 개인적으로 도움될 부분들을 적은 것입니다. 잘못된 점이 있다면 언제든지 지적해 주세요 ! 자바 프로그램의 실행 원리 일반 다른 프로그램들은 기본 적으로 운영체제 위에서 작동하므로 운영체제의 영향을 받을 수 밖에 없다. sound나 graphic적인 부분 등 여러 부분을 운영체제에서 빌려오기 때문이다. 따라서 만약 자바가 아닌 다른 프로그래밍 언어로 윈도우 위에서 소스코드를 작성했다면, 그 프로그램을 리눅스나 맥에서 실행시키고 싶으면 소스코드를 그에 맞게 수정해야 하는 일이 발생한다. 즉 우리가 만든 프로그램이 운영체제에 의존적이게 된다. 하지만 자바는 다르다. 자바 프로그램은 JAVA Virtual Machine 위에서 동작한다. 이 자바 ..
- Total
- Today
- Yesterday
- 방명록 프로젝트
- 스프링
- Python Cookbook
- git merge
- spring mvc
- git branch
- 프로그래머스
- Spring Boot
- 스프링 mvc
- jsp
- 쉽게 배우는 운영체제
- Do it! 정직하게 코딩하며 배우는 딥러닝 입문
- 쉘 코드
- Thymeleaf
- JPA
- 파이썬 for Beginner 연습문제
- Gradle
- Spring Data JPA
- 김영환
- 운영체제 반효경
- 패킷 스위칭
- 생활코딩 javascript
- 스프링 테스트
- 파이썬 for Beginner 솔루션
- git
- Spring
- 지옥에서 온 git
- Computer_Networking_A_Top-Down_Approach
- 선형 회귀
- 스프링 컨테이너
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |