본문 바로가기

Language

(105)
[Java] 익명 객체(anonymous object) 익명 객체란? 클래스를 정의하지 않고 객체를 정의하는 방법 -> 1회용 클래스 사용 -> 재사용 불가능한 클래스 (객체를 1번 만드는 용도) 이벤트 객체, 스레드 객체, 람다식, 스트림 등에서 사용 1. 익명 자식 객체 생성 부모 타입으로 필드/변수를 선언하고, 자식 객체를 초기값으로 대입한다고 하자. 이 때 해야할 일은 부모클래스를 상속해서 자식 클래스 선언 new 연산자를 이용해 자식 객체 생성 생성한 후 필드/로컬 변수에 대입 class Child extends Parent{ } class A{ Parent field = new Child(); void method(){ Parent local = new Child(); } } 하지만 자식 클래스가 재사용되지 않고, 단지 필드/변수의 초기값으로만 사..
[C++] 원하는 자리수까지 출력하기 (반올림, 올림, 내림) 기본적인 반올림, 올림, 내림 가 필요하고 반올림은 round(숫자), 올림은 ceil(숫자), 내림은 floor(숫자)이다. 소수점 첫 번째 자리에서 반올림한다. #include #include using namespace std; int main() { float num = 3.47; cout
[C++] PS할 때 전역변수를 써야 하는 경우 1. 배열을 전역으로 선언하면 기본값이 0으로 초기화된다. 하지만 지역변수는 0으로 초기화된다는 보장이 없다. 지역변수로 선언할 때 0으로 확실히 초기화하고 싶으면 int cnt[50001] = {0, } 이렇게 선언하면 된다. 2. 지역변수로 선언하면 메모리의 스택 영역에 할당된다. 스택은 메모리가 작아 크기가 큰 배열을 선언하기에 적당하지 않다. 전역변수는 메모리 데이터 영역에 할당되며, 크기가 큰 배열을 선언해도 문제없이 할당된다. 10만 이상 크기의 배열은 전역으로 선언하는 것이 좋다.
[Javascript] 호출 스택과 이벤트 루프 자바스크립트는 이벤트 기반 방식으로 동작한다. 이벤트 기반 시스템에서는 이벤트 리스너에 콜백 함수를 등록한다. 예를 들어 버튼을 누르면 경고 창을 띄우도록 설정할 때, 클릭 이벤트 리스너에 경고 창을 띄우는 콜백 함수를 등록한다. 이벤트 루프 - 이벤트 발생 시 호출할 콜백 함수들을 관리한다. 호출된 콜백 함수의 실행 순서를 결정하고, 노드가 종료될 때까지 이벤트 처리를 위한 작업을 반복한다. 태스크 큐(콜백 큐) - 콜백 함수들이 기다리는 공간. 이벤트 루프가 정한 순서대로 콜백 함수들이 줄 서있는 공간. 백그라운드 - 타이머, I/O 작업 콜백, 이벤트 리스너들이 동작하는 곳 function first(){ second(); console.log('첫 번째'); } function second(){ ..
[Python] 집합 집합 - 중괄호 { }로 감싸서 표현 - set() 함수를 사용 s1 = set([1, 2, 3]) s2 = set({1, 2, 3}) s3 = {1, 2, 3} - set()의 괄호 안에 리스트를 입력하여 만들거나 문자열을 입력하여 만들 수도 있음 s4 = set("Hello") - 비어 있는 집합 자료형 생성 s = set() 집합 자료형의 특징 ① 중복을 허용하지 않는다. s4 = set("Hello") # s4 = {'e', 'H', 'l', 'o'} ② 순서가 없다. → 인덱싱으로 값을 얻을 수 없다. set에 저장된 값을 인덱싱으로 접근하려면 리스트나 튜플로 변환 후 인덱싱 s1 = set([1, 2, 3]) l1 = list(s1) # l1 = [1, 2, 3] l1[0] # 1 교집합 구하..
[Typescript] 제네릭(Generics) 제네릭을 사용하면 클래스나 함수, 인터페이스를 다양한 타입으로 재사용할 수 있다. 다양한 타입을 인자로 받을 때 함수 오버로드나 유니온 타입을 사용해도 되지만 타입이 많아질수록 복잡해진다. 선언할 때는 타입 파라미터만 적어주고, 생성하는 시점에 타입을 결정한다. function getSize(arr: T[]):number{ return arr.length; } const arr1 = [1, 2, "a"]; getSize(arr1); // 3 const arr2 = ["a", "b", "c"]; getSize(arr2); // 3 const arr3 = [false, true, true]; getSize(arr3); // 3 제네릭으로 함수를 선언하고 사용하는 예시이다. T를 타입 파라미터라고 한다. 다른..
[Typescript] 클래스(Class) ↓ 클래스에 대한 개념이 없다면 참고 https://winterflower.tistory.com/178 타입스크립트에서 클래스를 작성할 때는 멤버 변수를 미리 선언해주어야 한다. class car{ color: string; constructor(color: string){ this.color = color; } start(){ console.log("start"); } } const bmw = new Car("red"); 멤버 변수를 미리 선언하지 않는 방법도 있다. 접근 제한자나 readonly 키워드를 이용하면 된다. class car{ constructor(public color: string){ this.color = color; } start(){ console.log("start"); } }..
[Typescript] 리터럴, 유니온/교차 타입 literal type const userName1 = "Bob"; let userName2 = "Tom"; userName2 = 3; // Error userName1의 타입은 "Bob"이고 username2의 타입은 string이다. const로 선언한 값은 바꿀 수 없으므로 "Bob" 이외의 값은 가질 수 없다. 반면 userName2는 언제든 다른 값으로 바뀔 수 있으니 보다 넓은 개념의 string 타입으로 정의된다. userName2의 타입을 명시하지 않았지만 다른 타입으로 바꾸면 에러가 발생한다. userName1처럼 정해진 string 값을 가진 것을 문자열 리터럴 타입이라고 한다. type로 비슷한 형태를 만들 수 있다. type Job = "police" | "developer" | "..