본문 바로가기

Language

(21)
Java - 입/출력 + 예외 Java에서 파일과 스트림(Stream)은 데이터를 저장하거나 읽고 쓰는 작업에 중요한 역할을 한다.1.  File파일은 컴퓨터의 저장 장치(디스크)에 데이터를 영구적으로 저장할 수 있는 구조이다.어떤 소프트웨어로 생성한 데이터를 저장하면 데이터 파일이 생성되고 그 파일을 읽을 수 있다.파일은 크게 텍스트 파일(사람이 읽을 수 있음)과 바이너리 파일(사람 못 읽음)로 나뉜다.예: java 프로그램(텍스트파일), 텍스트파일을 컴파일한 파일(바이너리 파일) Java에서는 파일을 읽고 다루기 위해 java.io 패키지와 java.nio.file 패키지를 제공한다. java.io.File파일 및 디렉토리를 표현하는 클래스파일의 존재 여부, 크기, 경로 확인, 삭제 등 메타 정보 처리에 사용한다.import ja..
Java - 연산자 1. 산술 연산자수학처럼 계산에 사용되는 연산자를 말한다.연산자설명예시의미+ 더하기a = b + ca에 b+c를 대입한다-빼기a = b - ca에 b-c를 대입한다*곱하기a = b * ca에 b*c를 대입한다/나누기a = b / ca에 b/c를 대입한다 %나머지a =b % ca에 b/c의 나머지를 대입한다2. 대입 연산자 (=)변수에 값을 대입하는 연산자이다.연산자설명예시의미=변수에 값을 대입a = a +b변수 a에 a+b의 결과를 대입한다+=더한 값을 대입a +=  b변수 a에 a+b의 결과를 대입한다-=뺀 값을 대입a -= b변수 a에 a-b의 결과를 대입한다*=곱한 값을 대입a *= b변수 a에 a*b의 결과를 대입한다/=나눈 값을 대입a /= b변수 a에 a/b의 결과를 대입한다%=나머지를 대입a..
Java - 출력, 데이터 타입 Java에서는 print(), println() 메소드를 사용해서 문자를 출력한다.이 출력 메소드를 실행시키기 위해서는 main() 메소드안에 기술해야한다.1. 프로그램 만들기 - 출력하기main() 메소드는 엔트리포인트(프로그램 시작지점)으로 커맨드라인에서 프로그램을 실행시키면 가장 먼저 처리된다.main() 이 없으면 컴파일과 프로그램 실행을 할 수 없다.java 프로그램의 기본형은 아래와 같다.main 메서드는 프로그램의 시작점이므로, 객체 생성 없이도 바로 호출할 수 있어야 하므로 static 키워드를 사용한다. 이름설명class새로운 클래스를 정의할 때 사용하는 키워드class명클래스의 이름을 의미하며, 자바에서는 클래스 이름이 파일 이름과 동일해야한다.public접근 제어자중 하나로, 해당 클..
JAVA - 특징, JVM java 는 현재 대표적인 프로그래밍 언어중 하나이다.C나 C++과 비슷한 표기법을 가지나, 포인터라는 개념이 없어 보다 다루기 쉽다. 특징1. 객체 지향객체 지향이란 프로그램의 기능을 그룹별로 나누고, 조합하여 프로그램을 작성하는 것을 말한다.Java는 객체지향 언어로 보다 복잡하고 높은 수준의 프로그램을 만들수 있다. 2. 호환성보통 프로그램은 운영체에따라 동작이 다른데, JAVA 프로그램은 Java VM이라는 실행환경만 있으면 어떤 운영체제에서도 실행 할 수 있다. 3. 개발활경이 좋음다른 언어들도 그렇지만 JAVA는 더 풍부한 기술을 포함하는 라이브러리들을 표준으로 이용할 수 있다. Java 로 만들수 있는 애플리케이션의 종류1. CUI 애플리케이션 명령 프롬프트나 MS-DOS 프롬프트처럼 문자 ..
자바스크립트 내부 동작 과정 첫 면접을 봤는데 2차부터 4차 면접까지 꾸준하게 받은 질문이 eventloop와 garbage collection이였다. 책에서 스윽 보고지나가면서 대충 이런거구나하고 넘겼는데 계속 질문이 들어오는게 많이 부족하게 대답한 듯..🥲 그래서 다시 책을 읽으면서 자세히 정리해보았다. 0. 비동기처리의 환경구조와 용어정리 자바스크립트 엔진(런타임)은 memory heap과 call stack으로 이루어져있다. heap은 구조화되지않는 큰 메모리 영역으로 말한다. 객체는 힙에 할당된다. memory heap은 자바스크립트의 객체(함수,변수 등)에 메모리 할당이 일어나는곳으로 크기가 변하는 값의 참조값을 가지고 있다. wep API는 브라우저에서 구현된 API로, node에서는 background라고 하며, 비동..
Class와OOP 코테스터디때 팀원들이 설명하면서 class,class하는데 나는 아직도 class가 뭔지 모른다. 딥다이브를 읽다보면 알겠지했는데 딥다이브에서 만나기전에 nestjs에서 만났다. 정확히 class가 뭘까? 1. Class class 객체 지향 프로그래밍에서 객체를 정의하기 위한 상태와 함수로 구성된, 객체를 생성하기위해 변수와 함수를 정의하는 틀이다. tree 라고도하는데 객체를 만들기위한 설명서라고 생각하면된다. class를 사용하여 새로운 객체(인스턴스)를 만들 수 있다. 클래스를 사용하는 이유는 동일한 종류의 객체를 여러개 만들어야하는경우, 같은 기능들을 하나로 묶어서 호풀하면 편하게 사용할수 있기 때문이다. class name{설명}의 설명대로 만들면 new name()의 새로운 인스턴스(객체) ..
함수에 타입 지정하기 function type 함수에 타입을 지정할때 파라미터와 return값, 2군데에 타입을 지정할 수 있다. 1. 파라미터에 타입 지정하기 위 이미지의 add(x)의 x부분에 ...표시를 해놓고 any타입을 임시적으로 주었으고 타입을 설정해주라고 한다. 함수의 매개변수에 타입을 지정하는 방법은 변수 타입을 선언할때와 같다. let a;라고 선언만 해두면 타입스크립트는 타입을 any로 자동할당해준다. function add(x: nember) { //매개변수에 타입을 지정 return x + 4; } 2. retrun 값의 타입 지정하기 function add(x): number { //return 값을 숫자타입으로 지정 return x + 4; } add(1); //5가 리턴 add("6"); //err..
TypeScript TypeScript란? TypeScript는 자바스크립트의 문법을 사용하는데 타입을 정하여 사용하는 언어이다. 그런데 새로운 언어로보기다는 애매하고 자바스크립트의 에디터로 부가기능으로 봐도될듯하다. 하지만 typescript에서만 지켜야할 규칙도있고 타입외의 문법도있어 따로 공부해본다. 자바스크립트의경우 Dynamic Typing을 지원하여 자유도가 높아 3 - '3'고 계산이 가능하다 무슨말이냐면 숫자형은 숫자형으로만 계산이 가능한데, 위는 숫자형 - 문자형을 js가 문자형을 숫자로 알아서 바꿔줘서 계산해준것이다. 프로젝트가 작을경우에는 좋은기능이지만 프로젝트가 클경우 이러햔 자유도는 독이 된다. 타입스크립트의경우 타입을 정해서 사용하기때문에 에러로 타입이 다르다고 알려주며 타입이 정해짐..
Class와 OOP 코테스터디때 팀원들이 설명하면서 class,class하는데 나는 아직도 class가 뭔지 모른다. 딥다이브를 읽다보면 알겠지했는데 딥다이브에서 만나기전에 nestjs에서 만났다. 정확히 class가 뭘까? 1. Class class 객체 지향 프로그래밍에서 객체를 정의하기 위한 상태와 함수로 구성된, 객체를 생성하기위해 변수와 함수를 정의하는 틀이다. tree 라고도하는데 객체를 만들기위한 설명서라고 생각하면된다. class를 사용하여 새로운 객체(인스턴스)를 만들 수 있다. 클래스를 사용하는 이유는 동일한 종류의 객체를 여러개 만들어야하는경우, 같은 기능들을 하나로 묶어서 호풀하면 편하게 사용할수 있기 때문이다. class name{설명}의 설명대로 만들면 new name()의 새로운 인스턴스(객체) ..
제어문 제어문은 조건식에따라 코드블록을 실행하거나 반복문을 실행할때 사용한다. 코드는 보통 위에서 아래로 실행되는데, 제어문을 사용하면 실행순서를 인위적으로 제어할 수 있다. 하지만 인위적으로 제어시 가독성이 나빠지고 오류가 발생 할 수 있다. 1. 블록문 블록문은 자바스크립트에서 하나의 실행단위로 중괄호로 묶인 블록(코드블록)이다. { //블록문 let a = 1; } 단독으로 쓰이거나 제어문, 함수정의로 사용된다. 블록문은 항상 문의 종료를 의미하기때문에 세미콜론을 붙이지 않는다. 2. 조건문(conditional statement) 조건문은 조건식의 평가결과에따라 실행할 코드브록을 결정한다. if (a % 5 == 0) { /*조건식*/ return a; } 조건문에는 if..else문과 switch문의 ..
연산자 연산자란 연산자는 하나 이상의 표션식을 대상으로 산술,할당,비교,논리,타입,지수연산등을 하나의 값으로 만드는작업을 수행한다. 연산자는 피연산자를 연산하여 새로운 값을 만드는데 피연산자는 값으로 평가될 수 있는 표현식이여야한다. 연산자의 부수효과 대부분의 연산자는 다른 코드에 영향을 주지않으나 일부 연산자는 다른 코드에 영향을 주는 부수효과를 가지고 있다. 대표적으로 부수효과가 있는 연산자는 할당 연산자(=), 증감연산자(++/--),delete연산자가있다. 연산자 예시 = 변수 값이 변하는 부수효과가있으며, 변수를 사용하는 다른 코드에 영향을 준다. ++/-- 피연산자의 값을 재할당하여 변수를 사용하는 다른코드에 영향을 준다. delete 객체의 프로퍼티를 삭제하는 부수효과가있다.객체를 사용하는 다른코드..
Data Type 데이터타입은 값의 종류를 말하며, 자바스크립트의 모든 값은 데이터타입을 갖는다. 자바스크립트는 ES6에서 7개의 데이터 타입을 제시하며, 원시타입과 객체타입으로 분류할 수 있다. JavaScript의 데이터타입의 종류 Data(자료)란 프로그램이 처리할수 있는 모든것으로 자효형태에 따라 나눠놓은것을 자료형(DataType)이라 한다. 자바스크립트의 데이터 타입은 원시타입과 객체타입으로 나뉜다. 원시타입(Primitive dataType): 객체가 아닌 기본자료형이라고 하며, 변경불가능한 값으로 값에 의해 전달(pass-by-value)된다. 객체(참조)타입(Object type, Reference type):객체를 기반으로 하는 자료형으로, 참조에의한 전달(pass-by-reference)방식으로 전달된..
표현식과 문 변수는 하나의 값을 저장하기위해 확보한 메모리공간자체 또는 그 메모리 공간을 식별하기위해 붙인 이름으로 변수에 할당되는 것이 값이다. 1. 값(value) 과 리터럴(literal) 1. 값 값은 표현식(statement)을 평가(evaluate),참조하여 생성된 결과를 말한다. 모든 값은 데이터타입을 가지며 메모리에 2진수(bit)로 저장된다. 2. 리터럴 리터럴은 사람이 이해할 수 있는 문자 또는 약속된 기호("", ., [], {})를 사용하여 값을 생성하는 표기법이다. js에서 3은 단순한 숫자가 아니라 숫자 리터럴이다. 사람이 이해하는 숫자 3을 사용해 숫자 리터럴 3을 코드에 기술하면 자바스크립트 엔진이 이를 평가하여 숫자 값 3을 생성한다. 리터럴의종류 종류 예시 종류 예시 정수 1 객체 {..
Hoisting(호이스팅) 1. 호이스팅이란? 호이스팅이란 인터프리터가 모든(함수,변수)선언문의 메모리공간을 선언전에 미리 할당하여 상단으로 올려서 선언문을 유효범위의 최상단으로 옮겨진것처럼 작동하는 자바스크립트의 독특한 특징을 말한다. ✅ 유효범위? 변수에 접근할 수 있는 범위 ✅ block-level-scope? {}로 쌓여진 범위, let,const로 변수생성시 유효한 범위. ✅ function-level-scope? function(){}의 {}내의 범위, var로 변수생성이 유효한 범위. ✅ 유효범위의 최상단? 변수가 함수안에 정의: 선언문이 함수의 최상단으로 호이스팅 된다. 변수가 함수밖에 정의: 선언문이 전역의 최상단으로 호이스팅 된다. 아래의 코드를 보면는 인터프리터에의해 위에서부터 한줄씩 실행되기때문에 refere..
variable(변수) 애플리케이션은 데이터를 다루는데 변수는 이 데이터를 관리하기위해 사용하는 중요한 용어이다. 1. 변수에 대해서 변수는 하나의 값을 저장한 메모리공간으로 그 메모리공간을 식별하기 위해 붙인 이름이다. 메모리에 저장된 값을 식별할 수 있는 고유명을 변수명이라하고, 변수에 저장된 값을 변수 값이라 한다. 변수에 값을 저장하는것을 할당(assignment), 값을 읽어오는 것을 참조(reference)라 한다. 변수명을 사람이 이해하기 쉽게 지음으로써 가독성을 높일수있다. 2. 변수 선언과 호이스팅 쓰다보니 길어져서 따로 작성하였다. 변수를 사용하려면 반드시 변수를 선언해야한다. 변수를 선언하면 값을 저장할 메모리 공간을 확보(allocate)하고 변수명과 확보한 메모리 공간의 주소를 연결하여 값을 저장할 수 ..
텍스트 문자열 연결하기 1. 텍스트 문자열의 연결 alert함수에 텍스트를 입력하면 같은 텍스트가 항상 출력된다. 그렇다고 항상 텍스트를 교체하기는 귀찮은데 이럴때는 변수를 사용하면 변수값에따라 내용을 바꿀 수 있다. let name = "김"; console.log("안녕하세요" + name + "씨"); // "안녕하세요 김 씨" 2. 텍스트 + 텍스트 String 과 String를 합치면 String이다. 만약 띄어쓰기를 넣고싶다면 " "를 사용하면 띄어쓰기를 포함한 문자열이 출력된다. console.log("안녕" + "하세요"); console.log("안녕" + "하" + "세요"); console.log("안녕" + "하세" + "" + "요"); //위의 3가지 다 '안녕하세요' console.lo..
Math Expression 1. 수학 표현식 JavaScript는 코드에 숫자 데이터타입과 사칙연산같은 수학 표현식을 사용하여 숫자를 계산할 수 있다. 2. 생소한 수학 표현식 1. ++ / - - ++는 변수의 값에 1을 간단하게 더할 수 있게 해준다. 반대로 -- 는 변수에서 1을 빼준다. 참고로 const를 사용하면 값을 재할당을 할수 없어 에러가 뜬다. 증감연산자를 사용하는경우 ++/--의 위치에따라 다르게 사용하기때문에 주의해야한다. ++를 하면 1이 붙어서 나올것같지만 실제로는 다른값이 나올수 있다. 1) number++ 아래의 코드는 어떤 값이 나올까? let a = 1; let aPlus = a++; 나는 1과 2가 나올줄 알았는데, 답은 2와 1이였다. 이렇게 나온 이유는 대개 코드는 위에서부터 스캔하기도하지만 동..
Return 1. 함수의 return(반환) 위에 사용한 return은 함수의 값을 반환한것인데, 처음 공부했을때 이 return이라는게 이해가 안갔었다. 아래의 인용글은 처음 공부했을때 레플릿의 설명이 이해가안됬던 부분이 이다. 모든함수가 return을 포함해야하는건 아닙니다. 함수내부에 return 키워드를 생략할 수 도 있습니다. 하지만 이경우에도 함수는 무언가를 반환하고 있습니다. 함수가 반환을 생략하면 undefined라는 값을 반환합니다. return를 생략해도된다고해서 처음 공부했을때 모든함수에 변수선언만하고 return을 안써서 왜안뜨냐며 헤맸었다. 함수는 값을 불러오려고 쓰는것인데 함수내부에 점수는 이거다라고 변수선언을 해놓고 그 값을 반환하지 않으면 함수는 내 놓을 값이 없어서 undefined를 ..
Function 1. 함수란? 함수는 하나의 특정한 작업을 수행하도록 설계된 독립적인 블록이다. 블록이란 코드에서 {}로 쌓인 부분을 말한다. 블록내에서 정의된 변수를 외부에서 호출할 경우 접근할 수 없다. (반면 전역함수의 경우 모든 전역변수와 함수에 접근이 가능하다.) 이 블록에서 작동하는 범위를 함수의 유효범위라하며, 자바스크립트는 함수를 블록대신 사용할 수 있다. 1-1. 함수의 형태 함수의 형태는 function이란 키워드로 시작하여 함수의 이름을 선언하고 ()를 붙인뒤 {를 붙여 함수의 시작을 알린다. 함수에서 실행할 내용은 {}안에 작성하며 함수의 body라고 한다. body의 내용은 들여쓰기를 하는데 함수내부의 코드임을 알기 쉽게하기위하여 들여쓰는것이다. 함수의 값으로 반환할 것이 있다면 return문을 ..
JavaScript의 데이터타입 JavaScript의 데이터타입의 종류 Data(자료)란 프로그램이 처리할수 있는 모든것으로 자효형태에 따라 나눠놓은것을 자료형(DataType)이라 한다. 자바스크립트의 데이터 타입은 원시타입과 객체타입으로 나뉜다. 원시타입(Primitive dataType): 객체가 아닌 기본자료형이라고 하며, 변경불가능한 값으로 값에 의해 전달(pass-by-value)된다. 객체(참조)타입(Object type, Reference type):객체를 기반으로 하는 자료형으로, 참조에의한 전달(pass-by-reference)방식으로 전달된다. 자바스크립트는 객체기반의 스크립트 언어로 원시타입을 제외한 모든것이 객체로 이루어져있다. 원시타입 객체타입 Number Object String Boolean Null Und..
JavaScript의 역사 javaScript란? 웹사이트와 상호작용하여 페이지를 동적이게 만드는 언어로 .js라는 확장자를 가진다. 사용자가 브라우저에서 행하는것을 처리하고, 데이터를 저장하거나, 네트워크 요청(req)과 응답(res)를 처리할 수 있다. (java와는 아무 상관이 없다) 1. 자바스크립트의 역사 1. 탄생과 변명(?) 1995년 넷스케이프 커뮤니케이션즈가 웹페이지의 보조적인 기능을 수행하기 위해 브라우저에서 동작하는 경량 프로그래밍언어를 도입하기로 결정하고 브렌던 아이크가 자바스크립트를 개발하게 된다. 1996년 3월 모카(moca)로, 9월에는 라이브스크립트(liveScript)로, 12월에는 자바스크립트(javaScript)라는 이름으로 바뀌었다. 2. 표준화 1996년 8월 마이크로소프트는 javascri..