객체지향-20230607

DONGDONG_JU·2023년 6월 7일
0

자바

목록 보기
10/16

▶향상된 for문 써보기

	String [] fruits= {"사과","딸기","바나나","복숭아","포도"};
		//향상된 for문을 사용하여 모든 과일을 출력하는 코드를 작성하세요.
		
		for(String num: fruits) {
			System.out.print(num+"  ");
		}
		
		/*
		int [] lotto = new int[6];
		
		lotto[0] = 7;
		lotto[1] = 12;
		lotto[2] = 19;
		lotto[3] = 25;
		lotto[4] = 33;
		lotto[5] = 40;
		
		for(int num: lotto) {  //향상된 for 반복문  int num: 반복변수
 			System.out.print(num+"  ");
		}
		
		
		
		for(int i =0; i< lotto.length; i++) {
			System.out.print(lotto[i]+"  ");
		}
		*/

예제1-time 코딩한거 향상된 for문 써보기

	Time [] timeArr;
		timeArr = new Time[3]; //가지고올수있는 양 제한
		
		/*
		for(Time time: timeArr) {    //원래배열을 바꾸는게 아니라 복사된 time배열만 바뀌는거였음.
			time = new Time();   //배열에 저장된값을 '읽기'목적으로만 사용할때만 새로운 for문 사용가능
		}							//배열에 저장된값을 바꿀려먼 쓰면안됨.
		 
		*/
		
		for(int i=0; i<timeArr.length; i++) {
			timeArr[i]=new Time();
		}
		
		
		timeArr[0].setHour(14);timeArr[0].setMinute(30);timeArr[0].setSecond(25);  //새로운 for문그대로하면 timeArr[null]이됨
		timeArr[1].setHour(14);timeArr[1].setMinute(30);timeArr[1].setSecond(25);
		timeArr[2].setHour(14);timeArr[2].setMinute(30);timeArr[2].setSecond(25);
		
		
		int i =0;
		for(Time time: timeArr) {
			System.out.printf("time%d %s \n",i+1,time.currentTime());
		}
		
		
		/*
		for(int i = 0; i<timeArr.length; i++) {
			System.out.printf("time%d %s \n",i+1,timeArr[i].currentTime());
		}
		*/

-이해 안되면-

	int [] arr1 = {1,2,3,4,5};  //num이라는 변수는 배열을 복사하기 위해 만들었을뿐  
		int [] arr2 = {1,2,3,4,5}; 
		
		for(int num:arr1) {
			num = num*2;  //곱하기를 해도 num안에있는 변수가 바뀌기때문에 원래 arr안에있던 변수는 안바뀜
		}
		
		for(int i= 0; i<arr2.length; i++) {
			arr2[i] = arr2[i] *2;   //원래 배열에있는 값을 직접 변경 하는거임!
		}
		
		for(int num:arr2) {    //arr2가 직접 바꼈기 때문에 num으로 복사를 하면 바뀐 arr2가 복사됨.
			System.out.print(num+ "  ");
		}

향상된 for문은 상황보고 쓰기


선언위치에 따른 변수의 종류

Tv t;
-Tv타입의 래퍼런스 t


	Circle c1 ,c2;  //c1초기화해주기
		c1 = new Circle();
		c2 = new Circle();
		
		 
		System.out.println("c1] pi: "+ c1.pi+", radius: "+ c1.radius+ ", Area: "+c1.getArea());
		System.out.println("c2] pi: "+ c2.pi+", radius: "+ c2.radius+ ", Area: "+c2.getArea());
		
		
		//c1.radius = 5;
		
		c1.setRadius(7);
		c1.pi = 3.141592;
		
		System.out.println("c1] pi: "+ c1.pi+", radius: "+ c1.radius + ", Area: "+c1.getArea());
		
		c2.setRadius(7);
		c2.pi = 3.14;  //자기만의 PI값을 가질수 있음.
		
		System.out.println("c2] pi: "+ c2.pi+", radius: "+ c2.radius + ", Area: "+c2.getArea());

모든 인스턴스가 공유하는 하나의 PI를 만들어줘야 좋음.
이걸 하나의 PI만들어주는게 = 클래스 변수

-메서드는 객체가 제공하는 기능

-class Circle2-

	static double pi=3.141592;    //3.141592값 고정
	int radius;
	
	void setRadius(int rad) {
		radius = rad;
	}
	
	double getArea() {
		double area;
		area = radius * radius * pi;
		
		return area;
	}
	System.out.println("pi: "+ Circle2.pi);
		
		Circle2 c1,c2;
		c1 = new Circle2();
		c2 = new Circle2();
		
		System.out.println("c1.pi: "+ c1.pi);
		System.out.println("c2.pi: "+ c2.pi);
		
		Circle2.pi=3.14;
		c1.pi=3.14;
		
		System.out.println("c1.pi: "+ c1.pi);
		System.out.println("c2.pi: "+ c2.pi);

메서드유형4가지↓
1.입력값의 유무
2.반환의 유무

--> 1.입력값o 반환값 o
2.입력값o 반환값x
3.입력값x 반환값o
4.입력값x 반환값x


용어정리

argument- 인수,인자
parameter- 매개변수

메소드가 호출할때 넘겨주는 입력값 - 인수,인자

메소드 입장에서 받아서(인수를 받아서) 어딘가(매개변수) 저장해서 사용함

ex)
add(int a,int b)

  • int a랑 int b 는 파라미터(매개변수)

add(10,20)

여기서 10,20이 argument 값

값을 반환할때는 return

메소드안에서 return을 사용하는 나오는 효과
1.return이 사용된 위치에서 메소드의 실행은 무조건 종료됨.
2.return을 사용해서 메소드의 실행결과를 반환할수있음. 단, 그 위치에서 메소드는 무조건 종료


Return

-class ReturnTest-

void noReturn() {
		System.out.println("첫 번째 문장");
		System.out.println("두 번째 문장");
		System.out.println("세 번째 문장");
	}
	
	void return1() {
		System.out.println("Return1()메소드 호출");
		
		
		return;
		//return뒤로는 실행못해서 주석처리나 지워야함
		
		//System.out.println("세 번째 문장");
	}
	
	String return2() {
		System.out.println("Return2()메소드 호출");
		
		return "호출결과";  //void를 String으로 바꿔도 return뒤에는 무조건 종료라서 안돌아감
		
	}
//noReturn()메서드를 호출하여 실행하는 코드를 작성하세요.
		
		ReturnTest ts = new ReturnTest();
		ts.noReturn();
		ts.return1();
		
		
		//String returnValue = ts.return2();
		//System.out.println("returnValue: "+returnValue);
		System.out.println("returnValue: "+ts.return2());

Return-같은 파일안에 넣어서 하기

void noReturn() {
		System.out.println("첫 번째 문장");
		System.out.println("두 번째 문장");
		System.out.println("세 번째 문장");
	}
	
	void return1() {
		System.out.println("Return1()메소드 호출");
		
		
		return;

	}
	
	String return2() {
		System.out.println("Return2()메소드 호출");
		
		return "호출결과";  
		
	}

	public static void main(String[] args) {
		
		//ex5 실행결과와 동일한 결과를 출력하는 코드를 작성하세요.
		
		Ex6 ex6 = new Ex6();
		
		ex6.noReturn();
		ex6.return1();
		System.out.println("returnValue: "+ex6.return2());
		
		
		/*
		noReturn();
		return1();
		return2();
		System.out.println("returnValue: "+return2());
		*/
		

예시-원넓이 구하기

package chap06;


public class Ex7 {
	
	//프로그램의 제목을 출력하는 메서드
	void printTitle() {
		System.out.println("\n 원의 넓이 계산 프로그램");
	}
	
	//입력으로 주어진 문자를 count만큼 출력하는 메서드
	void printCharacter(char ch,int count) {
		for(int i=0; i<count; i++) {
			System.out.print(ch);
		}
		
		System.out.println();
	}
	
	//PI값을 반환하는 메서드
	double getPi() {
		double pi = 3.141592;
		
		return pi;
	}
	
	//반지름을 입력으로 받아 원의 넓이를 계산하여 반환하는 메서드
	double getCircleArea(int radius) {
		double result;
		
		result = radius * radius * getPi();
		
		return result;
	}
	
	
	public static void main(String[] args) {
		
		Ex7 ex7 = new Ex7();
		int radius = 7;
		
		ex7.printCharacter('*', 35);
		ex7.printTitle();
		ex7.printCharacter('*', 35);
		
		System.out.printf("반지름이 %d인 원의 넓이는 %f 입니다.\n",radius,ex7.getCircleArea(radius));
		
		
		
		
	}

}

왜 안돌아가나 했더니 %f 인데 %.f라해서 안돌아갔었다..
오류코드에 .이 문제라고 말해줬는데... 머쓲


과제-올림,반올림,버림 만들기

public class Exam1 {
	
	void up(double num1) {
		
		if(num1 == (int)num1) {
			System.out.println("올림: "+(int)(num1));
		}else{
			System.out.println("올림: "+(int)(num1+1));
		}
		
	}
	void down(double num) {
		System.out.println("버림: "+(int)num);
		
	}
	
	void banup(double num) {
		System.out.println("반올림: "+(int)(num+0.5));
	}

	public static void main(String[] args) {
		
		
		Exam1 ex1 = new Exam1();
		
		double num1=5.647;
		
		ex1.up(num1);
		ex1.down(num1);
		ex1.banup(num1);
		
	
		
	}

}

잘돌아간다!

참고문헌- 자바의정석 (남궁성)

profile
웹개발자로 취업하고싶어 공부중인 HDJ 입니다

0개의 댓글