Programming 90

[JAVA] 참조변수의 형변환, Instanceof 연산자

자바의 정석 CH7-24,25 * 참조변수의 형변환 - 사용할 수 있는 멤버의 갯수를 조절하는 것 - 조상 자손 관계의 참조변수는 서로 형변환 가능 class Car{} class FireEngine extends Car {} class Ambulance extends Car {} - Car를 부모로 하는 FireEngine과 Ambulance는 각자 Car와 형변환이 가능하지만, 형제끼리(FireEngine, Ambulance)의 형변환은 불가능하다. FireEngine f = new FireEngine(); Car c = (Car)f; // 조상인 Car타입으로 형변환(생략가능) FireEngine f2 = (FireEngine)c; // 자손인 FireEngine타입으로 형변환(생략불가) Ambul..

Programming/Java 2021.11.09

빅오 표기법(Big-O notation), 시간복잡도, 공간복잡도

Big-O notation : 자료구조나 알고리즘에서 성능 측정에 가장 중요한 지표 빅오 식의 규모 : O(1) < O(logn) < O(n) < O(nlogn) < O(n^2) < O(n^3) < O(2^n) < O(n!) /* N을 입력받아 1~N의 합을 구하는 코드 */ import java.util.Scanner; public class Hap { public static void main(String[] args) { Scanner input = new Scanner(System.in); int a = input.nextInt(); int sum = 0; for (int i=1; i

[JAVA] 캡슐화, 다형성

자바의 정석 기초편 - ch 7-22, 23 * 접근 제어자를 사용하는 이유 - 외부로부터 데이터를 보호하기 위함 - 외부에는 불필요한, 내부적으로만 사용되는 부분을 감추기 위함 아래의 예시코드처럼 값에 직접접근을 할 수 있게 되면, 클래스 Time의 룰이 깨져버리는 참사가 일어난다. (0~59의 값을 입력해야하는데 80을 입력하는 경우) public class Time { public int hour; // 0~23 public int minute; // 0~59 public int second; // 0~59 } Time t = new Time(); t.hour = 25; // 멤버 변수에 직접 접근 따라서, 이 코드를 접근제어자를 사용해서 리팩토링한다면 다음과 같다. public class Time..

Programming/Java 2021.11.08

[JAVA] 제어자

* 제어자(modifier) - 클래스와 클래스의 멤버(멤버 변수, 메서드)에 부가적인 의미 부여 * 접근제어자 : public, private, (default), protected * 그 외 : static, final abstract, native, transient, synchronized, volatile, stricffp - 하나의 대상에 여러 제어자를 같이 사용 가능(접근 제어자는 하나만 가능) public class ModifierTest { public static final int WIDTH = 200; public static void main(String[] args) { System.out.println("WIDTH="+WIDTH); } } * static - 클래스의, 공통적인 ..

Programming/Java 2021.11.08

[JAVA STUDY] 6주차 : 상속

목표 자바의 상속에 대해 학습하세요 학습할 것 자바 상속의 특징 super 키워드 메소드 오버라이딩 다이나믹 메소드 디스패치 (Dynamic Method Dispatch) 추상 클래스 final 키워드 Object 클래스 자바 상속의 특징단일 상속이란 자식 클래스가 하나의 부모클래스로부터 기능을 물려받는 것을 말한다.자바의 상속을 선언하기 위해서 extends 키워드를 사용한다. class A { public void read() {...} } ​ class B extends A { @Override public void read() {...} public void write() {...} } 🚩자바 상속의 특징 요약부모 클래스는 자식 클래스에게 필드와 메소드를 모두 물려준다. 자식 클래스의 생성자를 호..

Programming/Java 2021.11.07

[JAVA STUDY] 5주차 : 클래스(Class)

목표 자바의 Class에 대해 학습하세요. 학습할 것 클래스 정의하는 방법 객체 만드는 방법 (new 키워드 이해하기) 메소드 정의하는 방법 생성자 정의하는 방법 this 키워드 이해하기 과제 int 값을 가지고 있는 이진 트리를 나타내는 Node 라는 클래스를 정의하세요. int value, Node left, right를 가지고 있어야 합니다. BinrayTree라는 클래스를 정의하고 주어진 노드를 기준으로 출력하는 bfs(Node node)와 dfs(Node node) 메소드를 구현하세요. DFS는 왼쪽, 루트, 오른쪽 순으로 순회하세요. 클래스 정의하는 방법 필드 : 객체지향 개념에서 속성에 해당하는 것으로 멤버 변수라고도 한다./* 한정자 / 자료형 / 변수명 */ private String n..

Programming/Java 2021.10.29

[백준] 1110번 : 더하기 사이클

1110번: 더하기 사이클 0보다 크거나 같고, 99보다 작거나 같은 정수가 주어질 때 다음과 같은 연산을 할 수 있다. 먼저 주어진 수가 10보다 작다면 앞에 0을 붙여 두 자리 수로 만들고, 각 자리의 숫자를 더한다. 그 다음, www.acmicpc.net 문제 : 1 새로운 숫자 : 84, 8 + 4 = 12 --> 새로운 숫자 : 42 --> 4 + 2 = 6 --> 새로운 숫자 : 26 : 연산 횟수 = 4 코드 package Step4; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class PlusC..

[백준] 팩토리얼

1. 재귀함수란? : 함수 내에서 자기 자신을(함수)를 계속적으로 호출하는 방식. 함수가 콜 되면서 최근에 자신을 부른 원래 함수가 스택에 차곡차곡 쌓이게 됨. 중요한건 처음 불려진 함수에서(스택 맨 밑에있는 메소드) return 되는 값이 최종 return 값이 된다. 2. 팩토리얼(Factorial) : 1부터 특정 정수까지의 곱한 수 3. 재귀함수를 통한 팩토리얼 풀이 package Weekly; import java.util.Scanner; public class Factorial { public static void main(String[] args) { Scanner input = new Scanner(System.in); int userInputNum = input.nextInt(); Sys..

[스프링의 정석] HTTP 요청과 응답

* 프로토콜이란? - 서로 간의 통신을 위한 약속, 규칙 - 주고 받을 데이터에 대한 형식을 정의한 것 * HTTP - Hyper Text Transfer Protocol - 단순하고 읽기 쉽다. 텍스트 기반의 프로토콜 - 상태를 유지하지 않는다. (Stateless), 클라이언트 정보를 저장하지 않는다. - 똑같은 사람이 두 번 요청을 보내도 똑같은 사람이 두 번 요청을 보냈는지 구분하지 못한다. 상태를 유지하지 않기 때문이다. - 이를 보완하기 위해 쿠키와 세션을 사용한다. - 확장 가능하다. 커스텀 헤더 추가 가능 - 헤더 / 바디로 구성이 되어있으며, 헤더는 대,소문자를 구분하지 않고 n개 생성가능하다. 헤더와 바디는 줄바꿈으로 구분한다. - 유저는 URL만 입력하지만 브라우저가 http 요청 메..

Programming/Spring 2021.10.28

[JAVA STUDY] 4주차 : 제어문

목표 자바가 제공하는 제어문 학습 학습내용 선택문 반복문 JUnit5로 테스트 코드 작성하는데 익숙해지기 대시 보드를 만드는 코드 작성 깃헙 이슈 1번부터 18번까지 댓글을 순회하며 댓글을 남긴 사용자를 체크 할 것. 참여율을 계산하세요. 총 18회에 중에 몇 %를 참여했는지 소숫점 두자리가지 보여줄 것. Github 자바 라이브러리를 사용하면 편리합니다. 깃헙 API를 익명으로 호출하는데 제한이 있기 때문에 본인의 깃헙 프로젝트에 이슈를 만들고 테스트를 하시면 더 자주 테스트할 수 있습니다. LinkedList 구현 LinkedList에 대해 공부하세요. 정수를 저장하는 ListNode 클래스를 구현하세요. ListNode add(ListNode head, ListNode nodeToAdd, int p..

Programming/Java 2021.10.27