본문 바로가기
대학강의정리/24.1 자바

chap5. 문자열, 배열, 열거 타입

by 피스타0204 2024. 4. 9.

1. 문자열

1) 문자열의 선언과 생성

String타입의 변수는 큰따옴표""로 감싼 문자열 리터럴을 사용하여 초기화할 수 있습니다.

문자열 리터럴은 내부적으로 new String("안녕, 자바")를 호출해 객체를 만들어 대입하는 것입니다. 그래서 내용이 같은 리터럴이라면 새로운 String객체를 생성하지 않고 기존 리터럴을 공유합니다. s1과 s2는 동일한 객체를 가리킵니다.

 

2) 문자열의 비교

==와 !=는 두 문자열의 내용을 비교하는 것이 아니라 동일한 객체인지 검사하는 것입니다. 실제 내용을 비교하는 것은 String compare 라이브러리를 따로 사용해야 합니다. 그렇기 때문에 숫자처럼 단순한 비교가 불가능합니다. 같은 문자열 리터럴이더라도 다른 객체를 생성해 저장하면 다르다고 나옵니다. 참조 변수를 일치시켜주면 같은 값이 나옵니다.

package main;

public class Main {
	public static void main(String[] args) {
		String s1 = "Hi, Java!";
		String s2 = "Hi, Java!";
		String s3 = new String("Hi, Java!");
		String s4 = new String("Hi, Java!");

		System.out.println("s1 == s2 -> " + (s1 == s2)); // 동일한 객체인가?
		System.out.println("s1 == s3 -> " + (s1 == s3));
		System.out.println("s3 == s4 -> " + (s3 == s4));

		s1 = s3;
		System.out.println("s1 == s3 -> " + (s1 == s3));
	}
}
//s1 == s2 -> true
//s1 == s3 -> false
//s3 == s4 -> false
//s1 == s3 -> true //참조 변수를 일치시켜주면 같은 값이 나옵니다.

 

활용

package main;

public class Main {
	public static void main(String[] args) {
		String s1 = "Hi, Java!";
		String s2 = "Hi, Java!";
		String s3 = new String("Hi, Java!");
		String s4 = new String("Hi, Java!");

		System.out.println("s1 == s2 -> " + (s1 == s2)); // 동일한 객체인가?
		System.out.println("s1 == s3 -> " + (s1 == s3));
		System.out.println("s3 == s4 -> " + (s3 == s4));

		s3 = s1;
		System.out.println("s2 == s3 -> " + (s2 == s3));
	}
}
s1 == s2 -> true
s1 == s3 -> false
s3 == s4 -> false
s2 == s3 -> true

3) 문자열의 다양한 연산

자세히 외울 필요는 없고 있다는 사실만 알아두기

 

2. 배열의 기초

1) 배열의 개념

자바에서 배열은 참조변수입니다.

2) 배열의 선언과 생성

int[] scores; //추천
//int scores[]; //지원은 하지만 쓰지 말기

3) 배열 원소의 접근과 배열의 크기

package main;

public class Main {
	public static void main(String[] args) {
		int scores[] = new int[5];
		int sum = 0;

		for (int i = 0; i < scores.length; i++)
			scores[i] = i; 

		for (int i = 0; i < scores.length; i++)
			sum += scores[i];// 0 + 1 + 2 + 3 + 4 = 10

		System.out.println("평균 = " + sum / 5.0);
	}
}
//평균 = 2.0

 

4. 다차원 배열

double[][] interests; 이런식으로 선언

package main;

public class Main {
	public static void main(String[] args) {
		double[][] interests = { { 3.2, 3.1, 3.2, 3.0 }, { 2.9, 2.8, 2.7, 2.6 }, { 2.7, 2.6, 2.5, 2.7 } };
		double[] sum1 = { 0.0, 0.0, 0.0 };
		double sum2 = 0.0;

		for (int i = 0; i < interests.length; i++) {
			for (int j = 0; j < interests[i].length; j++) {
				sum1[i] += interests[i][j];
			}

			System.out.printf("%d차년도 평균 이자율 = %.2f%%\n", i + 1, sum1[i] / 4.0);
			sum2 += sum1[i];
		}
		System.out.printf("3년간 평균 이자율 = %.2f%%\n", sum2 / (3 * 4));
	}
}
//1차년도 평균 이자율 = 3.13%
2차년도 평균 이자율 = 2.75%
3차년도 평균 이자율 = 2.63%
3년간 평균 이자율 = 2.83%

 

5. 동적 배열

c언어는 정적배열은 stack에 올라가고 동적배열만 heap에 저장되는데 자바에서는 정적배열, 동적배열 모두 heap에 저장됩니다. compile time에 이미 크기가 확정되어 있는가 runtime중에 메모리 크기를 조절하느냐는 차이가 있지만 new에 의해 heap에 들어갑니다.

package main;

import java.util.ArrayList;
import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		ArrayList<Integer> scores = new ArrayList<>();
		int data;
		int sum = 0;

		while ((data = in.nextInt()) >= 0)
			scores.add(data);

		for (int i = 0; i < scores.size(); i++)
			sum += scores.get(i);

		System.out.println("평균 = " + (double)sum / scores.size());
	}
}
50
10
0
-1
//평균 = 20.0

 

3. 배열의 응용

5)객체의 배열

객체도 배열의 원소로 사용할 수 있습니다. 객체의 배열은 객체를 참조하는 주소를 원소로 구성하고 있습니다. 참조변수들을 배열로 만든다고 생각합시다.

package main;

class Circle {
	double radius;

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

	public double getRadius() {
		return radius;
	}

	double findArea() {
		return 3.14 * radius * radius;
	}
}

public class Main {
	public static void main(String[] args) {
		Circle[] circles = new Circle[5]; //참조변수 먼저 만들기

		for (int i = 0; i < circles.length; i++) { //값 하나씩 초기화
			circles[i] = new Circle(i + 1.0);
			System.out.printf("원의 넓이(반지름 : %.1f) = %.2f\n", circles[i].radius, circles[i].findArea());
		}
	}
}

//원의 넓이(반지름 : 1.0) = 3.14
원의 넓이(반지름 : 2.0) = 12.56
원의 넓이(반지름 : 3.0) = 28.26
원의 넓이(반지름 : 4.0) = 50.24
원의 넓이(반지름 : 5.0) = 78.50

4. 열거타입

제한된 수의 일이나 사건등에 대하여 숫자로 표현합니다.

 

'대학강의정리 > 24.1 자바' 카테고리의 다른 글

9주차.ch7~ch8  (0) 2024.04.30
ch6. 상속  (0) 2024.04.09
ch3. 제어문과 메서드  (0) 2024.04.09
ch4. 객체지향  (0) 2024.04.09
문자열은 ==로 비교할 수 없다.  (0) 2024.03.23