분류 전체보기 35

Java 접근 제어자

접근 제어자가 사용될 수 있는 곳 - 클래스, 멤버변수, 메서드, 생성자 private 같은 클래스 내에서만 접근이 가능하다. default 같은 패키지 내에서만 접근이 가능하다. protected 같은 패키지 내에서, 그리고 다른 패키지의 자손 클래스에서 접근이 가능하다. public 접근 제한이 전혀 없다. 제어자 같은 클래스 같은 패키지 자손클래스 전체 public O O O O protected O O O default O O private O 접근 범위가 넓은 쪽에서 좁은 쪽의 순으로 왼쪽부터 나열하면 다음과 같다. public > protected > default > private 접근제어자가 있는 이유 캡슐화 - 외부로부터 데이터를 보호하기 위해서 - 내부에서만 사용되는 부분을 감추기 위해..

Java 2022.03.16

(JAVA) String, String builder, String Buffer

면접에서 질문받았던 내용이며 면접관님께서 가장 간단한 문제라고 말씀하셨다. 하지만 나는 이 간단한 문제를 대답하지 못했다. JAVA를 공부한 지 얼마 안돼서 모를 수 있지만 언어의 중요성에 대해서 간과한 나 자신을 반성하며 이번 기회에 정리를 해보고자 한다. mutable / immutable String은 불변(immutable) StringBuffer, StringBuilder는 가변(mutable) immutable - 객체가 한번 생성되면 메모리 공간이 변하지 않음. mutable - 객체가 한번 생성되더라도 다른 값이 할당되면 할당된 공간이 변함. StringBuilder / StringBuffer StringBuilder는 동기화를 지원하지 않음 StringBuffer는 동기화를 지원 동기화 ..

Java 2022.02.10

Javascript Closure

javascript의 클로저 javascript를 공부하는 사람이라면 클로저는 다들 한번씩 들어봤을 것이다. 그렇다면 클로저란 무엇이냐? MDN에는 "클로저는 함수와 함수가 선언된 어휘적 환경의 조합이다." 라고 정의하고 있다. 필자가 만약 클로저를 설명한다면 함수에서 함수를 리턴할 때 내부에 변수를 숨길 수 있도록 해주는 자료구조라고 설명할 것이다. 다음 예시를 보자 function makeFunc() { var name = "Mozilla"; function displayName() { alert(name); } return displayName; } //myFunc변수에 displayName을 리턴함 var myFunc = makeFunc(); //유효범위의 어휘적 환경을 유지 //리턴된 displ..

Javascript 2021.11.01

[javascript] ?. 옵셔널 체이닝 연산자

자바스크립트에서의 물음표 점 자바스크립트 코드를 보다가 ?. 혹은 ?? 과 같은 문법을 본 적이 있나요? ES11에서 신규 도입된 연산자 입니다! ?. => 옵셔널 체이닝 연산자 개발하다가 object의 property값이 없어서 에러가 발생하는 경우가 많이 있습니다. var obj = undefined; console.log(obj.data); //error 발생!! undefined인 값의 property를 읽으려고 하면 node에서는 해당 값을 읽을 수 없다는 error message가 출력됩니다. 개발을 진행할 때 object에서 property를 가져오는 경우가 많은데 해당값이 존재하는지 안하는지 확신이 안드는 경우가 존재합니다. 이럴 경우 예외처리를 위해 for문을 사용하거나 논리연산자 &&를..

Javascript 2021.08.27

JAVA String에 관하여

JAVA에서 char 배열로 문자열 다루기가 힘들다. 그래서 String class를 만들어 놓았다. String class는 char배열에 기능(메서드)을 추가한 것이라고 보면 된다. 이전 포스트에서 JAVA 네이밍 규칙에 보면 클래스명의 앞 첫글자는 대문자 규칙이 있었다. String도 class이기 때문에 앞글자 대문자다. C++하다가 넘어오면 헷갈리니 주의하도록하자. 선언 방법 String str = "JAVA"; String class의 주요 메서드 char charAt(int index) 문자열에서 해당 위치(index)에 있는 문자 반환 int length() 문자열 길이 반환 String substring(int from, int to) 문자열에서 해당 범위(from ~ to)에 있는 문자..

Java 2021.07.12

프로그래머들에게 권장하는 JAVA 네이밍 규칙

1. 클래스 이름의 첫 글자는 항상 대문자로 한다. 변수명 이름의 첫 글자는 항상 소문자로 한다. - UserRepository userRepository (클래스) (변수명) 2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다. - UserRepository userRepository 3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_'로 구분한다. - PI, MAX_NUM, MIN_NUM

Java 2021.07.12

JVM(Java Virtual Machine)

JVM은 'Java virtual machine'의 줄인 말이다. '자바를 실행하기 위한 가상 기계'라고 생각하면 편하다. JAVA로 작성된 어플리케이션은 JVM위에서 동작한다. 그렇다면 왜 필요한가? 일반 어플리케이션(JAVA로 작성된 것이아닌)은 OS를 통해 하드웨어로 전달되어 동작하게 된다. 하지만 일만 어플리케이션은 OS에 종속되기 때문에 해당 OS에서만 실행된다는 단점이 있다. JAVA의 경우는 OS에 따라 JVM을 제공한다. JAVA로 작성된 어플리케이션은 JVM위에서 동작하여 실행되기 때문에 OS에 영향을 받지 않고 실행을 시킬 수 있다. 즉, 한 번 작성하면 어디서든 실행시킬 수 있는 장점이 있으며 이를 가능하도록 만들어주는 것이 JVM이다.

Java 2021.07.12

(고찰) version 표기법

고찰 : 게이머들이라면 너무나도 익숙한 version. version에 대해서 탐구해보자 버전 번호 형식 : X.Y.Z 로 표기한다. 각각 자연수이며 0이 앞에 붙으면 안된다. X는 주(Major)버전 번호 Y는 부(Minor)버전 번호 Z는 수(Patch)버전 번호 ※ 각각은 반드시 증가하는 수여야 한다. ex) 1.9.0 -> 1.10.0 -> 1.11.0 금지 사항 : 특정 버전으로 배포를 하고나면 그 버전은 절대 변경하면 안된다. 새로운 버전으로 배포하도록 하자. 버그 수정의 경우 수버전 번호를 올리고 프로젝트 배포시 부버전 올리고 프로젝트 개편시 주버전을 올리자!

Programming 2021.07.12

백준 - 21611번(마법사 상어와 블리자드) / C++

www.acmicpc.net/problem/21611 21611번: 마법사 상어와 블리자드 마법사 상어는 파이어볼, 토네이도, 파이어스톰, 물복사버그, 비바라기 마법을 할 수 있다. 오늘 새로 배운 마법은 블리자드이고, 크기가 N×N인 격자에서 연습하려고 한다. N은 항상 홀수이고, ( www.acmicpc.net 2021 삼성 인턴 기출문제였다고 합니다. 어렵다는 말이 많아서 한번 풀어봤더니 64%에서 런타임 에러가 났습니다;; 원인을 분석해본 결과 3 1 1 1 1 1 0 1 1 1 1 3 1 과 같은 테케를 넣었을 경우 모든 구슬이 사라지는 경우가 발생하는데 큐를 사용하여 구현했던 저는 여기서 터졌습니다. 아무것도 없는 큐에서 값을 pop하려 하니 런타임 에러가 발생한 것이었고 이를 고쳐주니 문제를..

Algorithm 2021.05.11