이 고민은 부모클래스에 static이 붙어있었을 때 왜 자식 클래스에서 이를 왜 Overriding 못 하는가?에 대한 궁금증에서부터 시작되었다. 인스턴스 메소드의 상속 사전지식으로 보아야할 Dynamic Method Dispatch 예를 보자. package Week6; public class Exam4{ public static void main(String[] args) { Parent parent1 = new Parent(); Parent parent2 = new Child(); Child child = new Child(); parent1.getTest(); parent2.getTest(); child.getTest(); } } class Parent { void getTest() { Syste..
왜? 자바를 공부하면 For문을 먼저 배우게되고 For문을 배우면 따라나오는 것이 For Each문이다. 한국어로 이를 표현했을 때 "향상된 For문"이라는 말이 많이 나오는데 정말 향상되었는가에 대한 궁금증으로 인해 확인해보기로 했다. 테스트는 List안에 10000건의 값을 넣고 1로 초기화하는 것으로 진행하였다. public static long testFor(List list, long runTime){ int size = list.size(); long result = 0; long runTimeTmp = runTime; while(0 < runTimeTmp--){ long start = System.nanoTime(); for(int i=0; i index; i--) x = x.prev; re..
자바 상속의 특징 상속이란, 기존의 클래스를 재사용하여 새로운 클래스를 작성하는 것이다. 상속은 그 단어의 뜻과 마찬가지로 부모 클래스를 자손 클래스에 변수와 메소드를 물려주는 것을 말한다. 지금의 상속은 class와 class 간의 상속에 대해서 이야기 할 것이므로 Interface와 implement는 다음 포스팅에서 이야기할 예정이다. 간단하게 맛만 먼저 보자. class Parent{ private String name; private int money = 30; public int getMoney() { return money; } } class Child extends Parent { private String name; private int money; public Child(int mone..
클래스 정의하는 방법 객체 지향 프로그래밍(OOP, Object-Oriented Programming) 모든 데이터를 객체(Object)로 취급하며 이 객체를 중심으로 돌아가는 프로그래밍을 말한다. 객체란 단순히 우리가 인식할 수 있는 사물을 말한다. Class(클래스) 클래스란 "객체를 정의해놓은 것", "객체의 설계도 또는 틀"로 정의할 수 있다. 자바는 클래스를 가지고 필요한 객체를 생성해서 사용한다. 자바에서 클래스는 객체의 상태를 나타내는 필드(field)와 객체의 행동을 나타내는 메소드(method), 생성자(constructor)로 구성된다. 즉 필드에는 클래스에 포함된 변수가 이에 해당하고, 클래스 내에 있는 모든 명령어들이 메소드에 해당된다. package Week5; public cla..
선택문 조건에 따라 명령을 처리하는 문법 if~else문 switch~case문 자바에서는 특정 데이터의 값에 따라 수행할 구문을 선택하는 문법을 제공한다. 연속된 값으로 데이터의 범위를 확인하는 if문, 그리고 불연속 값들을 case별로 나누어서 확인하는 switch문이 있다. if~else문 package Week4; public class Exam1 { public static void main(String[] args) { int month = 4; if(month==12 || month==1 || month==2) System.out.println("winter"); else if(month==3 || month==4 || month==5) System.out.println("spring"); ..
산술 연산자 연산자라고 특이한 무언가가 있는 것은 아니고 흔히 사칙연산에서 사용하는 덧셈, 뺄셈, 곱셈, 나눗셈과 더불어 나머지 연산을 포함한 연산을 말한다. 나눗셈 연산의 경우 소숫점은 무조건 버림이 되니 유의해서 사용해야한다. package Week3; public class Exam1 { public static void main(String[] args) { int a = 12; int b = 5; System.out.println("a + b = " + (a+b)); System.out.println("a - b = " + (a-b)); System.out.println("a * b = " + (a*b)); System.out.println("a / b = " + (a/b)); System.ou..
프리미티브 타입 종류와 값의 범위 그리고 기본값 데이터 타입을 다루기 앞서 과연 데이터 타입이 뭐고 왜 굳이 데이터 타입을 나눠서 저장하는지에 대한 의문점을 가졌다. 컴퓨터 메모리에는 비트의 패턴이 저장되며 이것이 무엇을 의미할지는 어떻게 사용되는가에 따라 달려있다. 컴퓨터에 사용되는 메모리는 "유한"하다. 만약 사용할 변수의 크기가 8bit 밖에 안되는데 64bit의 데이터 타입을 사용한다면 56 bit의 데이터 낭비가 발생한다. 물론 bit 타입의 크기가 그렇게 크지는 않지만 큰 서비스를 운영할 때 쌓이고 쌓이다보면 많은 메모리를 차지하게 되고 이는 성능 저하의 원인이 된다. 그래서 내가 사용하는 변수의 범위와 타입에 맞게 사용하는 것이 중요하다. 데이터 타입에는 두가지 타입이 있다. Primitiv..
JVM이란 무엇인가? Write Once, Run Anywhere 자바의 장점을 얘기하면 가장 먼저 나오는 말인 "운영체제에 독립적이다"를 대표해주는 가상 머신이다. 기존 언어들이 운영체제에 맞게 따로 개발을 해야하는 것에 비해 자바는 운영체제에 독립적으로 움직이며 이를 JVM(Java Virtual Machine, 자바 가상 머신)이 도와준다. 어떤 운영체제(Window, Mac, Linux, ...)에서 자바를 실행하건 JVM이 그 사이에 끼여서 작동한다고 보면 된다. (마치 내가 어떤 나라에 가건 사용할 수 있게 해주는 돼지코 같은 느낌이다.) 직역하면 "자바를 실행하기 위한 가상 컴퓨터" 이며 이때, 가상 기계(Virtual Machine)는 소프트웨어로 구현된 하드웨어를 뜻하는 넓은 의미이다. ..
- Total
- Today
- Yesterday