여러분의 이름을 출력할 Profile 클래스를 만들고, 그 클래스에 main()메소드를 만들어보자.
public class Profile {
public static void main(String[] args) {
System.out.println("jeong hee kim");
}
}
Profile클래스의 main() 메서드에 “My name is OOO”이라는 값을 출력해주는 코드를 작성해 보자.
public class Profile {
public static void main(String[] args) {
String name = "jeong hee kim";
System.out.println("My name is " + name);
}
}
Profile클래스의 main() 메서드에 “My age is OOO”이라는 값을 출력해주는 코드를 작성해 보자.
public class Profile {
public static void main(String[] args) {
int age = 31;
System.out.println("My age is " + age);
}
}
main() 메소드의 메소드 이름 앞에는 어떤 예약어들이 들어 가나요? (순서대로 쓰세요)*
public class Profile {
public static void main(String[] args) {
//접근제한자 + 예약어 //리턴타입
}
}
main() 메소드의 매개변수에는 어떤 값이 들어가나요?
메인메소드에 전달되는 매개변수는 String배열이어야한다. 매개변수에는 java-command-line parameter가 들어간다.
→ 예를들어 java Profile one two 이렇게 command line으로 실행하면 args배열 요소로 one, two가 들어간다. 이러한 부분이 실제로 어떻게 쓸 수 있는지 잘 모르겠다..
만약 여러분들이 만든 클래스에 main() 메소드가 없다면, java 명령어로 그 클래스를 수행할 수 있나요?
오류: Profile 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.
public static void main(String[] args)System.out.println() 메소드는 어떤 용도로 사용하나요?
console화면에 데이터를 출력하는 기능을 한다.
System.out.print() 메소드는 System.out.println() 메소드와 어떤 차이가 있나요?
println() : 괄호안의 내용을 출력한다.
println() : 괄호안의 내용을 출력하고 다음라인으로 넘긴다.
// 는 무엇을 하는데 사용하는 기호인가요?
라인 한줄을 주석처리한다.
/ 로 시작하고, /로 끝나는 사이에 있는 소스들을 어떻게 되나요?
메소드를 선언할 때 반드시 꼭 있어야 하는 세가지는 무엇인가요?
프로그래머가 자바 .java파일 을 작성한다.
javac compiler에 의해 .java → .class 파일로 컴파일 된다. .class파일은 JVM이 이해할 수 있는 바이트 코드로 구성되어있다. 바이트 코드로만은 실행이 불가하다.
JVM에서 인터프리터에 의해 머신코드(기계가 이해할 수 있는 언어)로 해석된다.
컴파일 된 다음 자바 launcher가 .class파일을 실행 시킨다. = 로딩된 바이트 코드는 Execution Engine을 통해 해석된다.
해석된 바이트 코드는 Runtime Data Areas에 배치되어 실행됨
.class파일 JVM에서 실행되므로 OS에 구속되지 않고 어느 운영체제에서 실행 가능하다.
Java Platform은 소프트웨어로만 구성되어있다.
클래스 로더는 컴파일된 바이트 코드(.class)파일을 아래 세단계를 거쳐 거쳐 Runtime Data Area에 저장된다.
Runtime Data Area는 자바 어플리케이션 실행 시 사용되는 OS에서 할당받은 메모리 공간
class Person {
int id;
String name;
public Person(int id, String name) {
this.id = id;
this.name = name;
}
}
public class PersonBuilder {
private static Person buildPerson(int id, String name) {
return new Person(id, name);
}
public static void main(String[] args) {
int id = 23;
String name = "John";
Person person = null;
person = buildPerson(id, name);
}
}
New generation = Eden + S0(Survival0), S1(Survival1) , old generation
- 새로운 객체 Eden영역에 생성. Eden영역의 메모리가 차면 GC 동작 시작
이때 발생하는 GC를 Minor GC라 함.
GC가 동작하면서 Mark, Sweap 동작이 발생하며, Eden에서 살아남은 객체는 S0으로 이동
- new 키워드로 생성된 객체가 저장되는 위치
- GC의 관리 대상