본문 바로가기
Computer Science/JAVA

[JAVA] 자바 기본

by 그적 2020. 9. 2.

자바 프로그램이 실행되는 방식
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

댓글