Language/Java (25) 썸네일형 리스트형 main 메소드 자바 애플리케이션을 만들 때에는 클래스(Class)를 만들어야 하고, 그 클래스를 실행시킬 때에는 반드시 약속된 이름인 'main'이라고 하는 특수한 이름의 메소드를 정의해 놓아야 한다. 자바는 main이라는 메소드를 실행하도록 약속되어 있다. public class FirstMethod { public static void main(String[] args) { System.out.println("Hello Method"); System.out.println(Math.floor(1.1)); } } 위 코드에서처럼, 실행되었으면 하는 명령어들을 main 메소드 안에 위치시켜야 하는 것이다. == vs equals 자바에는 여러가지 데이터 타입이 존재한다. 이 여러가지 데이터 타입을 primitive냐 아니냐의 기준으로 구분할 수 있다. 자바에서 기본적으로 다루는 데이터 타입은 원시 데이터 타입(primitive data type)이라고 부른다. 원시 데이터 타입의 변수는 선언되면 메모리(Stack)에 공간이 할당되며, 그 메모리 공간 안에 실제 값이 들어가게 된다. int a = 1; int b = 1; System.out.println(a == b);// true // System.out.println(a.equals(b));// 원시 데이터 타입은 equals 메소드 사용 불가 그래서 위 코드와 같이 원시 데이터의 경우 == 연산자는 변수가 가리키는 값을 토대로 비교하게 된다. 반면 java.lang.Obje.. 클래스 (Class) 클래스(class)란 서로 연관된 변수와 메소드를 묶어 놓고 거기에 이름을 붙인 것이다. 메소드, 클래스가 중요한 이유는 우리가 소프트웨어를 만들어가는 데에 있어 구조를 결정하기 때문이다. 마치 신체에서 뼈대와 같은 역할을 하는 것이 메소드와 클래스이다. 클래스를 잘 활용하면 코드를 정리하고 프로그램의 생산성을 높일 수 있다. 가령 이렇게 회계와 관련된 코드가 있다고 할 때, public class AccountingClassApp { public static double valueOfSupply; public static double vatRate; public static double expenseRate; public static void main(String[] args) { valueOfSupp.. 메소드 (Method) 메소드(method)란 서로 연관된 코드를 그룹핑해서 이름을 붙인 정리정돈의 상자이다. 메소드는 클래스의 동작을 나타내는 함수이다. 이전에 다루었던 Math의 floor, ceil 혹은, PrintWriter의 write, close 등이 메소드이다. public class AccountingApp { public static void main(String[] args) { double valueOfSupply = 10000.0; double vatRate = 0.1; double expenseRate = 0.3; double vat = valueOfSupply * vatRate; double total = valueOfSupply + vat; double expense = valueOfSupply * .. 상속 (Inheritance) 클래스 간에는 서로 계층적인 관계를 갖고 있을 수 있다. 가령 PrintWriter 객체의 설명서를 보면 아래와 같이 나타나 있다. 들여쓰기되어 표현된 각각의 클래스 간의 관계는 상속 관계를 나타낸다. PrintWriter 클래스는 Writer 클래스에서 상속을 받았고, Writer 클래스는 Object 클래스로부터 상속을 받았다는 것을 나타낸다. 자식에 해당하는 클래스는 부모에 해당하는 클래스의 모든 변수와 메소드를 사용할 수 있다. 이클립스 안에서 Open Type Hierarchy를 이용하여 클래스의 상속관계를 확인할 수 있다. PrintWriter는 Writer를 확장해서 만들어진 클래스이고, Writer는 Object를 확장해서 만들어진 클래스이다. 이것은 'extends ~'를 이용해서 표현한.. 인스턴스 인스턴스는 클래스를 컴퓨터 상에서 실체화한 것이다. import java.io.FileNotFoundException; import java.io.IOException; import java.io.PrintWriter; public class InstanceApp { public static void main(String[] args) throws IOException{ PrintWriter p1 = new PrintWriter("result1.txt"); p1.write("Hello 1"); p1.close(); PrintWriter p2 = new PrintWriter("result2.txt"); p2.write("Hello 2"); p2.close(); } } 가령 PrintWriter 객체를 사용.. 패키지, 클래스, 변수, 메소드 간 관계 가령 Math 클래스와 같이 클래스 안에는 PI와 같은 변수, floor, ceil과 같은 메소드들이 포함되어 있다. 즉 클래스(Class)란 서로 연관된 변수와 메소드들을 모아서 이름을 붙인 것이다. 패키지는 이러한 클래스(들)을 하나의 묶음으로 정리한 것이다. 자바 프로그램을 만들기 위해서는 자바의 도구들을 사용할 수 있게 만든 장치인 자바 API를 이용한다. 오라클에서는 자바 API의 설명서인 Java API documentation을 제공하고 있다. 가령 Math 클래스의 설명서를 보면 java.lang 패키지에 속해 있다는 것을 알 수 있다. java.lang 패키지에는 Math 외에 String과 같은 다른 객체들도 존재한다. Math 클래스에는 PI와 같은 변수(Variable/Field)들.. JVM이란 무엇인가 JVM이란? JVM이란 Java Virtual Machine, 자바 가상 머신의 약어이다. (가상머신이란 프로그램을 실행하기 위해 물리적 머신과 유사한 머신을 소프트웨어로 구현한 것이다.) JVM의 역할은 자바 애플리케이션을 클래스 로더를 통해 읽어들여 자바 API와 함께 실행하는 것이다. 그리고 JVM은 Java와 OS 사이에서 중개자 역할을 수행하여 Java가 OS에 구애받지 않고 재사용을 가능하게 해준다. 그리고 가장 중요한 메모리관리, Garbage collection을 수행한다. 그리고 JVM은 스택 기반의 가상머신이다. ARM 아키텍쳐 같은 하드웨어는 레지스터 기반으로 동작하는 데 비해 JVM은 스택 기반으로 동작한다. JVM(자바 가상 머신)을 알아야 하는 이유는, 한정된 메모리를 효율적으로.. 이전 1 2 3 4 다음