갬장장이
'lang' 카테고리의 글 목록 (3 Page)

lang

lang/java

나만의 Java 레퍼런스

OOP 1. Java에서 8가지의 Primitive type 제외한 모든 type은 Reference type(혹은 User-defined type)이다. String은 Primitive type이 아니지만 유저 편의를 위해 String literal (ex."ABCD", "홍길동")을 미리 정의해두어 다음과 같은 문법이 가능하다. String s = "HAHAHA"; 엄밀히 따지면 String은 클래스이다. 2. Java는 C와 달리 boolean true가 1, false가 0을 의미하지 않는다. 심지어 boolean이 1비트가 아닐 수도 있다. (기본적으로는 1비트이지만 JVM의 종류에 따라 1비트 말고 다른 크기를 할당할 수도 있다.) 왜 그러한가? 프로그램이 메모리에서 CPU에 데이터를 전달할 ..

lang

언어 별 간략한 컴파일 과정

C, C++ .c/.cpp -> .obj -> .exe .obj와 .exe 모두 기계어이다. .obj -> .exe로 변환하는 과정에서 link(링킹)이 발생하는데, printf()같이 유저가 정의하지 않은 함수들을 다른 .obj파일에서 찾아와 기계어로 바꿔주는 과정이다. Java .java -> .class .class는 byte-code로 이루어져 있다. 즉 자바는 소스코드를 기계어로 바로 변환하는 게 아니라 byte-code로 먼저 변환한다. (byte code란 가상 컴퓨터(Virtual machine/VM)에서 실행되는 코드) 그 후 실행 플랫폼에 설치된 JVM에서 이 코드를 실행엔진(Execution Engine)에 넣고 인터프리터를 사용해 기계어로 변환한다. 더보기 이 과정에서 인터프리터 대..

lang/js, ts

[JS] 알아두면 좋은 문법들 정리

=== vs == == 는 두 비교대상을 서로 비교할 수 있도록 강제 형변환을 하지만, ===는 형변환을 하지 않는다. 때문에 가급적 ===를 사용하는 것이 권장된다. (형변환이 명시적일수록 좋은 것은 다른 언어에서도 마찬가지이다) // == 1234 == '1234' // true true == 1 // true undefined == null // true 'hello' == new String('hello') // true null == false // false 'true' == true // false true == 2 // false // === 1234 === '1234' // false true === 1 // false undefined === null // false 'hello' ==..

lang/js, ts

[JS] this란?

어떤 함수 내부에서 this는 해당 함수의 호출 시점에서 그 함수를 프로퍼티(property)로 가지는 객체를 의미한다. function sayName () { console.log(this.name) } var john = { name: 'John', sayName: sayName } var eddie = { sound: 'Eddie', sayName: sayName } john.sayName() // John eddie.sayName() // Eddie 더보기 참고: medium.com/@nemo1275/this%EA%B0%80-%EB%AD%90%EC%A3%A0-81698d54c808

lang/js, ts

[JS] Javascript ES6의 => (Arrow functions)

Arrow function은 코드를 간결하게 만들어주는 역할을 해준다. //ex1. 파라미터 2개 이상 function sum(a, b) { return a + b; } let sum2 = (a, b) => { return a + b; } let sum3 = (a, b) => a + b //ex2. 파라미터 1개 function isPositive(number) { return number >= 0; } let isPositive2 = (number) => { return number >= 0; } let isPositive3 = number => number >= 0 //ex3. 파라미터 없음 function randomNumber() { return Math.random } let randomNumb..

lang/js, ts

[JS] 모던 Javascript(es5, es6)에서의 OOP

참고: Template literal ` (물결 문자 아래) 를 사용해 Template literal을 작성할 수 있다. 이는 일반적인 문자열과 유사하게 동작하며, 파이썬의 fstring과도 상당히 유사하다. ex. var s = 'John'; var k = 'Mary'; console.log(`Hello ${s}, this is ${k}`); 1. 생성자 (es5) 생성자 함수를 작성해 객체지향적 프로그래밍이 가능하다. 이때 생성자 함수는 다른 객체지향 언어들처럼 클래스 내의 메소드로 있는게 아니라, 그냥 함수 형태로 존재한다. function Book(title, author) { this.title = title; this.author = author; } var book = new Book('aa..

lang/java

[Java] Package란?

Package 클래스/인터페이스들을 모아놓은 디렉토리. 일반적인 폴더의 개념과 거의 유사하다고 봐도 무방하다.

lang/java

[Java] Coupling, Interface

Coupling 서로 다른 두 클래스가 서로의 영향을 긴밀하게 받을 때 이 두 객체를 Couple이라고 부른다. 이러한 구조는 한 쪽이 변경되었을 때 다른 쪽에서 에러가 발생할 수 있기 때문에 지양해야 한다. (운좋게 에러가 발생하지 않는다고 해도 한 쪽을 변경하면 다른 쪽도 다시 컴파일해야 하기 때문에 번거로운 건 마찬가지이다.) 최대한 객체가 서로에게 의존적이지 않은 코드를 "Loosely coupled code"라고 하며 이러한 코드를 지향해야 한다. 더보기 참고: www.geeksforgeeks.org/coupling-in-java/ Interface Java에서 이러한 Coupling 문제를 해결(혹은 완화)할 수 있는 방법이 바로 Interface이다. C++에서는 추상 클래스를 통해 어느 정..