목록programing-languages (18)
yeonuel-tech

자바스크립트는 동적 타입이다. 컴파일이 존재하지 않기 때문에 자바처럼 클래스를 정의해서 인스턴스를 생성할 순 없다. 즉, 자바스크립트는 런타임 시점에 변수에 메모리 저장 형식이 결정된다. 이는 유연한 구조를 갖지만 타입의 안정성은 약하다 하지만, 자바스크립트에서는 class 라는 키워드를 통해 자바에서처럼 클래스를 정의하고 인스턴스 생성을 흉내낼 수 있다. class Card { #imgNumber; // number 타입, 유효범위 0 ~ 52 #isFront; // boolean 타입, false : 뒷면, true : 앞면 constructor(imgNumber = 0, isFront = false) { // 생성자 함수에 전달된 매개변수 검증 this.#imgNumber = this.isValid..

오늘 학원에서 자바스크립트 수업 듣다가 원장님께서 자바스크립트에서는 인터페이스가 없지만, 인터페이스와 유사한 프로토콜이 있다고 했다. 그 와중에 생각 났던 것이 인터페이스의 장점 중 하나는 클래스 간의 관계를 맺어 줄 수 있어서 유연한 설계를 할 수 있는 것이다. 나는 자바스크립트에서도 프로토콜이 자바의 인터페이스 처럼 클래스 간의 관계를 맺어 줄 수 있는지 궁금했고 질문을 했다. 결과는 프로토콜은 클래스 간의 관계를 맺어 줄 수 없다. 그 과정에서 인터페이스나 추상 클래스로 프로그래밍 하는 것의 장점을 생각해보게 되었다. 1. 변경에 유리한 코드 작성, 코드 재활용 촉진인터페이스나 추상 클래스로 프로그래밍을 하면 변경에 유리한 코드를 짤 수 있다. 이 말은 변경 사항이 발생해도 코드의 변경 범위가 작다..

현재 나는 자바스크립트를 공부하고 있다. 이론적으로도 핵심 원리나 기본기를 탄탄히 다지고 있다. 우리 학원 원장님께서는 한 언어에 익숙해지려면 그 언어에 쭉 쩔어있으면 된다고 했다. 그래서 원장님이 내주신 퀴즈를 약간 변형해서 게임을 만들어봤다. 이 과정에서 나는 자바스크립트로 객체지향적인 코드를 짜려고 많이 노력했다. 객체지향 설계 단계서부터 구현까지 열심히 노력했고 그 결과 재밌는 게임을 만들 수 있었고 자바스크립트에 대해 더 익숙해지고 이해할 수 있는 귀한시간이였다. 밑에는 내가 공부한 과정을 기록한 것이다. 1. 앱 기능 정의 내가 만득 애플리케이션을 한마디로 요역하면 “두 명이서 플레이하는 포커게임”이다. - 1-1. 카드 뒤집기(메인 기능) 현재 플레이어가 뒷면의 카드를 선택하면 카드를 앞면으..
보호되어 있는 글입니다.

jdk 1.7부터 try-with-resources 문이 추가되었다. 이는 try-catch-finally 문에서 입출력(I/O) 관련 클래스를 사용할 때 발생하는 문제점 때문에 추가되었다. 일단, try-catch-fianlly 문에서 입출력(I/O) 관련 클래스를 사용할 때의 문제점부터 살펴보자. 1. 코드가 난잡해진다 try { // 입출력(I/O) 클래스 fis = new FileInputStream("fileName.text"); dis = new DataInputStream(fis); } catch (IOException e) { e.printStackTrace(); } finally { // 사용한 자원 반환하기 try { if (dis != null) { // close() 호출하여 사용한..
보호되어 있는 글입니다.

자바에서 Integer 클래스의 int compare()가 어떻게 구현됐는지 확인해보면 -를 써서 비교하는게 아니라 < 를 사용한 것을 확인할 수 있다. 왜 그럴까? 그 이유는 바로 성능때문이다. 컴퓨터의 모든 데이터는 이진수로 저장된다 그 말은 우리가 비교하려는 데이터도 결국엔 이진수로 저장되어있다는 뜻이다 예를들어, 자바에서는 문자를 저장할 때 char 타입의 경우 내부적으로는 유니코드가 저장된다 따라서 형변환을 사용하지 않아도 데이터 타입을 변환할 수 있다 int number = '1' - '0'; // 1 본론으로 돌아와서, -와 < 에는 왜 성능차이가 발생할까? 이진수끼리 -를 계산하면 각 자리수끼리 일일이 뺀다. 하지만 로 비교하는 것이 더욱 빠른 성능을 보임을 알 수 있다

@SafeVarargs 우리가 자바의 코드를 보면 가끔 볼 수 있는 @SafeVarargs가 있다 정확한 의미가 무엇이고 언제 사용하는 것일까?? safe와 varargs의 각 의미를 보면 '안전한'과 '인자'이다 즉, @SafeVarargs의 의미는 "해당 인자는 안전한 타입입니다."를 의미한다 컴파일 시점을 기준으로 타입이 제거되는 것을 non-reifiable이라고하고 제거되지 않는 것을 reifiable이라고 한다 non-reifiable의 대표적으로 지네릭스가 있다(지네릭스는 '컴파일 시점에 타입 체크하는 것'을 의미하고 타입 안전성을 보장하며 형변환을 생략하여 코드를 간결하게 만들 수 있는 기능이다) 즉, @SafeVarargs는 "non-reifiable한 인자에 대해 타입 안전성이 보장되기..