LinkedList package LinkedList; // 노드는 data와 다음 오브젝트를 가리킬 next variable로 구성됨 public class Node { int data; Node next = null; } public class App { public static void main(String[] args) { // 노드 인스턴스 생성 및 데이터 삽입 Node nodeA = new Node(); nodeA.data = 3; Node nodeB = new Node(); nodeB.data = 5; Node nodeC = new Node(); nodeC.data = 7; Node nodeD = new Node(); nodeD.data = 9; // 노드 인스턴스끼리의 연결 nodeA.ne..
제네릭스(Generics) - 2 와일드카드 매개변수에 과일박스(FruitBox)를 대입하면 주스를 만들어서 반환하는 Jucier 클래스가 있다고 하자. 이 클래스에는 과일을 주스로 만들어 반환하는 makeJuice()라는 static 메서드가 있다. class Juicer { static Juice makeJuice(FruitBox box) { String tmp = ""; for(Fruit f : box.getList()) { tmp += f + " "; } return new Juice(tmp); } } 이 메서드의 패러미터 타입을 Fruit타입의 FruitBox 객체로 제한하였기 때문에, Fruit 이외의 타입 은 들어갈 수 없다. (Juicer는 제네릭 클래스도 아니고, 제네릭 클래스라고 하여도..
제네릭스 문제로 이해하기 문제 int와 String 어레이를 아규먼트로 받아서 출력하는 single 메서드를 작성하시오. 제네릭스를 사용하지 않고 문제 풀기 캐스팅을 이용한 코드 import java.io.IOException; import java.lang.reflect.Method; class Printer { void printArray(Object[] arr) { try { for(Object i : arr) { System.out.println((String)i); } return; } catch (Exception e) { for(Object i : arr) { System.out.println((Integer)i); } } } } public class Solution { public sta..
제네릭스(Generics) - 1 제네릭스란? 다양한 타입의 객체를 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입 체크(compile-time type check)를 해주는 기능이다. 제네릭 타입은 클래스와 메서드에 선언할 수 있다. 제네릭스의 장점? 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성이 높아지고, 형변환의 번거로움이 줄어든다. 제네릭 클래스 선언 // 일반적인 클래스 class Box { Object item; void setItem(Object item) {this.item = item;} Object getItem() {return item;} } // 제네릭 클래스 class Box { T item; void setItem(T item) {this.item = ite..
[표준입출력] nextInt(), nextLine() 차이 문제 int, double, String을 순서대로 입력받은 다음에, String, Double, int 순으로 다시 출력하는 문제 잘못된 코드(1) import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner scan = new Scanner(System.in); int i = scan.nextInt(); double d =scan.nextDouble(); String s = scan.nextLine(); System.out.println("String: " + s); System.out.println("Double: " + d)..
문제 양의 정수 n이 주어졌을 때, 이 수를 시작해서 n, d(n), d(d(n)), d(d(d(n))), ...과 같은 무한 수열을 만들 수 있다. 예를 들어, 33으로 시작한다면 다음 수는 33 + 3 + 3 = 39이고, 그 다음 수는 39 + 3 + 9 = 51, 다음 수는 51 + 5 + 1 = 57이다. 이런식으로 다음과 같은 수열을 만들 수 있다. 33, 39, 51, 57, 69, 84, 96, 111, 114, 120, 123, 129, 141, ... n을 d(n)의 생성자라고 한다. 위의 수열에서 33은 39의 생성자이고, 39는 51의 생성자, 51은 57의 생성자이다. 생성자가 한 개보다 많은 경우도 있다. 예를 들어, 101은 생성자가 2개(91과 100) 있다. 생성자가 없는 ..
스트림(Stream) 스트림은 데이터소스를 추상화하고 자주 사용되는 메서드를 정의해놓았다. 데이터 소스 추상화는 데이터 소스가 무엇이던 간에(ArrayList이든 Array이든) 같은 방식으로 다룰 수 있게 되었다는 것과 코드 재사용성이 높아졌다는 것을 의미한다. 예시 // 배열과 배열리스트 String[] strArr = {"a", "b", "c"}; List strList = Arrays.asList(strArr); // 스트림 생성 Stream strStream1 = Arrays.stream(strArr); Stream srtStream2 = strList.stream(); // 스트림 정렬 및 출력 strStream1.sorted().forEach(System.out::println); strSt..
I/O programming 입력과 출력에 관한 프로그래밍 입출력 표준, 파일, 네트워크 입출력 대상에 관계없이 스트림이라는 논리적 구조를 사용한다. 이는 데이터 소스 추상화와 관련있는 스트림이랑은 다른 개념이다. I/O에서의 스트림은 데이터를 운반하는 데에 사용되는 연결통로이다. 스트림은 크게 바이트 기반과 문자 기반으로 나뉜다. Input, Output 등의 용어가 포함된 스트림은 바이트 기반이며, Reader, Writer이라는 용어가 포함되면 문자 기반 스트림(문자 입출력시 사용)이다. FileReader 예시 import java.io.*; class FileReaderEx1 { public static void main(String[] args) { try { String fileName = ..
컬렉션 프레임웍(Collections Framework) def: 데이터 그룹(群)을 저장하는 클래스들을 표준화한 것. 크게 3타입이 존재한다. List: 순서가 있는 데이터 집합 Set: 순서를 유지하지 않는 데이터 집합 Map: key와 value로 이루어진 데이터 집합 List와 Set은 공통점이 많아 추가적으로 Collection 인터페이스로 정의된다. (List와 Set이 Collection을 상속) ArrayList 기존의 배열과 다른 점 배열의 사이즈는 초기화 시 고정되기 때문에 변경이 불가하다. 하지만 ArrayList는 동적이어서 사이즈를 선언하지 않고 원소를 유동적으로 add, remove할 수 있다. 배열은 다차원이 가능하나 ArrayList는 불가하다. import java.util..
인터페이스(Interface) 인터페이스란 일종의 추상클래스인데, 추상클래스보다 추상화 정도가 높다. 추상클래스가 미완성 설계도라면 인터페이스는 기본 설계도이며, 다른 클래스 작성에 도움을 준다. 인터페이스에는 추상메서드와 상수만 올 수 있다. (일반 메서드와 상수가 아닌 변수는 올 수 없다) - 모든 멤버변수는 public static final 이어야하며 생략 가능 - 모든 메서드는 public abstract 이어야하며 생략 가능 예시 class FighterTest { public static void main(String[] args) { Fighter f = new Fighter(); } } class Fighter extends Unit implements Fightable { public ..
여러 타입의 객체를 배열로 다루기 예시 package com.Hazel; public class Main { public static void main(String[] args) { Buyer b = new Buyer(); b.buy(new TV()); b.buy(new Computer()); b.buy(new Audio()); b.summary(); } } class Product { int price; int bonuspoint; Product(int price) { this.price = price; bonuspoint = (int)(price / 10.0); } Product() {} } class TV extends Product { TV() { super(100); } public String..
Continue continue문은 반복문 내에서 사용될 수 있다. break는 그 조건에 충족하면 loop를 탈출하라는 의미이지만, continue는 반대로 조건에 충족하면 다시 loop를 돌라는 의미이다. 이미 반복문을 쓴 상황에서는 loop가 되는데 왜 다시 loop를 돌게 하는 continue 구문이 필요한지 의문스러울 수 있지만, continue는 조건을 충족하면 그 밑의 코드는 수행하지 않고 다시 loop를 돈다. Scanner sc = new Scanner(System.in); int i; while(true) { i = sc.nextInt(); if(i > 0) { System.out.println("Loop!"); continue; // 만약 입력된 값이 양수일 경우 "Loop 종료"를 ..
객체지향언어 객체지향언어의 특징 코드의 재사용성이 높다.(기존의 코드를 이용하여 새로운 코드를 작성) 코드의 관리가 용이하다. (코드의 관계를 이용하여 쉽게 코드를 변경) 신뢰성이 높은 프로그래밍이 가능하다.(제어자와 메서드를 사용해 데이터를 보호, 코드의 중복을 제거) 클래스와 객체 클래스: 객체를 정의해 놓은 것. 객체를 만들기 위한 설계도 같은 것. JDK(Java Development Kit)는 유용한 클래스(JAVA API)를 기본적으로 제공한다. 인스턴스: 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며 클래스로부터 만들어진 객체를 클래스의 인스턴스(instance)라고 한다. 인스턴스의 생성 Tv t; // 클래스명 변수명; t = new Tv(); //..
2차원 배열 선언 방법 // 타입[][] 변수이름; int[][] score; 배열 생성 int[][] score = new int[4][3]; // 4행 3열 2차원 배열 생성 초기화 int[][] arr = { {1,2,3}, {4,5,6} } 만약 for문을 통해서 초기화하려면 중복 for문을 사용하면 된다. sum int sum = 0; // enhanced for for(int[] tmp : score) { for(int i : tmp) { sum += i; } } sum 역시 중복 for문으로 해야 한다. 첫 번째 for문을 통해 1차원 배열주소를 tmp에 저장한다. 가변 배열 int[][] score = new int[3][]; // 2번째 차원의 길이를 정하지 않는다. // 각 행마다 다른..
배열(Array) 배열이란: 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것. 배열의 생성 // 타입 [] 변수이름 = new 타입[길이]; int[] score = new int[5]; // 5개의 int값을 저장할 수 있는 배열 생성 자바스크립트와 다르게 길이를 먼저 정해서 생성한다. 배열은 한번 생성하면 길이를 변경할 수 없다. int 배열을 만들면 각 요소는 int의 default값인 0으로 초기화된다. (eg. score[4] == 0) score이라는 (참조)변수는 각 배열의 값을 저장하고 읽어올 수 있는 주소값을 가진다. 배열 초기화 int[] score = new int[]{ 50, 60, 70, 80, 90 } // 이때 배열의 길이는 필요x int[] score = { 50, 60,..
- Total
- Today
- Yesterday
- 포인터 변수
- this
- rxjs
- package.json
- SQL
- Session
- Conflict
- oracle
- Redux
- 리덕스
- 알고리즘
- 제네릭스
- react
- JavaScript
- Java
- 자바
- getter
- jQuery
- 깃
- til
- Data Structure
- linkedlist
- Prefix Sums
- c언어
- 인스턴스
- 개발 공부
- useEffect
- youtube data api
- CSS
- GIT
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |