일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 #continue #반복문
- 자바
- 인텔리제이
- java # for문 #반복문
- Math.sqrt()
- 스프링 #Spring #spring #입문서
- Math.pow()
- java
- 자바 #변수 #java
- 람다
- 믹스인
- Arrays.toString()
- EffectiveJava
- java #조건문 #if문
- Mixin
- HashMap
- overring
- 이펙티브자바
- java #자바 #상속
- 자바 #JAVA
- 객체지향프로그램
- java #조건문 #if조건문 #if
- java #자료형
- java #자바 #상속 #오버라이딩
- java #객체지향 #자바
- java #중첩반복문 #구구단
- 메서드
- 자바 #java #상속
- IntelliJ
- 해쉬맵
- Today
- Total
목록목록 (46)
산으로 가자▲
벌써 3개월이 지났다. 에이블데이여서 특강과 체크아웃 미팅때 여러 행사를 했다. 내가 올린 글이 순위권에 들어서 커피를 받았다 승현님 고마워용 ㅎㅎㅎ
8주차는 3차 미니프로젝트의 시작이다. 5일동안 진행되는 프로젝트로 시각 딥러닝을 했다 3일 2일 나눠서 진행되었다 매우매우 정신없는 하루들이 시작되고있다. 좀 더 신경써서 기자단을 해야겠다...
아주 늦었지만 1주차 후기를 작성해 봅니다. 여기서 작성하는 글은 주차별 요약보다는 생각과 푸념으로 글을 작성할 예정이다. 왜냐하면 멘탈이 매우 흔들리기 때문에 글이라도 써서 스트레스를 해소해야 겠다는 생각을 했다. 요약의 경우 다른 에이블러님들이 아주 꼼꼼하고 상세하게 작성해주시기 때문에 요약은...PASS 푸념은...OK 아하! 1주차 후기에 앞서 합격후기부터!! 서류전형 정말 정말 이상하게 쓰지 않고 내용에 충실하게만 작성하면 무리가 없을 것 같다. 코딩테스트 사실 3문제다 풀지 못했다. 하지만 포기하지 않고 끝까지 남은 시간을 전부 사용하고 후회없이 시험을 쳤다 끝까지 문제를 분석하고 이것저것 시도한 흔적을 남겨서 그런지 합격을 하게 되어서 좋다. 후우 ▶ 결론 : 접수과정에서 하라는 것을 충실히..
Enum, 자바의 열거타입 이 글은 자바의 열거 타입인 enum에 대해서 설명합니다. enum이 무엇이고, 어떻게 사용하며, 어떠한 구조를 갖는지 살펴봅니다. 학습 목표 · 열거 타입이란? · enum 정의하는 방법 · enum 사용하기 · java.lang.Enum · enum이 제공하는 메소드 · EnumSet 열거 타입이란? 서로 연관된 상수의 집합을 저장하는 자료형 데이터 중에는 몇 가지로 한정된 값만을 갖는 경우가 있다. 예들 요일에 대한 데이터(월화수...)는 7개의 값만을 갖고, 계절에 대한 데이터(봄여름...)는 네 개의 값만을 갖는다. 이와 같이 한정된 값만을 갖는 데이터 타입이 열거 타입(enumeration type)이다. enum 정의하는 방법 열거 타입(enum)을 정의하기 위해는..
Enum 클래스 열거체(enumeration type) C언어와 C++에서는 열거체를 사용할 수 있지만, JDK 1.5 이전의 자바에서는 열거체를 사용할 수 없었습니다. 하지만 JDK 1.5부터는 C언어의 열거체보다 더욱 향상된 성능의 열거체를 정의한 Enum 클래스를 사용할 수 있습니다. 이와 같은 자바의 열거체는 다음과 같은 장점을 가집니다. 1. 열거체를 비교할 때 실제 값뿐만 아니라 타입까지도 체크합니다. 2. 열거체의 상숫값이 재정의되더라도 다시 컴파일할 필요가 없습니다. 열거체의 정의 및 사용 자바에서는 enum 키워드를 사용하여 열거체를 정의할 수 있습니다. 문법 enum 열거체이름 { 상수1이름, 상수2이름, ... } 예제 enum Rainbow { RED, ORANGE, YELLOW, ..
이번에는 공변과 불공변에 대해서 먼저 알아보고, 이후에 제네릭과 와일드카드에 대해 알아보도록 하겠습니다. 많은 분들이 어려워하는 제네릭인 만큼 쉽게 풀어서 설명하려고 노력했는데, 많은 도움이 되기를 바라겠습니다. 1. 공변과 불공변 [ 공변과 불공변 ] 제네릭과 와일드카드에 대해 이해하기 위해서 우리는 먼저 공변과 불공변에 대해 알아야 한다. 공변과 불공변은 각각 다음과 같다. 공변(covariant) : A가 B의 하위 타입일 때, T 가 T의 하위 타입이면 T는 공변 불공변(invariant) : A가 B의 하위 타입일 때, T 가 T의 하위 타입이 아니면 T는 불공변 대표적으로 배열은 공변이며, 제네릭은 불공변인데 이를 코드로 살펴보도록 하자. 예를 들어 배열의 요소들을 출력하는 메소드가 있다고 하..
자바는 OS에 독립적인 특징을 가지고 있다. 그게 가능한 이유는 JVM(Java Vitual Machine) 덕분이다. 그렇다면 JVM(Java Vitual Machine)의 어떠한 기능 때문에, OS에 독립적으로 실행시킬 수 있는지 자바 컴파일 과정을 통해 알아보도록 하자. #자바 컴파일 순서 개발자가 자바 소스코드(.java)를 작성합니다. 자바 컴파일러(Java Compiler)가 자바 소스파일을 컴파일합니다. 이때 나오는 파일은 자바 바이트 코드(.class)파일로 아직 컴퓨터가 읽을 수 없는 자바 가상 머신이 이해할 수 있는 코드입니다. 바이트 코드의 각 명령어는 1바이트 크기의 Opcode와 추가 피연산자로 이루어져 있습니다. 컴파일된 바이크 코드를 JVM의 클래스로더(Class Loader)..
Java는 사용자 정의 메소드 및 생성자와 연관된 매개변수 개념을 제공합니다. Java에서 사용자 정의 메소드와 생성자는 0개, 하나 또는 둘 이상의 매개변수를 사용할 수 있습니다. 여기 쿼리는 Java의 매개 변수가 무엇입니까? 잘! Java의 매개변수는 메소드 또는 생성자에 전달할 수 있는 변수이며 byte, string, int, float 등과 같은 모든 데이터 유형이 될 수 있습니다. Java에서 메소드/생성자는 단일 또는 다중 매개변수를 사용할 수 있습니다. 이 문서에서는 아래 나열된 개념에 대한 심층적인 이해를 제공합니다. 자바의 매개변수란? Java의 매개변수와 인수 예 결론 시작하겠습니다! 자바의 매개변수란? Java의 매개변수는 메소드 또는 생성자에 전달할 수 있는 변수입니다. 이러한 ..
instanceof - instanceof는 객체 타입을 확인하는 연산자이다. - 형변환 가능 여부를 확인하며 true / false로 결과를 반환한다. - 주로 상속 관계에서 부모객체인지 자식 객체인지 확인하는 데 사용된다. instanceof의 기본 사용방법은 "객체 instanceof 클래스" 를 선언함으로써 사용한다. 다음 예제로 어떤 구조인지 파악해 보자 class Parent{} class Child extends Parent{} public class InstanceofTest { public static void main(String[] args){ Parent parent = new Parent(); Child child = new Child(); System.out.println( pa..
반복문과 java.util.Arrays의 toString() 메소드를 이용하여 배열의 값을 출력하는 방법을 소개합니다. 먼저, 그냥 배열의 값을 출력해 볼까요? [ 코드 ] public class PrintArray { public static void main(String[] args) { int[] arr = { 1, 2, 3, 4, 5 }; System.out.println(arr); // ?? } } [ 결과 ] [I@762efe5d 위와 같이 그냥 배열 변수(arr)를 출력하면 알수 없는 값이 출력됩니다. 아마도, 여러분들이 위 코드를 돌리면 저와는 또 다른 값이 출력될 것입니다. 왜냐하면, 여기서 출력된 값은 arr라는 변수가 가리키고 있는, [1, 2, 3, 4, 5] 값이 들어있는 메모리의..
String -> int (문자열을 숫자로) String 문자열을 int로 변환하기 위해서는 java.lang.Integer 클래스의 parseInt()와 valueOf() 메소드를 사용할 수 있습니다. Integer.parseInt() static int parseInt(String s) java.lang.Integer 클래스의 static 메소드인 parseInt() 메소드는 파라미터로 숫자로 변환할 문자열을 입력받고, 입력받은 문자열을 integer로 변환한 int 값을 리턴합니다. 코드 public class StringToInt { public static void main(String[] args) { String str1 = "123"; String str2 = "-123"; int int..
람다함수란? 람다 함수는 프로그래밍 언어에서 사용되는 개념으로 익명 함수(Anonymous functions)를 지칭하는 용어입니다. 현재 사용되고 있는 람다의 근간은 수학과 기초 컴퓨터과학 분야에서의 람다 대수이다. 람다 대수는 간단히 말하자면 수학에서 사용하는 함수를 보다 단순하게 표현하는 방법입니다. 람다의 특징 람다 대수는 이름을 가질 필요가 없다. - 익명 함수 (Anonymous functions) 두 개 이상의 입력이 있는 함수는 최종적으로 1개의 입력만 받는 람다 대수로 단순화 될 수 있다. - 커링 (Curring) 익명함수? 익명함수란 말그대로 함수의 이름이 없는 함수입니다. 익명함수들은 공통으로 일급객체(First Class citizen)라는 특징을 가지고 있습니다. 이 일급 객체란..
해시맵(HashMap) 해시맵은 이름 그대로 해싱(Hashing)된 맵(Map)입니다. 여기서 맵(Map)부터 짚고 넘어가야겠죠? 맵이라는 것은 키(Key)와 값(Value) 두 쌍으로 데이터를 보관하는 자료구조입니다. 여기서 키는 맵에 오직 유일하게 있어야합니다. 즉, 같은 맵에 두 개 이상의 키가 존재하면 안된다는 것입니다. 이름 그대로 열쇠이기 때문에 그 열쇠로 짝인 값(Value)를 찾아야하기 때문입니다. 값은 중복된 값이어도 상관이 없습니다. HashMap과 사용법이 거의 동일한 컬렉션(Collection)에는 Hashtable이 있습니다. 두 클래스의 차이점은 Thread 관점에서 안전하냐(Hashtable), 안전하지 않은 대신 속도가 빠르냐(HashMap)입니다. 여기서는 Thread-Sa..
인터페이스와 default 메서드 "자바 8 이전에는 기존 구현체를 깨뜨리지 않고는 인터페이스에 메서드를 추가할 방법이 없었다. 인터페이스에 메서드를 추가하면 보통은 컴파일 오류가 나는데, 추가된 메서드가 우연히 기존 구현체에 이미 존재할 가능성이 아주 낮기 때문이다. 자바 8에 들어서 기존 인터페이스에 메서드를 추가할 수 있도록 default 메서드를 소개했지만, 위험이 완전히 사라진 것은 아니다." 갑자기 default 메서드를 소개하고, 갑자기 default 메서드를 사용하지 말라는 듯 이야기 한다. 책의 내용을 더 잘 이해하기 위해 우선 인터페이스와 default 메서드를 예시와 함께 간단히 알아보자. 인터페이스(interface) 인터페이스란 상수(static final)와 추상 메서드(abst..
자바의 다중 구현 매커니즘 : 인터페이스, 추상 클래스 자바 8부터는 인터페이스도 default 메서드를 제공할 수 있다. 인터페이스 vs 추상 클래스 공통점 선언 내용은 존재하지만 구현 내용은 없다(추상 메서드를 갖는다) 인스턴스로 생성할 수 없다. 목적 인터페이스 : 함수의 껍데기만 존재해서 구현을 강제한다. 구현 객체가 같은 동작을 하도록 보장한다. Has - A 추상 클래스: 추상 클래스를 상속 받아 기능을 이용하고 추가시킨다. Is - A 다중 상속 인터페이스 : 여러개의 인터페이스를 구현할 수 있다. 추상 클래스 : 여러 클래스를 상속 받을 수 없다. 책 본문 내용중 타입이라는 표현은 구현해야하는 메서드를 아울러 표현하는 것으로 이해했다. 추상 클래스가 정의한 타입을 구현하는 클래스는 반드시 ..
상속의 위험성 외부 클래스를 상속할 때의 위험성은 앞선 '상속보다 컴포지션을 사용하라'라는 게시글에서 다뤘다. 여기서 외부란 프로그래머 통제권 밖에 있어서 언제 어떻게 변경될지 모른다는 뜻이다. 예를 들어 Set, List같이 프로그래머가 직접 다루지 않는 클래스들을 말한다. 상속은 문서화를 요구한다. 메소드를 재정의하면 어떤 일이 일어나는지를 정확히 정리하여 문서로 남겨야한다. 즉, 상속용 클래스는 재정의할 수 있는 메서드들을 내부적으로 어떻게 이용하는지 문서로 남겨야한다. 상속용 클래스에서 재정의 가능한 메서드는 어떻게 동작하는지 문서화해야할 필요가 있다. 만약, 재정의 가능한 메서드가 내부의 다른 재정의 가능한 메서드를 호출해서 사용하는 상황이라면 기능이 오동작 할 수 있다. 재정의 가능한 메서드는..
객체지향(OOP) 무엇인가? 컴퓨터 프로그래밍의 패러다임 중 하나인 절차지향(C)언어에서는 각 명령어의 실행 순서를 기반으로 동작한다. 하지만 객체 지향 프로그래밍(Object-Oriented Programming, OOP)은 데이터와 이를 처리하는 루틴들을 하나의 독립된 객체로 동작한다. 이를 통해 재사용성의 증가라는 이점이 생기며 큰 프로젝트에 많이 사용된다. 1. 추상화 (Abstraction) 대상의 특성 중 불필요한 부분을 무시하고 필요한 공통점만을 다룬다. 그래서 현실의 복잡성을 극복하고 목적에 집중 할 수 있도록 하는 것이다. 복잡성을 다루기 위한 추상화의 2가지 차원 [1] 사물들 간의 공통점은 취하고 차이점은 버리는 일반화를 통한 단순화 [2] 중요한 부분의 강조를 위해 불필요한 세부 사..
쓰레드(Thread)란 무엇인가? 쓰레드란 프로그램(프로세스) 실행의 단위이며 하나의 프로세스는 여러개의 쓰레드로 구성이 가능하다. 하나의 프로세스를 구성하는 쓰레드들은 프로세스에 할당된 메모리, 자원 등을 공유한다. 프로세스와 같이 실행, 준비, 대기 등의 실행 상태를 가지며 실행 상태가 변할때마다 쓰레드 문맥교환(context switching)을 수행한다. 각 쓰레드별로 자신만의 스택과 레지스터를 가진다. 한순간에 하나의 쓰레드만이 실행 가능하다. 프로세스와 쓰레드의 차이 프로세스는 운영체제로부터 자원을 할당받는 작업의 단위이고 쓰레드는 프로세스가 할당받은 자원을 이용하는 실행의 단위이다. 프로세스는 실행 중인 프로그램으로 디스크로부터 메모리에 적재되어 CPU의 할당을 받을 수 있는 것을 말한다. ..
믹스인이란? 객체지향언어에서 다른 클래스에서 '사용'할 목적으로 만들어진 클래스이다. '포함'으로 설명된다. '상속'과 주로 비교되는 개념이다. (is-a vs has-a) Composition 혹은 Aggregation 이라고 불리기도 한다. 코드 재사용성을 높여주고, 상속의 단점을 해결할 수도 있다. 자바코드에서는 다중 상속의 제한이 없는 인터페이스로 구현하기 용이하다. 대상 타입의 주된 기능에 선택적 기능을 '혼합(mixed in)'한다고 해서 믹스인이라 불린다. 예제 코드 public interface Singer { AudioClip sing(Song s); } public interface Songwriter { Song compose(int chartPosition); } public int..
오류 라인 자동 포커스 맥: F2 윈도우: F2 검색 현재 파일에서 검색 맥: command(⌘) + F 윈도우: Ctrl +F 현재 파일에서 교체 맥: command(⌘) + R 윈도우: Ctrl +R 전체에서 검색 맥: command(⌘) + shift(⇧) + F 윈도우: Ctrl + Shift + F 전체에서 교체 맥: command(⌘) + shift(⇧) + R 윈도우: Ctrl + Shift + R 정규표현식으로 검색, 교체 검색, 교체 단축키에서, 맥: Regex 체크 윈도우: Regex 체크 만약 여기서 app.js 파일의 경로를 /han에서 /replace로 바꾸고 싶다면? 단, app2.js의 경로는 바꾸면 안된다. 정규표현식에 대한 내용은 아래 글을 참고하자. https://jojo..