객체지향 프로그래밍 : OOP ( Object Oriented Programming ) 이란 ? 기능별로 객체를 묶는 프로그래밍 방법 기술적 특징 추상화 : 여러 객체들을 하나의 큰 추상적인 개념으로 묶는다. ( 클래스를 정의하는 것 ) 상속 : 상위 개념을 하위 객체가 물려받는다. 다형성 : 같은 이름의 기능이지만, 다른 행위를 하는 것 캡슐화 : 객체의 기능만 사용한다. (코드는 은닉한다.)
JVM (JAVA Virtual Machine) 이란 ? 자바 가상 머신이라고 부릅니다. 자바 바이트코드를 해당 운영체제의 기계어로 재번역하면서 실행시키는 주체 운영체제와 자바를 연결시켜주는 역할 자바 프로그램을 운영체제와 플랫폼 종류에 의존적이지 않게 독립적으로 동작할 수 있게 해주는 역할 가비지 컬렉션(GC)을 통해 메모리 관리를 자동으로 해줍니다. JAVA의 프로그래밍 과정 소스 코드를 작성합니다. ( 클래스명.java ) JDK(Java Development Kit)가 제공하는 javac 컴파일러를 사용하여 바이트코드 형식으로 소스 코드를 컴파일합니다. ( 클래스명.class) 실행 시 실행에 필요한 클래스들이 JVM에 연결되며 클래스 로더(Class Loader)가 컴파일된 바이트코드를 메모리로..
싱글톤 패턴이란 ? 특정 클래스에 대해 객체의 인스턴스가 heap 메모리에 단 하나만 존재할 수 있도록 해주는 패턴 코드로 이해하기 비교를 위한 Normal 클래스 public class Normal { public Normal() { System.out.println("Normal 인스턴스 생성"); } } Singleton 클래스 public class Singleton { private static Singleton singleton; // 2. private Singleton() {}// 1. public static Singleton getInstance() { // 3. if(singleton == null) {// 인스턴스가 아직 안 만들어졌다면, singleton = new Singleto..
static 변수와 static 메소드는 static 메모리 영역에 존재합니다. (자바의 메모리 영역은 다음 글에서 다룹니다.) 객체가 생성되기 전에 이미 할당이 되어있기 때문에 객체 생성없이 바로 접근할 수 있습니다. static 변수 클래스 변수 : 클래스가 정의만 되어도 접근이 가능한 변수 application이 실행되면 모두 메모리에 할당되고, 종료되면 삭제되는 변수 메모리 할당을 딱 한 번만 하게 되어 메모리 사용에 이점을 볼 수 있습니다. 또한, 해당 클래스에 의해 생성된 모든 객체에 의해 공유될 수 있습니다. 인스턴스 변수의 경우 ( non-static ) public class Test { int num = 0; public Test() { num++; System.out.println(n..
배열 ( Array ) (같은 타입의) 여러 값을 효과적으로 관리하는 객체 참조타입(mutable) : 주소값으로 변경됩니다. new를 사용하지 않아도 객체 생성이 가능합니다. index를 통해 값에 접근할 수 있습니다. 배열 선언하기 & 출력하기 1차원 배열 배열 선언하기 // 방법1 int[] a; // 선언 a = new int[5]; // 정의 // 초기화 a[0] = 1; a[1] = 2; a[2] = 3; a[3] = 4; a[4] = 5; // 방법2 // 선언정의초기화 int[] b = new int[] { 6, 7, 8, 9, 10 }; // 방법3 // 선언 초기화 int c[] = { 11, 12, 13, 14, 15, 16, 17 }; 배열 출력하기 // 1차원 배열을 출력하는 메소..
method : 기능 (명령문들의 집합) 클래스 안에 있어야 합니다. Java에서는 메소드 안에 메소드 생성할 수 없습니다. 접근제한자 메모리영역 리턴타입 메소드이름 (파라미터) { 명령문; } 접근제한자 : 접근을 제한해주는 것 public (+) : 어디서나 접근, 참조 가능 protected (#) 상속일 경우 : 상속된 곳에서만 상속이 아닐 경우 : 같은 패키지 내에서만 default (~) : 같은 패키지 내에서만 private (-) : 같은 클래스 내에서만 메모리영역 static인 경우 : application이 실행되면 모두 메모리에 할당되고, 종료되면 삭제됩니다. 객체를 생성하지 않습니다. class.method() 형태로 호출합니다. non-static인 경우 : 클래스의 인스턴스를 생..
형 변환 ( Type Casting ) : 데이터의 자료형을 다른 자료형으로 바꾸는 것 묵시적 형변환 ( UpCasting / Promotion ) 작은 타입 -> 큰 타입 프로그램 실행 도중 자동으로 일어납니다. 명시적 형변환 ( DownCasting / Casting ) 큰 타입 -> 작은 타입 public class TypeToType01 { public static void main(String[] args) { // 묵시적 형변환 (upCasting or promotion) : 작은 타입 -> 큰 타입 byte b01 = 100; int i01 = b01; System.out.println(i01); // 명시적 형변환 (downCasting or casting) : 큰 타입 -> 작은 타입 i..
변수 : 변하는 수 메모리에 하나의 값(data)을 저장할 수 있는 방과 같은 기억 공간(메모리 공간) 값은 고정되어 있지 않습니다. 다른 값이 기록되면 자동 덮어쓰기되어 변할 수 있습니다. 변수 공간에 기록되는 값의 종류 기본 타입 : Type 변수 = 값; call by value : 값 자체를 담아서 사용하는 애들 이 때의 값을 literal이라고 합니다. 프린트해보면 값이 나옵니다. 정수형 : byte(1바이트) , short(2) , int(4) , long(8) 실수형 : float(4) , double(8) 문자형 : char(2) 논리형 : boolean(1) + 문자열 : String -> 참조타입이지만 기본타입처럼 사용 가능한 아이! 참조 타입 : 클래스 변수 = new 클래스(); c..
java.lang.Math의 random() 사용하기 : Math.random() min부터 ~ max까지 출력하고 싶다! Math.random() * (max - min + 1) + min 시작값부터 x개를 출력하고 싶다! Math.random() * x + 시작값 java.util.Random 사용하기 : Random r = new Random(); 0부터 ~ num-1까지 출력하고 싶다! nextInt() 에 값을 넣어줍니다. 시작값부터 x개를 출력하고 싶다! r.nextInt(x) + 시작값 package com.test02; import java.util.Random; public class MTest { public static void main(String[] args) { random01(..