1. nodejs 설치 노드js 공식 홈페이지 : https://nodejs.org/en/ 다음의 사이트에 접속하여 nodejs LTS 버전을 설치하면 된다. (LTS는 오랜 시간 동안 시스템 관리를 해주는 버전이라고 생각하면 된다.) 모두 yes를 눌러주어 설치한 뒤에 Terminal 또는 cmd를 열어보도록 하자 다음의 명령어를 입력하여 버전이 나왔다면 제대로 설치된 것이다. node --version2. vscode 설치 가장 보편적인 에디터이다. 필자도 많이 애용하고 있는 에디터이다. vscode 공식 홈페이지 : https://code.visualstudio.com/ 해당 홈페이지에서 설치해주면 된다. 3. vscode extension 설치 nodejs code runner 설치 nodejs ..
1. 자바스크립트를 배워보자 내 인생에서 가장 어려운 언어를 뽑아보라고 하면, 나는 자바스크립트를 말한다. 정말 알면 알수록 뭐 뭐 이딴 언어가 다 있지 라는 생각이드는 언어이다. 오죽하면 대학교 1학년 때부터 4학년 내내 JS로 개발을 진행했는데, 막상 제일 잘하는 언어 또는 잘 알고있는 언어가 무엇이냐고 질문하면 c/c++를 언급한다. JS처럼 통통 튀는 언어를 가지고 잘한다고 말할 수 있는 사람이 몇명이나 될까 싶다. 그래서 초심 되찾기로 JS에 대해서 열심히 공부해 보는 시간을 갖기로 해보았다. 물론 현재 회사에는 C/C++ 밖에 안쓰긴 하지만, 재미로 배워보아도 좋을 것 같아서 시작한다. 2. 자바스크립트의 역사 1995년 웹 브라우저 회사인 넷스케이프 커뮤니케이션즈 에서 브라우저에서 동작하는 ..
java.lang 패키지 자바 프로그래밍의 가장 기본이 되는 클래스들을 포함하고 있다. 따라서 import 문 없이도 사용할 수 있게 되었다. 가령) String, System, Object들이 있다. Object 모든 클래스의 최고 조상이다. 메서드 clone() : 객체 자신의 복사본을 반환 자신을 복제하여 새로운 인스턴스를 생성한다. equals(Object obj) : 객체 자신과 객체 obj가 같은 객체인지 알려준다. (인스턴스 비교, 값비교가 아니다.) 문자열의 경우에는 String에서 equal을 오버라이딩하여 값비교로 바꾸었기 때문에 가능한 것이다. finalize() : 가비지 컬렉터에 의해 삭제될 때 불리는 호출자 getClass() : 클래스 인스턴스를 반환 hashCode() : 객..
내부 클래스 클래스 내부에 선언된다는 특징 이외에는 일반 클래스와 동일하다. 클래스 안에 다른 클래스를 선언하는 이유는 두 클래스가 서로 긴밀한 관계에 있기 때문이다. 한 클래스를 다른 클래스의 내부 클래스로 선언하면 두 클래스의 맴버들 간에 서로 쉽게 접근할 수 있다는 장점이 있고, 외부에는 불필요한 클래스를 감춤으로써 코드의 복잡성을 줄일 수 있다는 장점이 있다. 장점 내부 클래스에서 외부 클래스의 맴버들을 쉽게 접근할 수 있다. 코드의 복잡성을 줄 일 수 있다.(캡슐화) class A{ class B{ } } 내부 클래스의 종류는 변수의 선언위치에 따른 종류와 같다. 선언 위치에 따라 인스턴스 변수, 클래스변수, 지역변수로 구분된다. 인스턴스 클래스 : 외부 클래스의 맴버 변수 선언 위치에 선언되어..
인터페이스(interface) 인터페이는 일종의 추상 클래스이다. 추상화 정도가 높아서 일반 메서드나, 맴버변수를 구성원으로 가질 수 없다. (abstract는 가질 수 있다.) 오직 추상 메서드와 상수만을 맴버로 가질 수 있다. 다른 클래스 작성을 목적으로 작성된다.interface Temp{ public static final TEMP_MEMBER_VARIABLE = ??; public abstract tempMethod(TempType temp); } 제약 사항 모든 맴버 변수는 public static final 로 고정된다. 단, 이를 생략 할 수 있다. (어차피 맴버변수에 모두 접근해야하고 인스턴스를 만들 수는 없으므로 이렇게 쓰는 게 맞다.) 모든 메서드는 public abstract 이어야..
다형성이란 여러 가지 형태를 가질 수 있는 능력 한 타입의 참조변수로 여러 타입의 객체를 참조할 수 있도록 함으로써 다형성을 프로그램적으로 구현 즉, 조상클래스의 타입 참조변수로 자손 클래스의 인스턴스를 참조할 수 있도록 하였다. 부모 클래스의 레퍼런스 변수는 자식 클래스의 타입 변수를 가져올 수 있다. 그러나, 부모 클래스의 레퍼런스 변수는 부모 클래스 타입으로 되어있기 때문에 실제 인스턴스가 자식꺼라고 하여도 자식의 맴버 변수나 메서드에 접근할 수 없다. 다만, 부모 클래스의 맴버는 사용가능하다. 즉, 둘 다 같은 타입의 인스턴스지만 참조변수의 타입에 따라 사용할 수 있는 맴버의 개수가 달라진다. 그런데, 반대는 불가능하다. 자식 클래스 레퍼런스에 부모 클래스의 인스턴스를 넣을 수 없다. 이 경우에는..
추상클래스 추상클래스는 미완성된 설계도로 비유할 수 있다. 클래스가 미완성이라는 것은 맴버의 개수에 관계된 것이 아니라, 미완성 메서드(추상 메서드)를 포함하고 있다는 것이다. 미완성이기 때문에 인스턴스를 생성할 수 없다. 오직 상속을 통해 자손클래스에 의해서만 완성될 수 있다. 클래스의 선언부에 abstract라는 키워드를 달아 미완성 메서드가 있다는 사실을 알려주도록 하자 미완성 메서드 이외에는 전부 일반 클래스와 동일하다는 특징이 있다. - 추상 메서드를 호출이 불가능한 것은 아니다. 추상 클래스라고 해서, 모든 메서드들이 추상 메서드 인 것은 아니다. 추상 메서드 추상 메서드는 선언부만 작성하고, 구현부는 남겨둔 것이다. 즉, 설계만 해놓고 실제 수행될 내용은 작성하지 않았기 때문에 미완성 메서드..
제어자(modifier) 제어자 제어자는 클래스, 변수 또는 메서드의 선언부에 함께 사용되어 부가적인 의미를 부여한다. 제어자의 종류는 크게 접근 제어자와 그 외의 제어자로 나눌 수 있다. 접근 제어자 : public, protected, default, private 그 외 : static, final, abstract , native, transient, synchronized , volatile, stricfp 하나의 대상에 대해서 여러 제어자를 조합하여 사용하는 것이 가능하다. 단, 접근 제어자는 4가지 중에 하나만 사용가능하다. static - 클래스의, 공통적인 클래스가 메모리에 로드될 때 생성되므로 인스턴스와 상관이 없다. 메서드 : static 메서드는 인스턴스 맴버들을 직접 사용할 수 없..