3월 22일 내용정리
1.참조형은 주소를 저장하고 있으며,
주소값을 가지고 찾아가 내용을 읽어들인다.
예) str=="홍길동" 에러가 뜬다. 왜? str은 주소값을 저장하고 있음
str.equals("홍길동"); 내용 비교가 됨
str이 가르키는 내용을 비교 하기 때문이다.
*어제내용복습 문제풀이
//문제를 먼저 보고 조건이 뭔지, 구해야 될게 뭔지 파악하고 종이로 로직을 먼저 그려본다.
/*문7_2 컴퓨터와 사람이 가위,바위,보 게임
* 사람: 가위(1),바위(2),보(3)
* 컴퓨터:랜덤처리
* 사람과 컴퓨터 낸거 출력 및 승부 출력
* 1판이 끝나면 계속진행여부확인(진행'Y',취소'N')
*/
/*Scanner scan = new Scanner(System.in);
while(true) {
System.out.println("가위(1),바위(2),보(3) 입력하세요.");
int person = scan.nextInt();
int com=((int)Math.random()*3)+1;
int x= person-com;
switch(x) {
case -1:
case 2:System.out.println("컴퓨터 승리");
break;
case -2:
case 1:System.out.println("당신 승리");
break;
case 0:System.out.println("비김");
break;
default:System.out.println("다시 입력하세요");
continue;
}
System.out.println("당신은"+person+"냈습니다.");
System.out.println("com은"+com+"냈습니다.");
System.out.println("계속 진행 할까요? 예(0),아니요(9)");
int restart = scan.nextInt();
if(restart==0) continue;
if(restart==9)
System.out.println("게임을 종료합니다.");
break;
}*/
2.메서드란?
공통적으로 쓰는 부분을 뽑아내서 묶어내어 이름표를 붙이고,
필요할때마다 이름 불러서 쓰는 구조를 '메서드'라고 한다.
package study_0322;
public class study_0322_01 {
public static void main(String[] args) {
//공통적으로 쓰는 부분을 뽑아내서 묶어내어 이름표를 붙여 필요할때마다 이름 불러서 쓰는 구조를 '메서드'라고 한다.
System.out.println(hap(1,10));
System.out.println(hap(10,100));
System.out.println(hap(100,1000));
}
public static int hap(int su1, int su2) {
int sum=0;
for(int i=su1;i<=su2;i++) {
sum+=i;
}
return sum;
}
}
(1)메서드 흐름
메인클래스에서 hap메서드를 호출 -> hap(매개값1,매개값2)를 가지고
hap메서드로 감->hap메서드 식 계산->변수값에 결과값저장->
return을 만나 호출한 메인메서드로 결과값을 가지고 되돌아간다.
(2)식 설명
hap(1,10)->메서드변수명(매개값1,매개값2)
public static int hap(int su1, int su2)->
접근제어자 객체생성없이 리턴타입 메서드변수명(매개타입 매개변수명,매개타입 매개변수명)
static은 객제 생성없이 라는 의미로 먼저 메모리에 올려 놓는다.
만약, public static void hap(int su1, int su2) 를 썼다면,
여기서 void는 결과값을 메인메서드에 되돌려주지 않아도 된다.
return sum->호출한곳으로되돌아감 결과값변수명 을 가지고..
즉, 'return 변수명'은 메서드 내부식 처리후 '변수명으로 값을 돌려줄께'
메소드 안에 return만 있으면 break; 와 비슷하여 밑에 있는 문장은 실행 안됨
(3)지역변수
int su1,int su2,int sum 지역변수이며, 블럭내에서만 활동하는 변수로
블럭밖에서는 활동 못함.에러남.
package study_0322;
public class study_0322_02 {
public static void main(String[] args) {
printScore(99);
printScore(120);
}
public static void printScore(int score) {
if(score<0 || 100<score ) {
System.out.println("잘못된 점수입력:"+score);
return; //메서드내에 break; 와 같은 기능이며,
//void 가 있어서 메인메서드에 결과값을 되돌려 주지 않아서
//메인메서드에서 결과를 실행안한다.의 의미
}
System.out.println("점수입력:"+score);
}
}