본문 바로가기

언어53

[제어문] 반복문(for문, while문, do-while문) for문은 반복 횟수를 알고 있을 때 주로 사용한다. while문은 조건에 따라 반복할 때 주로 사용한다. while문과 do-while문의 차이점은 조건을 먼저 검사하느냐 나중에 검사하느냐일 뿐 동작 방식은 동일하다. 4.3.1 for문 int sum = 0; for (int i=1; i 2023. 1. 16.
[제어문] 조건문(if문, switch문) 제어문의 종류는 조건문과 반복문이 있다. 제어문은 (조건식) { }로 구성되는데, 조건식의 연산 결과에 따라 블록 내부의 실행 여부가 결정된다. 4.2.1 조건문 (if문) if (조건식) { } 조건식이 true면 블록을 실행하고 false면 블록을 실행하지 않는다. public class Main { public static void main(String[] args) { int score = 93; if(score >= 90){ System.out.println("점수가 90보다 큽니다."); System.out.println("등급은 A입니다."); } if(score < 90) System.out.println("점수가 90보다 작습니다."); //if 문과는 상관있는 실행문 System.out.. 2023. 1. 16.
[연산자] 비트 논리/이동 연산자, 대입/삼항 연산자, 연산의 우선순위 3.8 비트 논리 연산자 비트 논리 연산은 소형 임베디드 장치의 C 프로그램에서 외부 서버의 자바 프로그램으로 데이터를 전달한다고 가정하자. C 언어에는 unit8_t 타입이 있는데, 이 타입은 1byte 크기를 가지면서 0~255 값의 범위를 가진다. C 프로그램이 unit8_t 타입 136을 2 진수로 보내면, 자바는 2진수를 -120으로 읽게 된다. 그 이유는 자바는 최상위 비트가 1이면 음수로 인식하기 때문이다. -120을 . C 프로그램이 보낸 136으로 복원하고 싶다면 자바에서 Byte.toUnsignedInt()코드를 사용한다. 비트 논리 연산자는 bit 단위로 논리 연산을 수행한다. 0과 1이 피연산자가 되므로 2진수 0과 1로 저장되는 정수 타입(byte, short, int, long).. 2023. 1. 14.
[연산자] 정확한 계산, NaN과 Infinity, 비교 연산자, 논리 연산자 3.4 정확한 계산은 정수 연산으로 산술 연산을 정확하게 계산하고 싶다면 실수 타입을 사용하지 않는 것이 좋다 public class Main { public static void main(String[] args) { int apple = 1; double pieceUnit = 0.1; int number = 7; double result = apple - number*pieceUnit; System.out.println("사과 1개에서 남은 양: " + result); } } //출력 : 사과 1개에서 남은 양 : 0.2999999999999999 출력된 결과를 보면 result 변수의 값은 정확히 0.3이 되지 않는다. 부동 소수점 방식을 사용하는 실수 타입에서 흔히 일어난다. 그렇기 때문에 정확한.. 2023. 1. 14.
[연산자] 부호/증감 연산자, 산술 연산자, 오버플로우, 언더플로우 3.1 부호/증감 연산자 부호 연산자는 변수의 부호를 유지하거나 변경한다. 연산식 설명 + 피연산자 피연산자의 부호 유지 - 피연산자 피연산자의 부호 변경 ※ 주의할 점은 부호 변경 후의 타입이다. byte b = 100; byte result = -b; //컴파일 에러 정수타입(byte, shor, int) 연산의 결과는 int 타입이다. 부호를 변경하는 것도 연산이므로 다음과 같이 int 타입 변수에 대입해야 한다. byte b = 100; int result = -b; 증감 연산자(++, --)는 변수의 값을 1 증가시키거나 1 감소시키는 연산자이다. 연산식 ++ 피연산자 피연산자의 값을 1 증가시킴 -- 피연산자 피연산자의 값을 1 감소시킴 피연산자 ++ 다른 연산을 수행한 후에 피연산자의 값을 .. 2023. 1. 14.
[변수] 변수란 (Variable)? 하나의 값과 타입을 저장할 수 있는 메모리의 공간. 수시로 값이 변동될 수 있다. 변수의 선언 프로그램은 변수 이름을 통해서 메모리 주소에 접근하고, 그곳에 값을 저장하거나 값을 읽는다. //1. 정수 값을 저장할 수 있는 age 변수 선언 int age; //2. 같은 타입의 변수는 콤마(,)를 이용해서 한꺼번에 선언할 수 있다. double x, y, z; 변수 명명 규칙 1. 첫 번째 글자는 문자이거나 '$','_'이어야 하고 숫자로 시작할 수 없다. (필수) 2. 영어 대소문자가 구분된다. (필수) 3. 자바 예약어는 사용할 수 없다. (필수) 4. 첫 문자는 영어 소문자로 시작하되, 다른 단어가 붙을 경우 첫 문자를 대문자로 한다.(관례) 5. 한글은 포함하지 않는다.. 2023. 1. 13.
[lambda] sorted key Lambda 함수란? 람다 표현식을 익명함수(anonymous function)라고도 한다. 함수 def function(x): return x + 1 print(function(10)) 람다 함수의 장점? function = lambda x : (x+1) print(function(10)) 1. 코드가 간단해진다. 2. 메모리 효율적으로 사용할 수 있다. - 함수를 선언하면 함수 자체가 메모리에 할당되는데, 람다함수는 한 번만 사용하고 사라지기 때문이다. 알고리즘 문제에서 lambda의 활용 오름차순 정렬 : sorted(list명, key=lambda x: x[0]) 내림차순 정렬: sorted(list명, key=lambda x : -x[0]) 2023. 1. 13.
[회원가입] 정규 표현식과 아이디 일치 불일치 React import axios from "axios"; import { useState, useEffect } from "react"; function Join() { //정규표현식 useState const [id, setId] = useState(''); //중복 id useState const [validId, setValidId] = useState(false); // ID의 정규식 표현:첫글자는 영문 대소문자이며, 나머지는 영문 대소문자, 숫자, 밑줄이 가능하고 //총 4~16글자이다. const ID_REG = /^[a-zA-Z][a-zA-Z0-9-_]{3,15}$/; // 정규표현식 일지하는지 검사 const setIdInfo = (e) => { let id = e.target.value.. 2022. 12. 14.
[hooks] useRef const ref = useRef(value) 예시로, const ref = useRef("hi")에서 useRef를 부르면 ref오브젝트를 반환한다. ref 오브젝트는 {current:"hi"} 이렇게 생겼다. ref 오브젝트는 수정이 가능하기 때문에 언제든 우리가 원하는 값으로 바꿀 수 있다. ref.current="hello" 이렇게 사용하면 된다. 반환된 ref 는 컴포넌트의 전 생애 주기를 통해 유지가 된다. 컴포넌트가 계속 렌더링되어도 언마운트되기 전까지는 값을 그대로 유지할 수 있다. 대표적으로 useRef 2가지 상황에 쓰인다. 1. state와 비슷하게 값을 저장하는 저장공간으로 사용된다. state의 변화 -> 렌더링 -> 컴포넌트 내부 변수들 초기화 (리렌더링이 되면 함수가 다시 불려.. 2022. 11. 20.
[hooks] useEffect !!중요 useEffect 기본적으로 useEffect hook은 인자로 (())=>{//원하는 작업..}) 콜백함수를 받는다. * 콜백함수란? 다른 함수의 인자로 전달된 함수를 의미한다. useEffect 유형은 2가지만 알고 있으면 된다. 1번째 유형! useEffect( ( ) => {//원하는 작업..} ); 하나의 콜백 함수만 받는 유형 컴포넌트가 렌더링 될때 마다 매번 콜백이 실행 2번째 유형! useEffect( ( ) => {//원하는 작업..} , [value]); : 첫 번째 인자로 콜백 함수, 두 번째 인자로 배열을 받는 유형 배열을 다른 말로 dependancy array라고도 합니다. 매번 실행되는 것이 아니라 컴포넌트가 맨 처음 화면에 렌더링 될때만 실행 또는 배열 안의 요소의 .. 2022. 11. 18.
[hooks] useState 1. useState 훅은 state와 setState를 배열형태로 반환해준다. setState를 사용해서 state를 변경할 때마다, 컴포넌트는 다시 렌더링이 된다. const [state, setState] = useState(초기값); 2. state를 변경할 때, 새로 변경된 state값이 이전 state값과 연관이 되어 있다면 setState의 인자로 새로운 state를 리턴하는 콜백함수를 넣어주는게 좋다. (콜백 함수란? () => {}) setState((prevState) => { return newState; }); 3. useState를 사용해서 어떤 무거운 일을 해야한다면 useState의 인자로 콜백함수를 넣어주면 맨 처음 렌더링할 때만 실행되게 할 수 있다. useState (().. 2022. 11. 17.
[JS #3] 바닐라 JS로 크롬 앱 만들기 # 3.2 Searching For Elements getElementById는 querySelector("#hello form")처럼 id=hello 하위에 있는 form을 가져오지 못한다. querySelector(".hello h1")은 class=hello에 h1이 여러개 있다면, 첫 번째 h1만 가져온다. 다 보고 싶다면 querySelectorAll을 사용한다. querySelectorAll은 array를 반환해준다. # 3.3 Event js 파일이 있기 때문에 js를 통해서 html의 내용을 가져올 수 있다. html이 js파일을 load하기 때문에 document가 존재한다. -> browser가 우리를 document에 접근할 수 있게 해준다. - element의 내부를 보고 싶으면 c.. 2022. 11. 8.