Java(12)
-
함수형 프로그래밍
함수형 프로그래밍 자료처리를 수학적 함수의 계산합니다. 상태와 데이터가 변하는 것을 지양하는 프로그래밍 패러다임입니다. 함수형 프로그래밍의 특징 1. 순수함수(Pure function) 동일한 입력에는 항상 같은 값을 반환해야 한다. 함수의 실행이 프로그램의 실행에 영향을 미치지 않아야 한다. 함수 내부에서 인자의 값을 변경하거나 프로그램 상태를 변경하는 Side Effect가 없어야 한다. 순수함수가 아닌 함수의 예 int num = 3; int add(int a) { // 함수 밖에 있는 num을 참조하기 때문에 순수함수라고 볼 수 없다. return a+num; } 순수 함수는 프로그램의 변화 없이 입력 값에 대한 결과를 예상 할 수 있어 테스트가 용이합니다. 2. 비상태, 불변성(Stateless..
2022.08.01 -
GC
JVM(Java Virtual Machine) 운영체제의 메모리 영역에 접근하여 메모리를 관리하는 프로그램입니다. 메모리 관리, Garbage Collector 수행합니다. Garbage Collector 동적으로 할당한 메모리 영역 중 사용하지 않는 영역을 탐지하여 해제하는 기능입니다. 동적으로 할당한 메모리 영역이란 자바의 Heap영역을 의미합니다. Heap: 동적으로 할당한 메모리 영역, 모든 Object 타입의 데이터가 할당되며, 이 Heap영역의 Object를 가리키는 참조 변수는 Stack 영역에 할당됩니다. 위 그림에서 알 수 있듯 이 스택에서 더이상 참조하지 않는 Object 타입의 데이터는 GC의 대상이 되어 GC가 메모리 영역을 해제해 주기를 기다리게 됩니다. Garbage Collec..
2022.08.01 -
Overloading vs Overriding
오버로딩 파라미터가 다른 같은 이름의 메서드를 생성 가능하게 합니다. C에서는 다음과 같이 이름이 같은 함수는 사용 불가능합니다. // C의 경우 int sum(int a, int b){ return a+b; } long sum(long a, long b) {//오류 발생 return a+b; } 이는 C언어에서 함수를 구분할 때, 이름에 따라 구분하기 때문에 sum()을 호출할 때, long sum()을 호출하는지 int sum을 호출하는지에 대해 구분할 수 없기 때문입니다. 자바에서는 함수를 이름+매개변수로 구분합니다. // java의 경우 int sum(int a, int b){ return a+b; } long sum(long a, long b) {// long sum과 int sum은 매개 변수..
2022.07.22 -
String, StringBuilder, StringBuffer
String > String은 두 가지 방법으로 값을 할당합니다. 1. 리터럴로 값을 할당 2. new 키워드로 값을 할당 String s1 = "123456"; // 리터럴로 값 할당 String s2 = "123456"; // 리터럴로 값 할당 String s3 = new String("123456"); // new 키워드로 값 할당 String s4 = new String("123456"); // new 키워드로 값 할당 위와 같이 각각 s1, s2, s3, s4변수에 값을 할당하였다고 했을 때 메모리 영역에서는 아래와 같이 나타납니다. 1. 리터럴로 값을 할당하는 경우 힙영역 안 StringPool이라는 공간에 객체가 생성되고 같은 리터럴로 할당한 변수는 같은 공간을 가리킵니다. 2. new 키워..
2022.07.21 -
정렬(Sort)
문자열 배열 알파벳 순으로 정렬 참조: https://www.delftstack.com/ko/howto/java/sort-string-srray-alphabetically-in-java/ compareTo() 메소드 사용 string1.compareTo(string2); string1 > string2인 경우: 양의 정수 반환 string1 time complexity: O(nlogn) 오름차순 정렬(default) Arrays.sort(arrToSort); // Apple Bananamna apple banana 내림차순 정렬 Arrays.sort(arrTo..
2022.07.19 -
객체 지향 vs 절차 지향 프로그래밍
절차 지향 프로그래밍 vs 객체 지향 프로그래밍 절차 지향 프로그래밍: 코드를 순차적으로 구성하여 프로그래밍 하는 것 장점: 코드의 흐름이 보여 직관적이고 빠릅니다. 단점: 모든 코드들이 유기적으로 연결되어 있어 코드 수정 및 유지보수가 어렵습니다. 객체 지향 프로그래밍: 코드를 객체 단위로 나누어 구성하여 프로그래밍 하는 것. 장점: 유지보수가 쉽고, 코드의 재사용성이 높습니다. 단점: 절차지향 프로그램에 비해 느리고, 클래스를 구성하는데 시간이 오래 걸린다. 클래스 and 객체 클래스: 객체를 정의해 놓은 것 객체: 실제로 존재하는 것. 사물 또는 개념 제품 설계도 제품 TV 설계도 TV 붕어빵 기계 붕어빵 + 객체와 인스턴스 > 객체(Object) 는 인스턴스(instance)를 포함하는 일반적인 ..
2022.07.18