소드 파일 안에는 클래스가 들어갑니다.
클래스에는 메소드가 들어갑니다.
메소드에는 선언문이 들어갑니다.
소드파일
소스 코드 파일 (.java라는 확장자가 붙은 파일) 에서는 클래스(class) 각각 한 개씩을 정의합니다.
클래스는 보통 프로그램의 한 부분이라고 할 수 있지만 아주 작은 애플리케이션 중에는 클래스 단 하나만으로 이뤄진 것도 있습니다.
클래스는 한 쌍의 중괄호({}) 안에 들어가야 합니다.
클래스
클래스에는 메소드(method)가 한 개 이상 들어갑니다. 메소드는 클래스 안에서(즉, 클래스 전체를 감싸는 중괄호 안에서) 선언해야 합니다.
메소드
메소드를 감싸는 중괄호 안에서는 메소드에서 처리할 일을 지시하는 내용이 들어갑니다.
메소드 코드는 기본적으로 일련의 선언문을 모아놓은 것입니다.
1
2
3
4
5
6
7
|
pulbic class MyFirstApp{
public static void main(String[] args){
System.out.println("Hello, World!");
}//main 메소드의 끝
}//MyFirstApp 클래스의 끝
|
main 메소드란?
● 모든 것은 main메소드에서 시작합니다.
● main 메소드에서 할 수 있는 일
1. 뭔가를 시킵니다. (선언문)
2. 뭔가를 반복해서 수행합니다. (순환문)
3. 조건에 따라 뭔가를 수행합니다. (분기문)
● 선언문의 종류
1. 선언
2. 대입
3. 메소드 호출
4. 기타
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
// 선언
int x;
String name;
double d;
//
// 대입
int x = 3;
//
String name = "Dirk"; System.out.print("x is " + x);
//메소드 호출
//
// 주석은 이렇게 씁니다.
/* 이렇게도 쓰지요. */
/** 이런 것도 있습니다. */
|
간단한 문법 요약
● 모든 선언문은 세미콜론으로 끝나야 한다.
x=x+1;
● 한 줄짜리 주석은 두 개의 슬래시로 시작합니다.
// 주석입니다.
● 대부분의 경우에 공백은 별로 중요하지 않습니다.
x = 3;
● 변수를 선언할 떄는 이름과 유형을 지정해야 합니다.
int weight;
● 클래스와 메소드를 정의하는 부분은 한 쌍의 중괄호안에 들어갑니다.
public void go(){
// 코드가 들어갈 자리
}
순환문 : 뭔가를 반복해서 수행할 떄 조건이 참일떄 안의 내용을 반복함
반드시 참과 거짓이 명확하게구분되는 것만 조건 테스트로 사용할 수 있습니다.
1. for : 사용자가 반복의 횟수를 알고 있을떄 사용
1
2
3
|
for (int x=0; x < 10; x = x + 1) {
System.out.println(“x is now “ + x);
}
|
2.while : 사용자가 반복의 횟수를 모를떄 사용
1
2
3
|
while (x > 12) {
x = x – 1;
}
|
3.do- while : 먼저 한번 실행한 다음 조건과 비교
1
2
3
|
do(x > 12) {
x = x – 1;
}while(x<2)
|
비교 연산자
<(오른쪽보다 작은)
>(오른쪽보다 큰)
== (동치) (등호 두 개가 들어가야 합니다.)
대입 연산자(등호 한 개)와 동치 연산자(등호 두 개)의 차이점에 주의하자
1
2
3
4
5
6
7
8
9
10
11
|
int x = 4; // x에 4를 대입합니다.
while (x > 3) {
//x가 3보다 크기 떄문에
//순환문 코드가 실행됩니다.
x = x – 1; //x의 값에서 1을 뺸 값을 x에 대입합니다.
}
int z = 27; //z에 27을 대입합니다.
while (z == 17) {
//z는 17과 같지 않으므로
// 이 부분에 있는 코드는 실행되지 않습니다.
}
|
Q : 왜 모든 것이 클래스 안에 있어야 하나요?
A : 자바는 객체지향(Object-Oriented)언어입니다.
Q : 모든 클래스에 main 메소드가 있어야 하나요?
A : 아닙니다, 자바 프로그램 한 개에서 클래스 수십 개, 혹은 클래스 수백 개를 사용할 수 있지만
main 메소드가 들어있는 클래스는 하나, 즉 프로그램을 시작시키는 클래스에만 있어야합니다.
물론, 다른 클래스를 테스트하기 위한 용도로 main 메소드가 들어있는 테스트 클래스를 만들 수는 있겠죠
Q : 다른 언어에서는 정수에 대해 부울 테스트를 할 수 있는 경우도 있습니다.
자바에서도 다음과 같은 식으로 할 수 있나요?
A : 안 됩니다. 자바에서는 부울과 정수가 호환되지 않습니다. 조건 테스트는 반드시 부울형으로만 사용가능합니다.
분기문 : 조건에 따라 뭔가를 수행할 때
1
2
3
4
5
6
|
if (x == 10) { //x의 값이 10일떄 실행
System.out.print(“x는 10이군요.”);
} else { // 앞의 if문이 조건을 만족을 하지 않
System.out.print(“x는 10이 아닙니다.”);
}
System.out.print(“이 선언문은 무조건 실행됩니다.”);
|
자바에서 사용하는 if 테스트는 기본적으로 while 순환문에 있는 부울 테스트와 똑같다.
System.out.println 와 System.out.print 의 차이
println에서는 주어진 문자열을 출력한 다음 줄 을 바꿉니다. (맨 뒤에 ‘\n’을 붙여주는 셈입 니다.)
print에서는 주어진 문자열을 출력한 다음 줄 을 바꾸지 않습니다.
앞의 내용들을 활용한 예제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
package bearSong;
public class main {
public static void main(String[] args) {
// TODO Auto-generated method stub
int beerNum=3;
String word = "bottles";
while(beerNum>0) {
System.out.println("current "+ word +" : " + beerNum );
System.out.println("Take one down");
System.out.println("Pass it around");
beerNum=beerNum-1;
if(beerNum==1) {
word="bottle";
}
if(beerNum>0) {
System.out.println(beerNum+" "+word+" of beer on the wall");
}
else {
System.out.println("no more bottles of beer on the wall");
}
System.out.println("-------------------------");
}
}
|
1. 배열 만들기 String[] pets = {“Fido” , “Zeus” , “Bin”};
2. 배열의 길이 확인 int oneLength = pets.length;
3. 난수 만들기 int x = (int) (Math.random() * oneLength);
4. 구문 만들기 String s = pets[0]; s = s + “ 는 강아지입니다.”;
5. 구문 출력
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
package phraseOMatic;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] wordListOne= {"로마 ","카르타고 ","그리스 "};
String[] wordListTwo= {"aaa", "bbb ", "ccc "};
String[] wordListThree = {"농부 ","광부 ","목수 " };
String phrase= wordListOne[rand1] + wordListTwo[rand2] + wordListThree[rand3];
System.out.println(" What the need is a "+phrase);
}
}
|