자바 프로그램이 실행되는 방식
1) .java 파일이 컴파일 되면 .class파일이 된다.
2) byte 코드(실행코드)로 바뀐다.
3) VM은 byte 코드를 실행시킨다.
자바 프로그램의 구조
public class MyClass{ // 다른 곳에서 실행 가능, 메인 클래스
int n = 10; // 클래스 필드(전역변수)
void process1(){ // static을 안붙일 경우, 메인 메서드에서
객체 생성 후에 사용할 수 있다.
}
public static void main(String[] args){ // 바로 호출할 수 있는 void 자료형 메서드
System.out.println(" .... "); // sysout 치고, ctrl+space하면 자동 생성
}
}
- static 메서드는 바람직하지 않으므로, 객체 메서드가 될 수 있도록 노력하자.
- c언어에서는 for문을 도는 변수를 for문 밖에 선언했지만, 자바에서는 for문 안에서 선언하자.
** 다른 클래스를 사용하는 main일 경우, 메인 역할을 하는 함수 이름을 써줘라
(ex. mymain(), doit(), run(), start() 등)
변수의 종류
- 필드 : 클래스 내의 모든 메서드에서 사용 가능
- 변수 : 선언된 메서드 내에서만 사용 가능
** 지역 변수끼리 충돌이 일어날 경우, 가장 가까운 변수 값을 가져온다.
"필드가 가려진다"라고도 말한다.
void run(){
int id = 0;
inputinfo();
System.out.printf("이름 : %s, 학번 : %d", name, id); // 홍길동, 0 출력
}
void inputinfo(){
System.out.print("이름과 학번을 입력하시오");
name = s.next();
id = s.nextInt(); // 홍길동, 20121212 입력
}
** 위의 문제점을 방어하기 위해서 this를 사용한다.
수식과 타입
: int, short, long, float, double, boolean, char, byte
** 자바에서는 char는 바이트역할도 하고, 글자를 정의시킬 수도 있다.
** 자바는 엄격하게 제한한다. (허용 예시)
short -> int -> long // 데이터의 손실이 없는 경우로 커질 경우에 가능
float -> double
int, long -> float, double
수치나 비교 연산의 타입(같은 타입만 계산 가능)
- int : float -> float로 변환되어 비교
- int : long -> long로 변환되어 비교
- int : double -> float로 변환되어 비교
- float : double -> double로 변환되어 비교
- float : String -> error!!!
string과 int 변환
(int -> string)
: int -> string으로 자동 변환 혹은 Integer.toString(intNumber) 사용
(string -> int)
: intNumber = Integer.parseInt(strNumber);
: intNumber = Integer.valueOf(strNumber);
: 숫자가 아닌게 들어있으면 NumberFormatException이 발생한다.
int age = 20;
System.out.println(age+1+"세"); // 21세, int+int를 먼저하므로 "21"+"세"가 된다.
System.out.println("나이"+age+1+"세"); // 201세
System.out.println("나이"+age*2+"세"); // 40세
입력 스트림(Scanner)
- 키보드 스캐너는 프로그램 전체에 한 개 // close도 안 먹힘
- next와 nextline이 섞이면 안됨.
왜냐하면 nextline은 \0가 나올 때까지 읽는데, 공백에 멈추는 메서드와 섞어서 사용하면 주의가 필요함
'Computer Science > JAVA' 카테고리의 다른 글
[JAVA] 제너릭이란? (0) | 2020.11.03 |
---|---|
[JAVA] 추상화란? (0) | 2020.10.23 |
[JAVA] 인터페이스란? (+서점 구현하기) (0) | 2020.10.06 |
[JAVA] 상속이란? (+ 서점 구현하기) (0) | 2020.10.06 |
[JAVA] 변수와 메서드 (0) | 2020.09.11 |
댓글