목록JAVA (6)
공유메모장
JVM .java -> 컴파일 -> .class (생성) .class 파일이 byte 코드이며, jvm에서 실행될 수 있다. .class 파일만 있으면 OS에 제약없이 실행할 수 있다. JRE = JVM + Java class Library JDK = JRE + 개발 툴 JAVA는 compile 언어이기 때문에 오류 처리에 능하다. .java 파일은 모두 class 또는 interface 로 묶여야 한다. JAVA 역사인공어(중간자 역할을 하는 언어)를 착안하여 JVM이 탄생했다. JVM처럼, 브라우저 위에서 자바 코드가 동작할 수 있도록 applet 을 올렸다.이종의 네트워크가 인터넷으로 통합되어 파일(HTML)만 송수신 하다가, java가 애니메이션을 웹브라우저 위에 올렸다.- 애플릿을 포함하는..
호출스택은 메서드 작업에 필요한 메모리 공간을 제공한다. 메서드가 호출되면, 호출스택에 호출된 메서드를 위한 메모리가 할당되며, 이 메모리는 메서드가 작업을 수행하는 동안 지역변수들과 연산의 중간 결과 등을 저장하는데 사용된다. 메서드가 작업을 마치면 할당되었던 메모리 공간은 반환되어 비워진다. class Ex{ public static void main(String[] args){ System.out.println("Hello"); } } 위 코드에서 호출 스택이 어떻게 변화하는지 알아보자. main이 JVM에 의해서 호출되며 프로그램이 실행된다. 호출스택에는 main 메서드를 위한 메모리 공간이 할당되고, main메서드의 코드가 수행되기 시작한다. main메서드에서 println() 을 호출한다. 아..
클래스 초기화 블럭과 인스턴스 초기화 블럭 두 가지 종류가 있다. 클래스 초기화 블럭은 클래스 변수의 복잡한 초기화에 사용되고, 인스턴스 초기화 블럭은 인스턴스 변수의 복잡한 초기화에 사용된다. class Product{ static{ System.out.println("Static { } "); } String product_name; String product_kind; int price; static String company = "A"; { System.out.println("{ 인스턴스 초기화 블록 }"); } } public class Main { public static void main(String[] args) { Product product = new Product(); product...
프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우에, "어떤 원인" 을 프로그램 에러 또는 오류라고 한다. 발생시점에 따라 컴파일 에러, 런타임 에러로 나눌 수 있다. 이외에도 논리적 에러가 있는데, 컴파일과 실행 단계에서 문제가 없이 잘 되었지만 프로그램이 의도한 대로 동작하지 않는 것을 의미한다. 컴파일 에러는 컴파일 시에 나타나는 에러로, 소스코드 컴파일 시에 컴파일러가 소스코드에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본 검사를 수행하여 오류가 있는지 알려 준다. 소스코드(*.java)에 있는 컴파일 에러를 모두 수정하여 컴파일을 성공적으로 마치고 나면 클래스 파일(*.class)이 생성되고, 생성된 클래스 파일을 실행할 수 있다. 컴파일러는 실행 도중에 발..
클래스 변수와 인스턴스 변수를 설명하기 위해 하나의 예를 제시한다. A 라는 제조사에서 여러 종류의 제품을 출시한다. 제품 클래스의 속성에는 제조사, 제품이름, 제품군, 가격 정도가 될 수 있겠다. 이 경우에 어떤 것이 인스턴스 변수이고 클래스 변수일까? class Product{ String product_name; String product_kind; int price; static String company = "A"; } product라는 제품은 각각 자신(제품)의 이름, 제품군, 가격을 고유하게 가진다. 그에 비해 제조사를 나타내는 company는 어떤 인스턴스라도 A 라는 같은 값을 가질 것이다. 만약 A라는 제조사가 다른 제조사에게 인수되는 경우, 모든 제품의 company를 바꿔주어야 한다..
JAVA에서는 반복문에 이름을 붙일수 있다. 반복문 을 중첩해서 쓰는 경우에 한 번의 액션 만으로 특정 반복문까지 함께 탈출할 수 있도록 한다. 필자는 다중 중첩 반복문을 연속적으로 빠져나올 때, boolean 타입의 flag 변수를 선언해서 inner 반복문에서 탈출할 때 flag를 true로 변경하고, outer는 flag를 검사해서 true일 때 또다시 break를 하여 탈출하는 방식을 사용해왔다. while (true) { a++; while (true) { if (a > 10) { flag = true; break; } } if (flag) { break; } } 이름 붙은 반복문을 사용하면 이러한 과정 없이 바로 inner와 outer 반복문을 한번에 탈출할 수 있다. public static..