16일차(6/28수)
JS
Scope ( 스코프 )
변수가 적용되는 범위
onclick(온클릭)
⇒ js의 fucntion을 클릭으로도 실행할 수 있다!!
Function(함수)
- 펑션 내부 함수는 펑션에만 존재한다. 밖에서 그 값을 불러오는건 안됨.
⇒반복해서 쓸 수 있는 코드조각
ex) function sayHello() { console.log("Hello my name is"); }
⇒sayHello(); 라고 하면, 중괄호 안의 명령어가 튀어나옴!!
펑션 정의
const 펑션정의. 여러펑션을 정의하거나, 아래와같이 object를 만듦과 동시에 펑션정의가능.
계산기만들기
익명함수
- 이름이 없는 함수
- 함수를 변수에 할당 가능
- 함수를 익명으로 정의하면 함수에 이름을 붙이지 않고 사용할 수 있다.
- 일회성으로 사용되거나 한정적인 범위에서 사용될 때 특히 유용
사용처
- 콜백 함수에서 사용
- 다른 함수의 인자로 전달되어 특정 이벤트나 조건이 발생했을 때 호출되는 함수
- 즉시 실행 함수에서 사용
- 함수를 정의하자마자 즉시 실행되는 함수
선언적 함수
- 함수 선언문을 사용하여 이름과 함께 함수를 정의하는 방식
Java
String 클래스
Split 함수
StringBuffer 클래스
- 힙의 인스턴스를 추가로 생성하지 않고 변경해주는 역할!
- StringBuffer 클래스는 String 클래스와 마찬가지로 문자열을 나타냄
- StringBuffer 클래스의 인스턴스는 그 값을 변경하거나 추가할 수 있기 때문에 변경(수정)가능한 String 객체를 생성하는데 사용됨.
메서드종류
- append(”
”) : “”이 끝에 추가됨
- insert(n) : n번째 이후에 추가해라
- replace(n,m,”
”) : n부터 m 이전까지 “”로 대체
- delete()
- reverse()
StringBuilder클래스
- StringBuffer랑 똑같은데, 동기화(동시에 접근한다는 개념)가 되지 않는다는 특징이 있음.
래퍼클래스(wrapper)
- 8개의 기본 자료형에 해당하는 데이터를 객체로 포장하는 클래스
-
기본 자료형을 객체로 변환하여 사용
기본형을 wrap으로 싸서 객체로 포장한다는 개념!
💡 **클래스를 생성하거나 다른 클래스로 데이터를 전송할 때, 객체형으로 전달해야할 때가 있다.**
기본형 - stack에 저장
객체형 - heap에 저장
기본형→객체형 (박싱)
객체형→기본형(언박싱)
Integer
-
Integer
는 객체형(Integer wrapper class)
- 자동으로 기본 자료형을 해당하는 객체형으로 변환
- 이것을 오토박싱이라고 한다.
-
int
는 기본 자료형(Primitive type)
intValue
Integer
객체를 기본 자료형 int
로 변환하여 반환하는 역할
명시적/묵시적 - 박싱/언박싱
Date패키지
Date의 내장함수
- System.cureentTimeMillis() 내장함수 사용가능 (위 사진)
- after ( 아래사진 )
- before ( 아래사진 )
Calendar 클래스
-
변수.get( )
- Calendar.YEAR
- Calendar.MONTH
- Calendar.DATE
- Calendar.DAY_OF_MONTH
- Calendar.HOUR
StringTokenizer 클래스 (split과 유사하다.)
-
특정 구분자로 연결되어 있는 문자열을 ‘토큰’이라는 여러 문자열로 분리하는데 사용한다.
-
특수문자 뿐만 아니라 공백, 한 문자, 문자열을 구분자로 사용할 수 있다.
-
hasMoreTokens()
-
nextToken()
익명 클래스
- 이름이 없는 일회용 클래스. 정의와 생성을 동시에 한다.
- new 조상클래스 이름() {}
- new 구현인터페이스이름() {}
ch8
프로그램 오류
- 컴파일 에러 (컴파일 오류)
- ex_) System. 을 system. 으로 적는 등
- 런타임 에러 (실행 오류)
- 논리적 에러 (작성 의도와는 다르게 동작하는 에러)
자파의 런타임 에러
- 에러 : 프로그램 코드에 의해서 수습될 수 없는 심각한 오류
- 예외 : 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류
예외처리
- 정의
- 프로그램 실행시 발생할 수 있는 예외 발생에 대비한 코드를 작성하는 것
- 목적
- 프로그램의 비정상 종료를 막고, 정상적인 실행상태를 유지하는 것
try-catch문 ( 예외 처리하기 )
instanceof (객체의 타입을 확인하기 위해 사용되는 연산자)
객체의 타입을 확인하기 위해 사용되는 연산자
printStackTrace()와 getMessage()
- printStackTrace()
- 예외발생 당시의 호출스택(Call Stack)에 있었던 메서드의 정보와 예외 메시지를 화면에 출력한다.
- getMessage()
- 발생한 예외클래스의 인스턴스에 저장된 메시지를 얻을 수 있다.
멀티 catch블럭
-
내용이 같은 catch블럭을 하나로 합친 것
-
코드의 중복 제거
예외 발생시키기
-
연산자 new를 이용해서 발생시키려는 예외클래스의 객체를 만든 다음
ex_) Exception e = new Exception(”고의로 발생시켰음”);
-
키워드 throw를 이용해서 예외를 발생시킨다.
ex_) throw new Exception();
checked 예외, unchecked예외
- checked 예외: 컴파일러가 예외 처리 여부를 체크(예외 처리 필수)
- unchecked 예외 : 컴파일러가 예외 처리 여부를 체크 안함(예외 처리 선택)
메서드에 예외 선언하기
-
try-catch문
finally 블럭
사용자 정의 예외 만들기
- 직접 예외 클래스를 정의할 수 있다.
- 조상은 Exception(사용자가 발생시키는 예외)과 RuntimeException(프로그래머의 실수로 발생시키는 예외) 중에서 선택
exception은 try catch 필수
Runtime exception은 try catch 필수X
가장 중요한것은!
- exception필수처리 과 RuntimeException선택처리 중에 어떤걸 조상으로선택할지 정하는 것
- String 매개변수가 있는 생성자를 넣어주는 것
예외 되던지기(exception re-throwing)
- 예외를 처리한 후에 다시 예외를 발생시키는 것
- 호출한 메서드와 호출된 메서드 양 쪽 모두에서 예외처리 하는 것
- Why?
- 별 건 없고, 그럴 상황이 있을 수 있다.
- 양 쪽에서 분담해서 처리하는 것.
연결된 예외(chained exception)
- 한 예외가 다른 예외를 발생시킬 수 있다.
- 예외 A가 예외 B를 발생시키면 A는 B의 원인 예외(cause exception)
Throwable initCause(Throwable cause) ⇒ 지정한 예외를 원인 예외로 등록
Throwable getCause() ⇒ 원인 예외를 반환
예외타입2 : 실제 발생할 에러
예외타입 1 : 예외2에 넣음
통째로 호출한메서드한테 던짐
그럼 예외타입1만 던져도 되는셈이다~
기존 : 공간이부족합니다
연결된예외 : (대략적인정보) 설치 중 예외 발생, (세부 정보) 공간이 부족합니다.
사용하는 이유!
hashCode() - 객체의 지문
-
객체의 해시코드(hash code)를 반환하는 메서드 (주소를 반환)
-
Object클래스의 hashCode()는 객체의 주소를 int로 변환해서 반환
-
equals()를 오버라이딩 하면, hashCode()도 오버라이딩 해야한다.
⇒해시 기반 자료 구조(예: 해시맵)에서 사용되며, 객체를 효율적으로 저장하고 검색하는 데 활용
identityHashCode()
toString(), toString()의 오버라이딩
ex_)
System.out.println(new Card().toString());
결과 : 클래스이름@주소값
ex_)
public String toString(){
return “kind : “ + kind(iv) + “, number : “ + number(iv);
}
iv값을 이용해 오버라이딩할때 효과적이다.
MySQL
duplicate on key update
- 레코드를 삽입하려는 경우 해당 레코드가 이미 테이블에 존재하는 경우 업데이트 작업을 수행하는 기능을 제공
with절과 CTE 개요
- with 절은 cte(Common Table Expression)을 표현하기 위한 구문
- cte는 기존의 뷰, 파생 테이블, 임시 테이블 등을 대신할 수 있으며 간결한 식으로 보여짐.
- cte는 ansi-sql99표준
- cte는 비재귀적 cte와 재귀적 cte가 있지만 주로 사용되는 것은 비재귀적 cte
ex_) 아래로 한 묶음 !
with cte_테이블이름(열 이름)
as (
<쿼리문>
)
select 열 이름 from cte_테이블이름 ;
숫자 데이터 형식
문자 데이터 형식
날짜와 시간 데이터 형식
MySQL에서 지원하는 데이터 형식의 종류
JSON; JavaScript Object Notation
- 데이터를 저장하고 전송하기 위한 경량의 데이터 교환 형식
- JavaScript에서 객체를 표현하기 위한 텍스트 기반 형식
- JSON은 사람이 읽고 쓰기 쉽고 기계가 파싱하고 생성하기도 간편한 형식
외부에서 들어오는 쿼리 검증
데이터 형식과 형 변환
암시적인 형 변환
- CAST()나 CONVERT()함수를 사용하지 않고 형이 변환되는 것