29일차 java 연산(2023-02-02)

권단비·2023년 2월 2일
0

IT

목록 보기
54/139
class AutoallToString{
int a = 10; // 인스턴스 함수(변수)
}
public static void main(String[] args){
System.out.println(a); // 불러올 수 없다.
}
⇒해당 식은 성립이 될 수 없다.
⇒static 함수 안에는 인스턴스 함수와 인스턴스 변수가 올 수 없기 때문.
static함수가 먼저 생성되기 때문.
[계산]
public class Test37 {
	public static void main(String[] args) {
		String[] strArr = new String[3];

		strArr[0] = "ABCDER";
		strArr[1] = "ABCDER";
		strArr[2] = "ABCDER";

        //String[] strArr = {"ABCDER","ABCDER","ABCDER"}; 상기와 같음
		System.out.println(getStrArr(strArr)); // 같은 함수 안에서 불러오는 것
	}

	public static int getStrArr(String[] strArr) {
    // static 함수 안에는 인스턴스 함수와 변수가 올 수 없다.
		int count = 0;
		for (int i = 0; i < strArr.length; i++) {
			count += strArr[i].length();
		}
		return count;
	}
}
[결과값]
18

[계산]
class Circle8 {
	private double radius;

	public Circle8(double radius) {
		this.radius = radius;
	}

	public double getArea() {
		return radius * radius * Math.PI;
	}

	public static double getArrArea(Circle8[] c) {
		double sumArea = 0;
		for (int i = 0; i < c.length; i++) {
			sumArea += c[i].getArea();
		}
		return sumArea;
	}
}
public class Test34 {
	public static void main(String[] args) {
		int[] a = new int[2];
		Circle8[] circleArr = new Circle8[2]; // Circle8[]은 데이터 타입이다!
        //Circle11[] circleArr = { new Circle11(10), new Circle11(10) }; 상기와 같음

		circleArr[0] = new Circle8(10);
		circleArr[1] = new Circle8(10);

// 상기 배열을 풀어서 설명
//		Circle8 b = new Circle8(10);
//		Circle8 c = new Circle8(10);
//		
//		circleArr[0] = b; // Circle8 타입의 생성된 객체
//		circleArr[1] = c; // Circle8 타입의 생성된 객체

		double areas = Circle8.getArrArea(circleArr);
		System.out.println(areas); // 해당 넓이 출력
	}
}
[결과값]
628.3185307179587

[계산]
//2. 로또번호를 담는 배열을 선언후
//로또 번호를 출력하시오.(단 중복 없이 출력하시오.)
public class Test37 {
	public static void main(String[] args) {
		int[] lotto = new int[6];
		for (int i = 0; i < lotto.length; i++) {
			lotto[i] = (int) (Math.random() * 45) + 1;
			for (int j = 0; j < i; j++) {
				if (lotto[i] == lotto[j]) {
					i--;
				}
			}
		}
		System.out.print("로또 번호: ");
		for (int i = 0; i < lotto.length; i++) {
			System.out.print(lotto[i] + " ");
		}
	}
}
[결과값]
로또 번호: 28 30 41 9 37 44

[배열을 생성과 동시에 초기화]

배열 생성 : int[] arr = new int[3];
배열 생성 및 초기화1 : int[] arr = new int[] {1, 2, 3};
배열 생성 및 초기화2 : int[] arr = {1, 2, 3};

[계산]
//		Rectangle9[] recArr = new Rectangle9[2];
//		recArr[0] = new Rectangle9(10, 20);
//		recArr[1] = new Rectangle9(10, 30);

		Rectangle9[] recArr = { new Rectangle9(10, 20), new Rectangle9(10, 30) }; // 상기와 같은 의미

[계산]
//		Circle8[] circleArr = new Circle8[2]; // Circle8[]은 데이터 타입이다!
//  	circleArr[0] = new Circle8(10);
//		circleArr[1] = new Circle8(10);
Circle11[] circleArr = { new Circle11(10), new Circle11(10) }; 상기와 같음

[배열의 디폴트 초기화]

기본 자료형 배열(int,double등)은 모든 요소 0으로 초기화
인스턴스 배열(=참조변수 배열:String등)은 모든 요소 null로 초기화

int[] ar = new int[10];⇒0의 값이 10개 생성

값을 선언하지 않을 시의 초깃값


[main의 매개변수로 인자를 전달하는 예]

[계산]
public class Test38 {
	public static void main(String[] args) {
		for (int i = 0; i < args.length; i++) {
			System.out.print(args[i] + ": ");
			System.out.println(args[i].length());
		}
	}
}
[결과값]
milk: 4
coffee: 6

[Eclipse로 전달하는 방법]


[CMD로 전달하는 방법]

java Test38 milk coffee ⇒ String[] arr = new String[] {"milk", "coffee"}


[enhanced for문]

[계산]
public class EnhancedFor {
	public static void main(String[] args) {
		// 코드의 특징: 배열 요소의 순차적 접근
		int[] ar = { 1, 2, 3, 4, 5 };
		for (int i = 0; i < ar.length; i++) {
			System.out.print(ar[i]);
		}

		// 위 유형의 코드는 for-each문으로 다음과 같이 구성 가능
		int[] ac = { 1, 2, 3, 4, 5 };
		for (int e : ac) {
			System.out.print(e);
		}
		// 코드의 양이 줄고 배열의 길이와 요소에 신경 쓸 필요 없다.
	}
}
[결과값]
1234512345

[계산]
public class EnhancedFor {
	public static void main(String[] args) {
		int[] ar = { 1, 2, 3, 4, 5 };

		// 배열 요소 전체 출력
		for (int e : ar) { // read only 읽을 수만 있고, 값을 입력할 수는 없다. 입력하고 싶으면 for(int i=0・・・ 사용
			System.out.print(e + " ");
		}
		System.out.println(); // 단순 줄 바꿈을 목적으로

		int sum = 0;

		// 배열 요소의 전체 합 출력
		for (int e : ar) {
			sum += e;
		}
		System.out.println("sum: " + sum);
	}
}
[결과값]
1 2 3 4 5 
sum: 15

[계산]
public class EnhancedFor {
	public static void main(String[] args) {
//		int[] ar = { 1, 2, 3, 4, 5 };
		String[] ar = { "AASDFDSAF", "ADFADF", new String("ABD") };
		for (String str : ar) {
			System.out.print(str + " ");
		}
		System.out.println();
		int sum = 0;
	for (String str : ar) {
		sum += str.length();
	}
	System.out.print("sum: " + sum);
   }
}
>>```
[결과값]
AASDFDSAF ADFADF ABD 
sum: 18

[계산]
class Box1 {
	private int boxNum;
	private String conts;

	public Box1(int boxNum, String cont) {
		this.boxNum = boxNum;
		this.conts = cont;
	}

	public int getBoxNum() {
		return this.boxNum;
	}

	public String toString() { // Object에 toString이 있는데 거기까지 도달하지 못하도록 함수를 정의한 것.
		return boxNum + " " + conts;
	}
}
public class Test39 {
	public static void main(String[] args) {
		Box1[] ar = new Box1[3];
		ar[0] = new Box1(101, "Coffee");
		ar[1] = new Box1(101, "Computer");
		ar[2] = new Box1(505, "Apple");

		// 배열에서 번호가 505인 Box를 찾아 그 내용물을 출력하는 반복문
		for (Box1 e : ar) {
			if (e.getBoxNum() == 505) {
				System.out.println(e);
			}
		}
	}
}
[결과값]
505 Apple

0개의 댓글