JAVA - 2022.07.25

sofia·2022년 7월 25일
0

JAVA

목록 보기
9/27
post-thumbnail

필기한..ppt말고 원본을 가지고 와버렸다..........
( 와아... 정리할게..밀렸다.........


📗복습 문제

📖문제 1.

10년동안의 5개 도시의 신생아 총합 (1월에는 101,102,103,103... 2월 201 202 203… 120개월 12001 12002 12003… 반복)

package chapter04;

public class BabySum {

	public static void main(String[] args) {
		int baby[][] =new int [120][];
		//120개월. 즉 10년
		int sum =0;

		
		for (int i = 0; i < baby.length; i++) {
			//i는 달에 해당됨 [0]~[11]
			baby [i] = new int[5]; 
			//처음에 int baby[][] =new int [120][];대신
			//int baby[][] =new int [120][5];를 한 것과 동일함.
			for (int j = 0; j < baby[i].length; j++) {
				//j는 나라의 수 :5개
				baby[i][j] = (i+1)*100+(j+1);
				//i와 j는 0부터 시작되므로 +1을 해줘야함.
				sum +=baby[i][j];//10년동안의 신생아 수
			}
		}
		
		System.out.println("10년간 5개 나라의  총 신생아수는 "+sum);

		
	}

}

📖문제 2.

양의 정수 10개를 입력받아 배열에 저장하고, 배열에 있는 정수 중에서 3의 배수만 출력하는 프로그램 작성

package chapter04;

import java.util.Scanner;

public class MutipleOfThree {

	public static void main(String[] args) {
		int array[]= new int [10];//10개의 정수 저장

		Scanner scanner = new Scanner(System.in);
		System.out.println("양의 정수 10개를 입력하시오>>");

		for (int i = 0; i < array.length; i++) {//배열 크기(10)을 반복
			array[i] = scanner.nextInt();//배열에 10개의 정수를 저장
		}
		// 이 과정이 없으면 3의 배수 하나 입력하게 되면 바로 결과값이 나와버림.
		//그래서 꼬옥.. 있어야함
		
		System.out.println("3의 배수는");
		for (int i = 0; i < array.length; i++) {
			if ((array[i] % 3 == 0)) {//[i]에 저장된 정수가 3의 배수인경우
				System.out.print(+array[i]+" ");
			}
		}
		scanner.close();
	}
}

📖문제 3.

Song 클래스 작성

  1. 필드 : 노래 제목 title
    가수를 나타내는 artist
    발매년도 year
    가수의 국적 country

  2. Song클래스에
    생성자 2개
    show메소드
    "1978년 스웨덴국적의 ABBA가 부른 Dancing Queen" 출력


(필드 확인 가능하며 생성자 한번에 생성함)
(우클릭-source- g c u f)으로 확인가능

package chapter04;

public class Song {
	String title;
	String artist;
	int year;
	String country;

	void show() {
		System.out.println(year + "년 " + country + "국적의 " + artist + "가 부른 " + title);
	};

	public Song() {//기본 생성자
	};

	public Song(String title, String artist, int year, String country) {
		this.artist = artist;
		this.country = country;
		this.title = title;
		this.year = year;
	}
    //매개변수가 있는 생성자(초기화)

	public static void main(String[] args) {
		Song like = new Song("Dancing Queen", "ABBA", 1978, "스웨덴");
		like.show();
	}

}

📗클래스와 객체

📖객체의 치환

📖객체 배열

📖객체 배열 선언과 생성 과정

📖인자 전달

  1. 기본 타입의 값 전달
  1. 객체 혹은 배열 전달


📖오버로딩

:한 클래스 내에 같은 이름의 메소드를 여러개 정의하는 것

오버로딩의 조건

  1. 메소드 이름이 같아야한다.
  2. 매개변수의 개수 또는 타입이 달라야한다.
  3. 반환 타입은 관계 없음.
1.
class MethodOverloading {
	public int getSum(int i, int j) {
		return i + j;
	}
	public int getSum(int i, int j, int k) {
		return i + j + k;
	}
}
2.
class MethodOverloadingFail { 
	public int getSum(int i, int j) {
		return i + j;
	}
	public double getSum(int i, int j) {
		return (double)(i + j);
	}
}

📖오버로딩된 메소드 호출의 경우

📖가비지 컬렉션

  • 자동
  • 레퍼런스

예시)

📖패키지

: 클래스의 묶음. 하나의 디렉토리.

📖접근제어자

:멤버 또는 클래스에 사용되며 , 해당하는 멤버 또는 클래스를 외부에서 접근 하지 못하도록 제한하는 역할

접근 제어자가 사용될 수 있는 곳 : 메소드, 생성자, 클래스, 멤버변수

public > protected > (default) > private

public : 접근 제한 없음
protected : 같은 패키지 + 자손클래스
(default) : 같은 패키지
private : 같은 클래스

멤버 접근 지정자의 이해

public

protected

(default)

private


📖Static 멤버와 non-Static멤버

📖Static 멤버를 객체의 멤버로 접근하는 사례

📖Static 멤버를 클래스의 이름으로 접근하는 사례

📖Static 의 활용



📗예제 문제

📖예제 1

package chapter04;

class Circle3{
	int radius;;//속성
	public Circle3(int radius) { //int radius라는 참조변수가 있는 생성자
		this.radius = radius;
	}
	public double getArea(){
		return 3.14*radius*radius;
	}//public은 접근지정자, getArea이라는 메소드 //return  필요
	
//	public static void main(String[] args) {
//		System.out.println("2");
//	}
}

// class aaa : class 앞에 아무것도 없다.(public같은거) 
//=> 이런 경우 이걸 디폴트 클래스라고 함
// 앞에 public 넣을 경우 오류 발생(public 클래스는 자바파일당  하나만 가능하기 때문)


public class CircleArray {
	public static void main(String[] args) {
	//	System.out.println("1");
		Circle3[] c;// 점하나 그림..?
		c = new Circle3[5];
		//참조변수 5개. 이걸 가지고 객체 생성(점 5개)
		
		for (int i = 0; i < c.length; i++) {//c.length =5 반복
			c[i] = new Circle3(i);//i는 0~4까지 객체 5개
			// 
		}
		
		for (int i = 0; i < c.length; i++) {//c.length =5 반복
			System.out.println((int)c[i].getArea()+" ");
			// 반지름이 0에서 4까지의 원의 넓이 출력
			
			// 결과
//			0 
//			3 
//			12 
//			28 
//			50
		}
	}
}

📖예제 2

package chapter04;

import java.util.Scanner;

class Book3{
	String title, author; //속성 2개
	
//	public Book3() {}// 기본 생성자
	public Book3(String title, String author) {
		this.title = title;
		this.author = author;
	}
}//디폴트 클래스

public class BookArray {

	public static void main(String[] args) {
		Book3[] book = new Book3[2];// 두개의 점 존재(book 객체)
		 Scanner scanner = new Scanner(System.in);
		 
		 for (int i = 0; i < book.length; i++) {//book.length=2 // 2번반복
			System.out.print("제목>>");
			String title = scanner.nextLine();
			System.out.print("저자>>");
			String author =  scanner.nextLine();
			book[i] = new Book3(title, author); 
			//객체 생성, 생성자안에 있는 매개변수(title, author) 
			//안에 값을 넣을 수 있음(객체속성 title, author에 값 저장)
			// 두개의 객체에 값이 들어감
		}

		 for (int i = 0; i < book.length; i++) {
			System.out.print("("+book[i].title+","+book[i].author+")");// 배열 객체 출력
		}
		 scanner.close();
	}

}
//결과
제목>>사랑의 기술
저자>>메리히 프롬
제목>>시간의 역사
저자>>스티븐 호킹
(사랑의 기술,메리히 프롬)(시간의 역사,스티븐 호킹)

📖예제 3

package chapter04;
//
public class ArrayPrarmeterEx {

	static void printCharArray(char a[]) {
		for (int i = 0; i < a.length; i++) {
			System.out.print(a[i]);
		}
		System.out.println();
	}// 반환타입
	
	static void replaceCharArray(char a[]) {
		for (int i = 0; i < a.length; i++) {
			if (a[i] == ' ') {
				a[i]=',';
			}
		}
		
	}// 반환타입
	
	public static void main(String[] args) {
		char c [] = {'T','h','i','s',' ','i','s',' ','a',' ','p','e','n','c','i','l','.'};
		printCharArray(c);
		replaceCharArray(c);//replaceCharArray설정
		printCharArray(c);//replaceCharArray값이 나옴
	}

}
//결과
//This is a pencil.
//This,is,a,pencil.

📖예제 4

package chapter04;

public class RandamNumber {
	//이케..푸는게 맞나...?내가 한거
	//문제 : main 메소드 설계, 변수들, rNumber :1부터 10사이의 정수
	//알고리즘
	//1. 1부터 10사이의 정수를 임의로 만든다.
	//2. 숫자 출력
	//3.  7이라는 숫자 출력시 종료
	
	
	
	public static void main(String[] args) {
		for (int i = 0; i <10000000; i++) {
			int rNumber = (int) (Math.random()*10);
			if (rNumber==7) {
				System.out.println(rNumber);
				break;
			}
			System.out.println(rNumber);
		}


또는
while(true) {
			int rNumber = (int) (Math.random()*10);
			if (rNumber==7) {
				System.out.println(rNumber);
				break;
			}
			System.out.println(rNumber);
		}
	}

}

또는

package chapter04;

import java.util.Random;

public class RandamNumber {
	//강사님 방법
	//문제 : main 메소드 설계, 변수들, rNumber :1부터 10사이의 정수
	//알고리즘
	//1. 1부터 10사이의 정수를 임의로 만든다.
	//2. 숫자 출력
	//3.  7이라는 숫자 출력시 종료
	
	
	
	public static void main(String[] args) {
		int rNumber;
		Random generator = new Random();
		
		while (true) {
			rNumber = generator.nextInt(10)+1;
			System.out.println(rNumber);
			
			if (rNumber==7) {
				break;
			}
		}
		
	}

}

📖예제 6

패키지 분리 작성 문제

package etc;

public class Calc {
	private int x,y;
	public Calc (int x, int y) {
		this.x=x;
		this.y=y;
	}
	public int sum() {
		return x+y;
	}
}
package main;

import etc.Calc;

public class MainAPP {

	public static void main(String[] args) {
		Calc c = new Calc(10,20);
		System.out.println(c.sum());
		
	}

}

📖예제 7

정수 10개 저장하는 배열을 만들고 1~!10까지의 범위의 정수 랜덤 생성 하여 배열에 저장 함

배열 숫자 및 평균 출력

package chapter04;
//내 방법
public class RandomTen {
	public static void main(String[] args) {
		int[] array = new int[10];

		double sum = 0;

		System.out.print("랜덤한 정수들 :");

		for (int i = 0; i < array.length; i++) {
			int number = (int) (Math.random() * 10 + 1);
			System.out.print(number + " ");
			sum += number;
		}
		System.out.println();
		System.out.println("평균은 " + sum / 10);

	}
}

0개의 댓글