목록Language (17)
보근은 참고 있다
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/bU6Wn8/btrcACs1Roi/hOfy1ztNK3AQF2perTIS30/img.png)
JS의 함수 호출은 C/C++ 등의 엄격한 문법 체크를 하는 언어들과 달리 자유롭다. arguments 객체 JS는 함수를 호출할 때 함수 형식에 맞춰 인자를 넘기지 않더라도, 에러가 발생하지 않는다. function f(arg1, arg2) { console.log(arg1, arg2); } f();// undefined undefined f(1);// 1 undefined f(1, 2);// 1 2 f(1, 2, 3);// 1 2 함수에 정의된 파라미터가 들어오지 않으면 그냥 undefined로 할당해버린다. 반대로 함수에 정의된 인자의 개수보다 더 많은 인자가 들어오면 오류를 내지 않고 그 인자 값을 버려버린다. 작동이 멈추는 걸 최소화 하기 위한 JS의 특성 때문에 이런식으로 동작을 하지만, 런타..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cXYAbb/btrcs9qQiaJ/KCnnFwTaEKWC6mvzx9Tm0K/img.png)
함수의 생성 함수 선언문 함수 표현식 Function() 생성자 함수 //함수 선언문 function add1(x, y) { return x + y; } //함수 표현식 var add2 = function (x, y) { return x + y; }; // Function 생성자 함수 var add3 = new Function('x', 'y', 'return x + y'); console.log(add1(1, 2));// 3 console.log(add2(1, 2));// 3 console.log(add3(1, 2));// 3 위의 세 가지 방법으로 생성한 함수는 모두 똑같이 동작해서 같은 결과를 보여주지만, 동작 방식의 차이가 있다. 그중 하나가 함수의 호이스팅(Function Hoisting)이다. ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/GonbK/btrbrU2IKEU/ZCdvE12vQCycT9KWIk0rQ0/img.png)
배열은 특별한 형태의 객체이다. C나 Java의 배열과 기능은 비슷하지만, 크기가 가변적이며, 어떤 위치에 어떤 데이터 타입을 저장해도 에러가 생기지 않는다. 배열의 생성 배열 리터럴 객체의 중괄호처럼 배열의 리터럴은 대괄호 ( [ ] )를 이용하여 생성한다. 생성자 함수 new Array() 생성자 함수를 통해서 배열을 생성한다. var array1 = new Array();// 빈 배열 생성. console.log(array1);// [] console.log(array1.length);// 0 var array2 = new Array(3);// 길이가 3인 빈 배열 생성. console.log(array2);// [undefined, undefined, undefined] console.log(ar..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dLvyGT/btraWvRuUkl/VQwnb5s9Z0ACjmRR1Jnbwk/img.png)
JS는 동적 타입 체크 언어로, 변수를 선언할 때 타입을 따로 지정하지 않으며, 런타임 시점에 변수의 타입이 결정된다. 또, 런타임 시점에 동적으로 변수의 타입이 변경이 가능하기 때문에 변수의 타입을 다른 것으로 변경할 수도 있다. 기본 타입 이 타입의 변수들은 그 자체가 하나의 값을 나타낸다. JS에서는 이 기본 타입들만이 유일하게 객체(Object)가 아니지만, 기본 타입에서 숫자, 문자열, 불린은 객체로 사용할 수도 있다. 숫자 JS에서 정수와 실수 모두를 Number로 표현한다. JS에서는 숫자를 64비트 부동 소수점 형태로 저장하기 때문에, 정수와 실수를 모두 표현할 수 있다. 소수점 아래에 값이 없으면 정수처럼 표기를 하고, 소수점 아래에 값이 있으면 소수처럼 표기를 해준다. 문자열 문자열은 ..
Upcasting은 하위 클래스의 오브젝트를 상위 클래스 타입으로 선언하는 것이다. 하위 클래스들은 상위 클래스의 속성들을 상속받기 때문에 상위 클래스의 멤버 변수나 메소드에 접근할 수 있다. 그렇기 때문에 Upcasting은 따로 명시를 하지 않는 암묵적인 형변환을 허용한다. Downcasting은 상위 클래스의 오브젝트를 하위 클래스 타입으로 선언하는 것이다. 상위 클래스들은 하위 클래스의 속성들을 상속받지 않을 수도 있기 때문에 멤버 변수나 메소드에 접근할 수 없다. 그렇기 때문에 Downcasting은 암묵적인 형변환이 허용되지 않는다. Parent p = new Child(); // Upcasting으로 Child 인스턴스가 Parent 타입으로 선언됨. Child c = (Child) p; /..
String 자바에서 문자열을 나타내기 위한 클래스이다. 자바의 String은 특별한 취급을 받는다. - 문자열 선언 String s1 = "abc"; String s2 = new String("abc"); s1 = "abcd"; 자바의 참조 타입은 new 연산자를 통해 초기화하는 것이 원칙이지만, String은 위처럼 바로 문자열을 넣어 초기화할 수 있다. String은 immutable하기 때문에 아래처럼 s1 객체에 "abcd"를 할당해주면 기존의 "abc"가 변하는 것이 아닌, 새로운 인스턴스 "abcd"를 만들어 할당해준다. - 주소값 할당 String s = "a"; String s1 = "a"; String s2 = new String("a"); String s3 = String.valueO..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/be0EWk/btqRXG230jZ/eYLm7ZNkSK39Yt0NYYGL4K/img.png)
package 키워드 import 키워드 클래스패스 CLASSPATH 환경변수 -classpath 옵션 접근 지시자 클래스의 이름 클래스의 이름은 두 가지가 있다. 클래스 파일 자체의 이름과 패키지+클래스의 이름인 FQCN(Fully Qualified Class Name)이 있다. String 클래스를 예시로 들어보면 java.lang.String이 FQCN이다. 같은 이름을 가진 서로 다른 클래스가 있다면, 이렇게 사용해야 한다. import mypackage.MyClass; class Main { public static void main(String[] args) { MyCalss m1 = new MyClass(); // mypackage.MyClass yourpackage.MyClass m2 = ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/3Cy7K/btqQKvinOAY/hbRztMnr5DhSwIDdPXii81/img.png)
자바 상속의 특징 super 키워드 메서드 오버 라이딩 다이내믹 메서드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 상속 상속이란? 한 클래스가 다른 클래스의 속성들을 획득하는 것. 상속을 통해 자식 클래스는 부모 클래스의 필드와 메서드를 재사용할 수 있다. OOP의 주요 개념이다. 아주 합리적이고 똑똑한 거 같다. 단일 상속 : 한 클래스가 하나의 클래스만을 상속받는다. 다단계 상속 : 클래스가 기본 클래스가 아닌 기본 클래스의 파생 클래스를 상속받는다. 계층적 상속 : 한 클래스가 여러 하위 클래스에 상속을 한다. 다중 상속 : 한 클래스가 여러 개의 클래스를 상속받는다. 자바 상속의 특징 상속을 해주는 상위 클래스를 부모 클래스(Paren..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/cX6nhV/btqQIbqLFWq/aa1BYVXKXFOerCFSYyYIKK/img.png)
클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 클래스 정의하는 방법 클래스란, 모든 Java 프로그램의 가장 기본적인 구조를 이루는 요소이다. 클래스는 필드와 메소드를 포함하며 새로운 참조 타입을 정의하기도 한다. 클래스의 기본 구성 필드 변수(멤버 변수) 메소드 생성자 class MyClass { String name; // 멤버 변수들 int age; public MyClass() { // Default 생성자 } public MyClass(String name, int age) { // AllArgs 생성자 this.name = name; this.age = age; } public void print() { /..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/c0hBgI/btqPTDBShz6/KQK64j4eQnjRPOJcLbGCCk/img.png)
선택문 반복문 과제 0 : JUnit 5 학습하세요. 과제 1 : live-study 대시 보드를 만드는 코드를 작성하세요. 과제 2 : LinkedList를 구현하세요. 과제 3 : Stack을 구현하세요. 과제 4 : 앞서 만든 ListNode를 사용해서 Stack을 구현하세요. 과제 5 : Queue를 구현하세요. 선택문 switch는 if처럼 프로그램 내에서 분기를 만들어 준다. switch가 하는 일을 if와 else if, else로 충분히 할 수 있지만 단일 변수에 의존하는 분기 상황의 경우 switch문이 더 뛰어난 가독성을 보여준다. switch의 분기를 나타낼 변수는 char, byte, short, int와 이들의 wrapper class, String과 enum이 올 수 있다. in..