[JAVA] 정적 & 동적
·
Programming Language/JAVA
정적(static) 한 번 정해놓으면 변하지 않고 계속 유지되는 성질 정적할당 대체로 Stack 영역에 메모리를 할당 정적언어 변수의 Type을 컴파일 시에 결정하는 것 Java, Kotlin, C 등의 언어 변수에 넣을 데이터에 따라 자료형을 지정해주어야 함 장점 실행 시점에 어떤 메서드를 호출할지 알아내는 과정 필요 없이 메서드 호출이 빠름 컴파일러가 프로그램 정확성을 검증하기 때문에 실행 프로그램이 오류로 중단될 가능성이 적음 유지보수 쉬움 단점 Type 설정을 해줘야 함 동적(dynamic) 실시간으로 상황에 따라 변경이 가능한 것 ArrayList나 객체 즉, 동적 메모리 Heap에 생성되는 것들 동적할당 Heap 영역에 메모리를 할당 동적언어 변수의 Type을 컴파일 실행 시에 결정 JavaS..
[JAVA] 디자인패턴
·
Programming Language/JAVA
디자인 패턴 자주 사용하는 설계 형태를 정형화해서 이를 유형별로 설계 템플릿을 만들어둔 것 객체지향 언어를 이용해 프로그래밍 할 때 디자인 패턴을 사용한다면 보다 효율적이고 재사용성이 높은 설계 가능 유지보수 용이 디자인 패턴의 종류 GoF(Gang of Four)가 정의하는 디자인 패턴 → 총 23가지 생성 패턴(Creational Pattern) 객체를 생성하는 것과 관련된 패턴으로 객체의 생성과 변경이 전체 시스템에 미치는 영향을 최소화 하도록 만들어 줌 유연성 높일 수 있고 코드를 유지하기 쉬운 편 종류 Factory Method : 생성할 객체의 클래스를 국한하지 않고 객체 생성 Singleton : 한 클래스에 한 객체만 존재하도록 제한함 Prototype : 기존 객체를 복제함으로써 객체를 ..
[JAVA] 절차 지향 프로그래밍
·
Programming Language/JAVA
절차 지향 프로그래밍 일련의 절차 또는 기능으로 코드를 구성하는데 중점을 둔 프로그래밍 프로그램의 순서와 흐름을 먼저 세우고 필요한 자료구조와 함수들을 설계하는 방식 C, Visual Basic, Fortran, Pascal 등 특징 하나의 큰 기능을 처리하기 위해 작은 단위의 기능들로 나누어 처리하는 Top-Down 접근 방식으로 설계됨 데이터와 함수를 별개로 취급함 모든 함수는 데이터 공유가 가능 정해진 순서대로 입력해야 하므로 순서가 바뀌면 결과를 도출하기 어려움 프로그램이 커질수록 구조가 복잡해져 유지보수가 어려움(소형 프로젝트에 적합)
[JAVA] 최대공약수, 최소공배수
·
Programming Language/JAVA
최대공약수 (GCD) private static long gcd(long a, long b) { if(a % b == 0) return b; return gcd(b, a%b); } public static int gcd(int a, int b) { if(b == 0) return a; return gcd(b, a%b); } 최소공배수 (LCM) A * B / gcd(A, B) import java.io.*; import java.util.*; public class num13241 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(Sys..
[JAVA] 인스턴스 메서드
·
Programming Language/JAVA
인스턴스 메서드 인스턴스 객체를 생성 후 “인스턴스변수.메서드()” 형태로 호출하는 방식 인스턴스 멤버와 관련된 작업을 하는 메서드 메서드 내에서 인스턴스 변수를 사용할 수 있음 class Math1 { //인스턴스 변수 int a,b; // 인스턴스 메서드 int add(){ return a + b; } } class Main { public static void main(String args[]) { //인스턴스 생성 Math1 mt1 = new Math1(); mt1.a = 200; mt1.b = 100; //인스턴스 메서드 호출 System.out.println(mt1.add()); } }
[JAVA] 오버로딩 & 오버라이딩
·
Programming Language/JAVA
오버로딩 → 행위명은 동일하나 매개변수 타입, 개수, 순서가 다른 것 오버라이딩 → 상위 클래스의 메서드를 하위클래스가 재정의하는 것