language 36

2. JS 핵심 - 연산자

1. 연산자 규칙 + : 문자열을 합치는 역할도 수행한다. 그래서 우선 순위가 문자열 합하기, 산술계산(type이 number일 때만) - : 산술계산에서만 사용. 그래서 모든 type을 number로 자동 형변환하는데 이때 number로 변환이 안되는 수는 NaN 반환 **: 제곱 JS는 문자열을 중요시하기 때문에 정렬관련된 부분들은 다 사전 순서이다. 비교 같은 일반적인 비교 연산자는 자동형변환을 하지 않는다. == : 비교연산자는 자동형변환을 해준다. != : 이것도 가능 === : 얘는 type 비교도 해주는 거여서 형변환 안됨 // 연산자 let a = 7 + "5"; // +는 string 합을 나타내는 연산자로 사용될 수 있어서 string 형식 합 console.log(a); /..

language/javaScript 2023.04.18

1.JS 핵심 - window, dom, type, hoisting, scope, let, const, 형변환

0. window, document 0.1. window window : JS는 browser에서 사용하는 언어로 브라우저에서 사용하는 모든 기능을 window라는 객체에 저장 했다. scope 전역 : window 객체 영역 지역 : function이나 객체 내부 영역 block scope: 객체의 { } 내부에서만 유효 function scope : 해당 method 내부에서만 유효 scope 큰 흐름 JavaScript 파일을 여러 개 가지고 있을 때, 각 파일마다 자신의 전역 스코프 존재 즉, 각 파일마다 window 객체에 해당하는 전역 객체가 있고, 그 안에서 변수와 함수가 정의 그러나 여러 개의 JavaScript 파일이 웹 페이지에서 로드되어 하나의 페이지에서 실행될 때, 각 파일의 전역 ..

language/javaScript 2023.04.17

원카드 만들기 - v2.설계도

1. 원카드 설계도 v2 v1 : hardCoding을 통해 원카드를 작성했기 때문에 설계도 조차 없다. v2 : v1에서 수정할 부분과 전반적인 상황이 눈에 들어오기 때문에 작을 클래스로부터 TDD를 수행하면서 키워나갔다. v2 자가피드백 재료에 속하는 class는 금방 만들어 냈지만 이 class들을 조합하는 과정인 Dealer, CardGame class는 아직 미숙하다. oneCard라는 게임이 복잡해서 더욱더 분리해서 메서드를 작성하기가 힘들었다. 그리고 CardGame에서보면 code가 메서드 명만 봤을때는 몇개 없지만 method 구현부자체가 너무 복잡하고 중복되는 부분들이 보였다. 그리고 class를 상속하는 class가 어떤식으로 연결될지 생각하면서 code를 짰지만 뭔가 찝찝한 부분들이..

language/java 2023.04.07

13. 쓰레드

1. 프로세스와 쓰레드 용어 프로그램이 실행되면 프로세스가 된다. program pro:진행되는 , gram: 정보 저장되는 파일 형태 저장 공간만 존재하면 된다 - HDD, SDD process cess==go 작업이 실행되는 것 명령어가 필요한 것 -CPU 프로그램을 더블 클릭 후 수행이 되는 상태로 변하면 프로세스가 된다. * 동영상같은 것은 데이터만 있기 때문에 프로그램이지만 프로세스가 아니다. process - 쓰레드 프로세스 : 작업에 필요한 데이터와 메모리 등의 자원 쓰레드로 구성되어 있는 것 쓰레드: 프로세스의 자원을 이용해서 실제로 작업을 수행하는 것 싱글쓰레드 : 자원 하나에 쓰레드 한 개 멀티쓰레드 : 자원 하나에 쓰레드 여러 개 -> 자원을 공유하기 때문에 동기화 문제가 생긴다. 2..

language/java 2023.04.07

Class 객체 - Reflection API

Class 객체 java.lang.Class 클래스는 모든 클래스의 메타 정보를 나타내는 클래스 클래스의 모든 정보 제공 : 생성자, 필드, 메서드, 접근 제어자,어노테이션 등등 클래스 당 1개만 존재 Class 객체 자체 메서드 존재 원리 Car class를 작성한 Car.java 파일이 존재 프로그램에서 참조변수로 해당 Car type을 부름 Car.java -> compile -> Car.class : 컴파일 완료 컴파일 된 .class 파일은 한 파일(xxx.java) 내에 여러 class 클래스명{}들이 존재하더라도 compile시 각각의 파일(.class)로 나누어준다. 그래서 Class 객체가 클래스당 1개만 존재가 가능 ClassLoader라는 것을 통해서 (위의 과정과 같이 클래스 정보..

language/java 2023.03.28

Object clone() - 얕은 복사, 깊은 복사

clone() _ 얕은 복사, 깊은 복사 clone() 인스턴스변수의 값만 복사하기 때문에 참조타입의 인스턴스 변수가 있는 클래스는 완전한 인스턴스 복제가 일어나지 않는다. 참조타입의 인스턴스 변수: 객체에 iv들이 존재하는데 iv 값이 다른 객체 주소를 가리키는 상황. 완전한 복제가 안된다는 의미: 객체까지는 복사가 됬는데 객체 내부의 iv가 가리기는 다른 객체는 서로 공유하는 상황 이와 같은 clone을 얕은 복사라고 한다. -> 서로 공유하는 객체가 존재하기 때문 clone() 사용 방법 clone의 얕은 복사로 인해 원본 객체에 영향을 끼치기 때문에 원본 보호 목적으로 특정 조건을 허용해야 clone()을 사용할 수 있도록 했다. implements Cloneable : interface 구현 접..

language/java 2023.03.28

List 구현

개요 LinkedList원리 Node를 통해서 객체들을 연결을 한 상태로 Node 내부에 data와 nextNode 주소, prevNode 주소 등이 들어갈 수 있다. 구현된 LinkedList 이용시 중간에 값 추가, 중간 값 삭제 등 배열보다 높은 성능을 보여준다. LinkedList 구현의 필요성 회전하는 순서 같이 LinkedList의 원리로 구현할 수 있는 부분들이 LinkedList에 구현이 되어있지 않다. ex) 1,2,3 이 저장된 list를 get(int index)을 통해서 뽑아낼때 indexrk list Node 수보다 많으면 예외발생 이 외에도 LinkedList를 직접 구현해야되는 상황이 생길시 구현을 할 줄 알아야한다. 구현 순서 LinkedList : 평소에 사용하는 Linke..

language/java 2023.03.27