본문 바로가기
반응형

프로그래밍 언어170

[Java] Setter vs 생성자 Setter vs 생성자 개발자마다 선호하는 것이 다르며, 두 가지 모두 활용하기도 합니다. 예를 들면, 생성할 때 인스턴스 변수를 초기화하고, 그 후에 추가 설정이 필요 없으면 생성자로도 충분하겠지만, 객체 생성 이후 자유롭게 데이터를 추가 및 변경하고 싶은 경우에는 setter 메소드가 선호됩니다. 계산기 예제 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 Main { public stat.. 2021. 3. 4.
[Java] 유효범위 대규모 프로젝트에서는 코드가 길어지며 복잡해지면서 변수와 함수명이 여러 가지 이유로 이름 충돌. 이를 해결하기 위해서 고안된 것이 유효범위입니다. Scope라고도 부릅니다. [무한 반복으로 빠지는 예시] public class Main { static int i; static void a() { i = 0; } public static void main(String[] args) { for (i = 0; i < 5; i++) { a(); System.out.println(i); } } } 메소드 a()가 실행될 때 메소드 내부의 변수 i의 값이 반복문의 변수 i의 값을 덮어씌워 반복문이 호출될 때마다 변수 i의 값이 0이 되어 반복문은 무한 반복에 빠지게 된다. 이런 상황을 해결하기 위해서는 메소드 a의.. 2021. 3. 4.
[Java] 배열 관련 함수 arraycopy() 분석 System.arraycopy() 가끔은 배열을 이용하다가 복사를 해야 하는 경우도 발생합니다. 물론 반복문을 통해서도 처리할 수는 있지만, 속도의 측면이나 복잡함 때문에 System.arraycopy() 이용할 수도 있다. arraycopy(Object src, int srcPos, object dest, int destPos, length) src: 원본 배열 srcPos: 원본의 복사 시작 인덱스 번호 dest: 대상 배열 destPos: 대상 배열의 복사 시작 인덱스 번호 length: 개수 (※ 인덱스 번호는 0에서부터 시작) import java.util.Arrays; public class Main { public static void main(String[] args) { int[] arr.. 2021. 3. 4.
[Java] 배열 개념 (선언 및 초기화) 배열 개념 (선언 및 초기화) 여러 개의 데이터를 한 번에 계산하거나, 한 번에 루프를 이용해서 처리하는 경우가 종종 있는데 이럴 때는 여러 개의 변수를 선언하는 대신에 배열을 활용합니다. 배열 생성 방법 좌항이 레퍼런스 변수를 선언하는 단계이고 / 우항이 배열 공간을 실제 할당하는 생성 단계이다. (배열 공간을 할당하지 않으면 null값이 할당된다.) // 배열을 선언하는 동시에 배열 안의 내용물도 같이 선안하는 방식 - 중괄호{} 사용 int[] arr = ; int[] arr = int arr[] 모두 가능하다. // 배열을 선언해서 공간만 확보하고, 나중에 내용물을 채우는 방식 - 대괄호[] 사용 int arr[] = new int[3]; arr[0] = 1; arr[1] = 2; arr[2] =.. 2021. 3. 4.
[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.
반응형