본문 바로가기
반응형

프로그래밍 언어/Java28

[Java] 컬렉션(Collection) 컬렉션(Collection) 현대의 자바 프로그램을 작성하는데 빼놓을 수 없는 중요한 도구이다. Java 언어는 개발자가 보다 현재 만들려고 하는 비즈니스 로직을 최대한 빨리 구현할 수 있도록 많은 API를 지원합니다. 자바의 JDK는 소위 '자료 구조' 과목에서 배운 중요한 자료구조 개념들을 컬렉션으로 만들어 제공하기 때문에 개발자는 이에 대해 잘 알 필요가 있다. 즉, 자료구조 역시 이미 클래스로 만들어져 있는 것들이 많은데 이를 컬렉션(Collections)이라 합니다. 여러 종류의 자료구조를 사용하는 이유 - 자료구조를 이용하면 보다 편리하게 원하는 데이터를 찾을 수 있습니다. - 적절한 자료구조를 선택하면 더 빠르게 검색할 수 있습니다. 자료구조마다 데이터를 저장하고 검색하는 데 있어서 방식의 .. 2021. 3. 4.
[Java] 객체 소멸 객체 소멸 객체 소멸이란 new에 의해 생성된 객체 메모리를 자바 가상 기계어에 돌려주어 가용 메모리에 포함시키는 것 C++에는 new로 할당받은 객체가 더 이상 필요 없을 때 시스템에게 리턴할 수 있도록 delete 연산자 존재. 하지만 Java에서는 객체를 생성하는 new는 있지만 객체를 소멸시키는 기능은 없다. 그렇다면 할당받은 메모리가 더 이상 필요 없을 때 어떻게 리턴할까? 더 이상 필요 없는(사용되지 않는) 메모리는 garbage라고 부르며, 자바 가상 기계의 garbage collector에 의해 적절한 시점에 자동으로 수집되어 가용 메모리에 리턴됩니다. 그렇기에 메모리 관리 측면에서 개발자를 어느정도 자유롭게 해줍니다. Garbage 발생시기 객체나 배열을 가리키는 레퍼런스가 하나도 없어지.. 2021. 3. 2.
[Java] 절차적 vs 함수적 vs 객체지향 프로그래밍 비교 간단한 소스 코드로 절차적 / 함수적 / 객체지향 프로그래밍을 비교해보고자 합니다. 절차적 프로그래밍 public class Main { public static void main(String[] args) { System.out.println(10 + 20); System.out.println(20 + 30); } } 함수적 프로그래밍 public class Main { public static void main(String[] args) { sum(10, 20); sum(20, 40); } public static void sum(int left, int right) { System.out.println(left + right); } } 객체지향 프로그래밍 class Calculator{ int le.. 2021. 3. 2.
[Java] 제어문 (if, swtich, for, while) 제어문 (if, swtich, for, while) Java에서 제어문 활용할 때는 boolean 처리됩니다. 따라서, C언어와 같이 『 0 』 과 『 1 』이 분기 조건이 될 수 없습니다. 『if ~ else if ~ else』를 활용할 때는 아래로 갈수록 조건 범위가 넓어지게 하는 것이 좋습니다. 즉, 조건이 상단에 위치할수록 찾고자 하는 범위를 제한합니다. [윤년 여부 판별] import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year = Integer.parseInt(sc.nextLine()); if(year % 400 =.. 2021. 3. 2.
[Java] static 키워드 static 키워드 『static』 이란 명칭은 메모리에서 고정되기 때문에 붙은 이름으로 모든 객체가 공유한다는 의미가 더 큽니다. 보통 모든 객체가 동일한 데이터를 참고해야 할 필요가 있는 경우에 활용하며 그렇기에 모든 객체는 데이터에 영향을 줄 수 있습니다. 형태 클래스 변수 class Calculator{ int left, right; public void setOprands(int left, int right){ this.left = left; this.right = right; } public void sum(){ System.out.println(this.left+this.right); } } public class CalculatorDemo4 { public static void main(S.. 2021. 3. 2.
[Java] Map 인터페이스를 구현한 HashMap HashMap Hashtable은 JDK1.0 버전에서 처음으로 등장하며, Vector와 마찬가지로 멀티스레드 안에서 안정성을 보장했지만, 속도가 느려서 JDK1.2 버전 부터는 HashMap이라는 것으로 대체되었다. 특징 - 키key 와 값value 구조 ▷ List와 같이 선형 탐색보다는 속도측면에서 효율적. ▷ 인덱스를 통한 선형탐색이 아니기에 순서에 대한 의미가 없다. - 중복 허용 X ▷ 기존에 값이 존재한다면 덮어씌우는 형태. [예제 코드] put(), get() 메소드를 활용해 데이터를 삽입하고 조회한다. 요소 삭제는 remove(키) / 요소 개수는 size()이용 import java.util.HashMap; public class Main { public static void main(.. 2021. 3. 2.
[Java] [예제] 사칙연산 계산기 사칙연산 계산기 파일 구성 [Calculator.java] public class Calculator { public double calculate(int a, int b, char oper) { double result = 0.0; if(oper == '+') { result = a + b; }else if(oper == '-') { result = a - b; }else if(oper == '*') { result = a * b; }else { result = (double) a / b; } return result; } } 모든 객체가 같은 값을 가질 때에만 인스턴스 변수를 초기화합니다. 인스턴스 변수를 선언할 때 인스턴스 변수를 초기화해야 하는가 아니면 그냥 선언만 할 것인가를 결정할 때는 모든 .. 2021. 3. 2.
[Java] 가비지 컬렉션(Garbage Collection) 가비지 컬렉션(Garbage Collection) 인스턴스(Instance)를 만드는 것은 내부적으로는 컴퓨터의 메모리를 사용하는 것입니다. (여기서 말하는 메모리는 RAM 의미) 램은 가장 빠른 저장 장치이기 때문에 컴퓨터 프로그램들은 이 램에 저장된 후에 동작하게 됩니다. 하지만 램은 가격이 비싸고 용량이 적기 때문에 램은 컴퓨터에서 가장 소중한 저장 장치라고 할 수 있습니다. 그러므로 램을 적게 사용하는 프로그램이 좋은 프로그램이라고 볼 수 있습니다. 그렇기에 많은 프로그래밍 언어들이 RAM을 효율적으로 사용하기 위해서 더 이상 사용하지 않는 데이터를 RAM에서 제거할 수 있는 방법들을 제공합니다. Java에서는 메모리 관리를 자동으로 해주는데, 이 작업을 가비지 컬렉션이라고 합니다. 좋은 에플리케.. 2021. 3. 2.
[Java] 오버로딩(Overloading) 메소드 오버로딩은 메소드명은 동일하면서 매개변수의 개수, 타입이 다릅니다. 즉, 매개변수가 다르면 메소드명이 같아도 서로 다른 메소드가 되는 것입니다. → 다형성 (객체지향 특성) 아래의 계산기는 2개의 값(left, right)에 대한 연산(sum) 만을 수행 할 수 있습니다. class Calculator{ int left, right; public Calculator( int left, int right ){ this.left = left; this.right = right; } public String sum(){ return "" + this.left+this.right; } } public class Main { public static void main(String[] args) { Calc.. 2021. 2. 23.
[Java] 우선순위 큐(Priority Queue) 예제 우선순위 큐(Priority Queue) ※ 큐(Queue)는 선입선출(First In First Out) 우선순위 큐(Priority Queue)는 들어온 순서와는 상관 없이 우선순위가 높은 데이터가 먼저 이다. 1. 숫자가 큰 순서(내림차순) 2. 숫자가 동일하면 이름 순(A-Z) ※ 우선순위 큐는 내부적으로 Heap 구조를 이루고 있습니다. * Comparable 구현 import java.util.PriorityQueue; public class Main { public static void main(String[] args) { PriorityQueue pq = new PriorityQueue(); pq.offer(new Person("banana", 10)); pq.offer(new Perso.. 2021. 2. 23.
반응형