'메서드'에 해당되는 글 2건
- 2008.08.05 Part2. 메소드 나머지 부분 & Part 3. 클래스와 객체(11. 클래스와 객체) 3
- 2008.08.04 PART 2(7 제어문의 다양한 활용 ~ 10 사용자정의 메서드 만들기)
Part2. 메소드 나머지 부분 & Part 3. 클래스와 객체(11. 클래스와 객체)
자바 클래스 선언하기
class 클래스 이름 {
접근 지정자, 자료형, 변수;
접근 지정자, 생성자() {
...
}
접근 지정자, 자료형, 메서드 이름() {
...
}
// 절대값 구하기
package training;
public class Ex01 {
static int compare(int a){
//int abs;
if(a<0){
a=-a;
}
return a;
// 함수를 호출해 준 곳으로 결과값으로 구한 절대값을 되돌려준다.
//System.out.println(a);
}
public static void main(String[] args) {
int a=-5; // 지역변수
System.out.println("compare(a) : " + compare(a));
}
}
// 1부터 입력 받은 수 까지의 자연수의 합을 구하시오.
// 입력 받은 수의 팩토리알을 구하시오.
package training;
public class Ex03 {
static int sum(int n){
int total=0;
for(int i=1;i<=n;i++){
total+=i;
}
return total;
}
static int fac(int m){
int total=1;
for(int i=1;i<=m;i++){
total*=i;
}
return total;
}
public static void main(String[] args) {
int n=Integer.parseInt(args[0]);
System.out.println(" total =" + sum(n));
System.out.println(" fac =" + fac(5));
}
}
접근 지정자 :
// 객체 설명
package training;
// 새로운 자료형을 설계 -> 객체(인스턴스변수를 찍어 내기위한 틀)
class Animal{ // 클래스 내부에 멤버를 정의
// 변수 형태의 속성 : 단순히 값을 저장하는 용도로 사용된다.
private String name;
// 캡슐화는 속성에 합당한 값만 저장할 수 있도록 하기 위해서 속성을
// 외부에서 접근 못하도록 하고 대신 메소드로 접근하도록 한다.
private int age; // 접근 지정자 private은 해당 멤버를
// 자신의 클래스내의 메소드에서만 사용가능
public String getName(){ // 속성값을 얻어옴(getter)
return name;
}
public void setName(String new_name){ // 속성을 새로운 값으로 설정(setter)
name=new_name;
}
public int getAge(){ // 속성값을 얻어옴(getter)
return age;
}
public void setAge(int new_age){ // 속성을 새로운 값으로 설정(setter)
if(new_age>=0)
age=new_age;
}
}
public class Ex04 {
public static void main(String[] args) {
// 클래스로 선언된 변수는 레퍼런스 변수로 실질적으로
// 값을 저장할 공간을 마련하지 못한다. -> 실체를 참조하는 용도로 쓰인다.
Animal a; // a는 선언 시, 기술한 자료형에 의해 형태가 결정된다.
// 클래스로 실질적인 값을 저장할 공간을 마련하기 위해서는
// new 연산자를 사용한다.
// 힙영역에 생성된 실체는 이름이 없지만
// new 연산자가 메모리 할당 후, 그 메모리의 위치정보를 되돌려 주면
// 그 위치정보를 레퍼런스변수에 저장해야만 이 실체에 접근할 수 있다.
a=new Animal();
// 객체를 멤버 단위로 접근해서 사용함 : 멤버 참조 닷 연산자
a.setName("사자"); //="원숭이"; // Animal 객체의 이름을 설정한다.
a.setAge(26);
// a.age=-26; // Animal 객체의 나이를 설정한다. // 속성을 새로운 값으로 설정
// 이름하고 나이를 출력
System.out.println(a.getName() + " , " + a.getAge()); // 속성값을 얻어옴
// Animal 객체를 하나더 생성하여
// 레퍼런스 변수 b로 접근하도록 하고
// 이름은 "펭귄" 나이는 12로 저장하고 출력
/*Animal b = new Animal();
b.name="펭귄";
b.age=12;
System.out.println(b.name + "," + b.age);*/
}
}
// int x를 private로 바꿨을 때 출력하기 위한 작업을 하시오.
package training;
class Thing{
private int x;
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
}
public class Ex05 {
public static void main(String[] args) {
Thing thing = new Thing();
thing.setX(10); //=10;
System.out.println("x : " + thing.getX());
}
}
// 속성으로 자판기에서 취급하는 제품의 정보를 저장하는 변수와 이를 다루기 위한 메소드를 갖는 자판기 클래스를 선언하고
// 다음과 같은 결과가 나오도록 객체 생성 후 메소드를 호출하시오.
// 복습할 때 모듈화를 시키시오.
// name, price를 private로 지정하고 출력할 수 있는 작업을 하시오.
package training;
class Product{
private String name;
private int price;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
public class Ex06 {
public static void main(String[] args) {
/* Product a = new Product();
a.name="커피";
a.price=500;
Product b = new Product();
b.name="웰치스";
b.price=700;
Product c = new Product();
c.name="포카리";
c.price=500;
Product d = new Product();
d.name="비타500";
d.price=500;
for(int i=1;i<=4;i++)
// System.out.println(a[i].name + ":" + a[i].price + "원");
System.out.println(a.name + ":" + a.price + "원");
System.out.println(b.name + ":" + b.price + "원");
System.out.println(c.name + ":" + c.price + "원");
System.out.println(d.name + ":" + d.price + "원"); */
// 레퍼런스 변수가 4개 필요
Product [] a= new Product[4]; // 레퍼런스 값 4개 저장되는 배열
// 인스턴스 4개 생성해서 레퍼런스 변수가 가리키도록 해야 함
for(int i=0;i<a.length;i++){
a[i] = new Product();
}
a[0].setName("커피") ; a[0].setPrice(150);
a[0].setName("웰치스") ; a[0].setPrice(700);
a[0].setName("포카리") ; a[0].setPrice(500);
a[0].setName("비타500") ; a[0].setPrice(500);
for(int i=0;i<a.length;i++){
System.out.println(a[i].getName() + " , " + a[i].getPrice());
}
}
}
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 4. 상속 I (0) | 2008.08.08 |
---|---|
Part 3. static (2) | 2008.08.07 |
Part 3. 생성자 (0) | 2008.08.07 |
Part 2 & 3 메소드와 클래스 (0) | 2008.08.06 |
PART 2(7 제어문의 다양한 활용 ~ 10 사용자정의 메서드 만들기) (0) | 2008.08.04 |
PART 2(7 제어문의 다양한 활용 ~ 10 사용자정의 메서드 만들기)
for문에 if문 사용하기
형식 :
for(초기값 ; 조건식 ; 증감식) {
if(조건식)
else
}
for문 안에 for문을 기술하는 다중for문
for(초기식 ; 조건식 ; 증감식) {
실행문 ;
for(초기식 ; 조건식 ; 증감식) {
실행문 ;
}
실행문;
}
실행문;
문제 이렇게 출력되도록 프로그램을 짜 보시오
1
234
56789
8. 제어문을 보조하는 보조제어문
실행을 중지하는 break 보조 제어문
반복문 -1 {
반복문 -2 {
break; <= break 문이 실행되면
}
} <= 반복문 -1 로 올라가서 다시 실행된다.
반복문 -1 위로 벗어나기 위해서는 레이블을 사용한다.
exit_for : <= 레이블 문에서 다시 시작한다.
반복문 -1 {
반복문 -2 {
break exit_for; <= 레이블이 실행되면
}
}
continue 보조 제어문
break 문은 완전히 반복문을 벗어나지만 continue문은 반복을 계속하기 위해 증감식으로 제어가 옮겨짐.
반복문 { <- 반복문의 증감식으로 올라온다.
:
:
continue; <- continue 문을 만나면
:
:
}
9. 배열
1차원 배열 선언의 형식
1. new 연산자를 이용하는 방법
ex : int [] a = new int [5];
a : 배열의 이름, int : 배열에 들어갈 자료형, [5] : 배열에 들어갈 원소의 개수
2. 해당 배열의 내용을 직접 초기화하는 방법
ex : int [] a = { 10, 20, 30, 40, 50 };
다차원 배열
예제 1.
int [] [] a = new int [3] [5]; // 3행 5열의 경우
score[0][0]=10; score[0][1]=90; score[0][2]=70;
score[1][0]=60; score[1][1]=80; score[1][2]=65;
score[2][0]=55; score[2][1]=60; score[2][2]=85;
score[3][0]=90; score[3][1]=75; score[3][2]=95;
score[4][0]=60; score[4][1]=30; score[4][2]=80;
예제 2.
int [][]score = { { 85, 60, 70}, //0 행
{ 90, 95, 80}, //1 행
{ 75, 80, 100}, //2 행
{ 80, 70, 95}, //3 행
{100, 65, 80} //4 행
};
010: int [] subject = new int[3]; //각 과목별 총점을 저장할 변수 선언
011: int [] student = new int[5]; //각 학생별 총점을 저장할 변수 선언
10. 메서드와 자바 프로그램
모듈화 프로그래밍이란?
프로그래머가 한번에 생각할 수 있는 단위로 모듈화하여 프로그래밍을 할 경우, 프로그램을 작성하기가 쉬워지고 디버깅이 용이하므로 프로그램을 기능별로 모듈화하기 위해서 메서드가 사용되는데 이를 사용자 정의 메서드라고 하며 적절한 곳에서 호출해서 사용할 수 있다.
사용자 정의 메서드 만들기
자료형 메서드이름 (전달인자리스트) {
변수 선언 ;
문장 ;
return (결과 값); // 메서드의 자료형과 리턴값의 자료형은 일치해야 한다.
}
void형 메서드
메서드의 몸체에서 기술한 명령을 실행할 뿐 메서드의 리턴값을 받지 않는 경우 void라는 자료형을 사용한다.
질의 사항
지역 변수와 전역 변수의 차이는???
아래는 main 메서드의 지역변수를 prn메서드에서 불러와서 쓰는 경우인데
지역변수는 정의한 메서드에서만 사용할 수 있다고 했는데
왜 prn 메서드에서 정상적인 호출이 가능한 것인지.
그리고 전역변수로 어떻게 지정하는지...
prn 메서드 내부에서 정의 내리면 왜 컴파일 에러가 나는지...
// char ch = '#'
// int n=5;
// ch에 저장된 문자를 n 개수만큼 반복 출력
package training;
public class Ex14 {
// char ch='#';
static void prn(char ch, int n){
// char ch='#';
for(int i=0;i<n;i++)
System.out.print(ch+" ");
}
public static void main(String[] args) {
char ch='#';
prn(ch,10);
prn('@',5);
}
}
'수업 > 자바2JDK입문' 카테고리의 다른 글
Part 4. 상속 I (0) | 2008.08.08 |
---|---|
Part 3. static (2) | 2008.08.07 |
Part 3. 생성자 (0) | 2008.08.07 |
Part 2 & 3 메소드와 클래스 (0) | 2008.08.06 |
Part2. 메소드 나머지 부분 & Part 3. 클래스와 객체(11. 클래스와 객체) (3) | 2008.08.05 |