목록자바 (18)
개발새발
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/ytCig/btrRbYQozHu/eo000PTkTTBmkiWJhDqfK1/img.png)
Static 이란? 정적(Static)은 고정된이란 의미를 가지고 있다. static이라는 키워드를 사용하여 static변수와 static메소드를 만들 수 있는 데 다른 말로 정적필드와 정적메소드라고도 하며, 이 둘을 합쳐서 정적멤버(클래스 멤버)라고 한다. 정적필드와 정적메소드는 객체에 소속된 멤버다 아니라 클래스에 고정된 멤버이기에 클래스 로더가 클래스를 로딩해서 메소드 메모리 영역에 적재할때 클래스별로 관리된다. 따라서 클래스의 로딩이 끝나는 즉시 바로 사용할 수 있다. - static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당된다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있는 장점을 갖지만, GC의 관리 영역 ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/IGFaC/btrQeOP71bn/SkHGfcsCqfx1HIJVwKEj50/img.png)
- 기존에 많은 데이터를 처리하기 위해 배열을 사용했지만 크기가 고정되어 있고 삽입, 삭제가 오래 걸린다는 불편한 점이 있다. - 이를 보완하기 위해 자바에서 동적배열 개념인 컬렉션 프레임워크를 제공 - 자료의 삽입, 삭제, 검색 등이 용이해지고 어떠한 자료형이라도 담을 수 있으며 크기가 자유롭게 늘어난다는 강점이 있다 List - 순서가 있고 중복을 허용합니다. - 인덱스로 원소에 접근이 가능합니다. - 크기가 가변적 입니다. List의 종류와 특징 LinkedList 양방향 포인터 구조로 데이터 삽입, 삭제가 빠르다. ArrayList보다 검색이 느리다. ArrayList 단반향 포인터 구조로 데이터 순차적 접근에 강점을 가진다. 배열을 기반으로 데이터를 저장한다. 데이터 삽입, 삭제가 느리다. 데이..
제네릭(Generic)이란 "타입을 일반화"하는 것을 의미하며 클래스 내부에서 정하는 것이 아닌 사용자 호출에 의해 타입이 지정되는 것을 의미합니다. 즉, 특정 타입의 변수형에 지정되는 것이 아닌 필요에 의해 여러 가지를 타입(Integer, String 등)을 사용하고 싶을 경우 사용합니다. 제네릭 타입 클래스는 자바5부터 추가된 개념으로 자바 API 문서에도 간간히 볼 수 있는데요. 주로 우리가 쓰는 컬렉션 프레임워크의 List 인터페이스도 제네릭 타입입니다. - 제네릭은 데이터 타입을 하나로 지정하지 않고 사용할 때마다 지정하는 것을 말합니다, 사용하는 이유는 잘못된 객체를 넣을시 컴파일 단계에서 막아주기 때문에 런타임 단계에서 문제가 발생할 여지를 막아줍니다 - 제네릭(Generic) 은 클래스 ..
OOP(Object Oriented Programming)이란 여러 개의 문제를 객체 단위로 나누어 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다. 대표적으로 Java, C++ C#등이 있다 프로그래밍에서 객체란? - 데이터의 분산을 막기 위해 데이터와 기능을 하나로 묶은 그룹을 말한다. - 자바의 경우 그 구성 부분 단위가 클래스 장점 코드의 재사용성 증가 - 상속을 통해 프로그래밍 코드의 재사용성을 높일 수 있다. 생산성 향상 - 잘 설계된 클래스를 만들어 독립적인 객체르 사용함으로써 개발의 생산성을 향상시킬 수 있다. 자연적인 모델링 - 우리 일상생활의 모습의 구조가 객체에 자연스럽게 녹아들어 있기 때문에 생각하고 있는 것을 그대로 자연스럽게 구현 할 수 있다. 유지보수 - 프로그램 수정..
재귀함수 (Recursive Function) 재귀라는 말은 원래 자리로 돌아가거나, 되돌아온다는 의미 코딩에서 재귀는 자기 자신(메서드)를 호출하는것 자기 자신을 다시 호출하여 재참조하는 구조의 함수 재귀함수와 for 문 (반복문) 의 차이 1. 메모리 재귀함수는 함수를 반복적으로 호출하기 때문에 스택 메모리를 사용하지만(스택 오버플로우가 발생 할 수 있다), 반복문은 메모리 힙을 사용한다 2. 코드의 길이 반복문에 비해 재귀문이 코드의 길이를 줄일 수 있다 재귀함수(Recursion) 함수 자체를 호출 기본으로 종료 조건을 지정 조건부 문은 함수 호출 본문에 포함되어 재귀 호출을 실행하지 않고 함수를 강제로 반환 기본적으로 종료조건에 수렴하지 않으면 무한재귀가 발생 무한재귀 --> 스택오버플로우 발생..
재귀 함수 함수가 직접 또는 간접적으로 자신을 호출하는 프로세스를 재귀함수라고 한다 public class PlusFunction { public static void main(String[] args) { HelloWorld(5); // HelloWorld 출력 메서드 호출 } // HelloWorld 출력 메서드 선언 public static void HelloWorld(int n) { // n이 0인 경우 return if(n == 0) return; System.out.println("HelloWorld"); // HelloWorld 출력 HelloWorld(n-1); // 재귀함수 시작 } } 출처: https://crazykim2.tistory.com/591 [차근차근 개발일기+일상]
InputStream, OutputStream 자바에서 입출력을 다루기 위해 제동 스트림은 단방향으로만 데이터를 전송할 수 있기에, 입력과 출력을 동시에 처리하기 위해서는 각각의 스트림이 필요 File을 다룰 때는 FileInputStream / FileOutputStream 프로세스를 다룰 때는 PipedInputStream / PipedOutputStream Thread(스레드) 순차적으로 실행한 코드가 실처럼 이어져서 유래된 이음 하나의 스레드는 하나의 코드 실행 흐름이기 때문에 한 프로세스 내에 스레드가 두개라면 두개의 코드 실행 흐름이 생긴다 Multi-thread(멀티 스레드) 멀티 태스킹은 두 가지 이상의 작업을 동시에 처리하는 것을 의미 운영체제는 멀티 태스킹을 할 수 있도록 CPU및 메모..
JSON (JavaScript Object Notation) 자바스크립트의 객체 형식을 기반으로 만들어짐 인터넷과 통신 네트워크에서 데이터를 전달할 때 사용되는 데이터 형식 Object {key:value} 장점,사용이유 데이터를 주고받을때 가장 간단한 파일 포맷 가벼운 텍스트 구조 가독성 Key - value 쌍 데이터를 주고받을 때 직렬화, 전송 하기위해 프로그램 언어, 플랫폼에 상관없이 다 사용가능 문법 표현 자료형(String) — “ ” 숫자(number) — 123 null — null 배열(array) — [“값1”, ”값2”, ”값3”] 객체(object) — {“name” : “홍길동”, “age”:23}
Stream — 스트림 배열, 컬렉션의 저장 요소를 하나씩 참조해서 람다식으로 처리할 수 있도록 해주는 반복자 List, Set, Map배열 등 다양한 데이터 소스로부터 스트림을 만들 수 있고, 다룰 수 있다 병렬 스트림을 사용하기 위해서는 스트림의 parallel()메서드를 사용 List list = Arrays.asList(1,2,3,4,5); Stream intStream = list.stream(); //컬렉션 Stream strStream = Stream.of(new String\[\] {“a”, “b”, “c”}); // 배열 Stream evenStream = Stream.iterate(0, n->n+2); // 0,2,4,6 Stream randomStream = Stream.generat..
Enum - 열거형 서로 관련된 상수를 편리하게 선언하기 위한 것으로 여러 상수를 정의할 깨 사용 타입에 안전한 열거형이라서 실제 값이 같아도 타입이 다르면 컴파일 에러가 발생 —-> 값뿐만 아니라 타입까지 체크하기 때문에 타입에 안전하다 enum 열거형이름 { 상수명1, 상수명2, 상수명3, ...} enum Seasons { SPRING, SUMMER, FALL, WINTER }. ——> 상수는 대소문자가 상관이 없지만 관례적으로 대문자로 적음 클래스의 static변수를 참조하는 것과 동일한 방법으로 사용 열거형 이름.상수명 sout(Seasons.SUMMER); Seasons타입의 다른 변수에 넣을 수 있다 Seasons hotSeason = Seasons.SUMMER; sout(hotSeason)..