신용권님의 "이것이 자바다" 공부 기록
책을 보면서 내용을 정리했습니다. 이것이 자바다 커뮤니티 : https://cafe.naver.com/thisisjava
package com.kosta.day03;
import java.util.Scanner;
public class Review {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.print("[더 입력할 점수가 없으면 -1을 입력]");
double result = 0;
int count = 0;
while(true) {
System.out.print("점수를 입력하십시오 : ");
double num = sc.nextDouble();
if(num == -1) break;
result += num;
count++;
}
sc.close();
double avg = result / count;
System.out.println("입력된 점수들의 수 : " + count);
System.out.println("점수들의 평균(double value) : " + avg);
System.out.println("점수들의 평균(int value) : " + (int)avg);
}
}
OS에서 할당 받은 메모리 영역(Runtime Data Area)을 세 영역으로 구분
johngrib.github.io/wiki/jvm-stack/
JVM stack과 frame
johngrib.github.io
package com.kosta.day03;
public class 참조연습 {
public static void main(String[] args) {
sample();
}
private static void sample() {
String s1 = "홍길동";
String s2 = "홍길동";
String s3 = new String("홍길동");
String s4 = new String("홍길동");
// s1, s2는 주소가 같음, s3, s4는 주소가 다름
System.out.println(s1 == s2); // true
System.out.println(s3 == s4); // false
System.out.println(System.identityHashCode(s1)); //366712642
System.out.println(System.identityHashCode(s2)); //366712642
System.out.println(System.identityHashCode(s3)); //1829164700
System.out.println(System.identityHashCode(s4)); //2018699554
}
}
private static void sample3() {
// 참조형은 일반적으로 null로 초기화
String s = null;
System.out.println(s);
System.out.println(s.length()); //NullPointerException
}
배열변수.length;
int[] intArray = {10, 20, 30};
int num = intArray.length;
intArray.length = 10; // 잘못된 코드
int[] scores = {83, 90, 87};
int sum = 0;
for(int i = 0; i < scores.length; i++) {
sum += scores[i];
}
System.out.println("총합 : " + sum);
int[][] scores = new int[2][3];
scores.length // 2 (배열 A의 길이)
scores[0].length // 3 (배열 B의 길이)
scores[1].length // 3 (배열 C의 길이)
String[] strArray = new String[3];
strArray[0] = "java";
strArray[1] = "C++";
strArray[2] = "C#";
private static void method4() {
// 배열복사
int[] arr1 = new int[] { 100, 99, 70, 88, 95 };
// 1. for 사용
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
arr1[0] = 200;
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr2));
// 2. System.arraycopy 사용
int[] arr3 = new int[arr1.length];
System.arraycopy(arr1, 0, arr3, 0, arr1.length);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr3));
// 3. Arrays 클래스 사용
int[] arr4 = Arrays.copyOf(arr1, arr1.length);
System.out.println(Arrays.toString(arr1));
System.out.println(Arrays.toString(arr4));
}
int[] scores = {95, 71, 84, 93, 87};
int sum = 0;
for(int score : scores) {
sum = sum + score;
}
public enum 열거타입이름 {...}
public enum Week {MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, ...}
public enum LoginResult {LOGIN_SUCCESS, LOGIN_FAILED}
열거타입 변수;
Week today;
Week reservationDay;
열거타입 변수 = 열거타입.열거상수;
Week today = Week.SUNDAY;
Week birthday = null;
package com.kosta.day03;
import java.util.Scanner;
public class Exercise {
public static void main(String[] args) {
// quiz6();
// quiz7();
// quiz8();
quiz9();
}
private static void quiz9() {
// 키보드로부터 학생 수와 각 학생들의 점수를 입력받아서, 최고 점수 및 평균 점수를 구하
boolean run = true;
int studentNum = 0;
int[] scores = null;
Scanner sc = new Scanner(System.in);
while (run) {
System.out.println("----------------------------------------------");
System.out.println("1.학생수 | 2.점수입력 | 3.점수리스트 | 4.분석 | 5.종료");
System.out.println("----------------------------------------------");
System.out.print("선택> ");
int selectNo = sc.nextInt();
if (selectNo == 1) {
System.out.print("학생수> ");
studentNum = sc.nextInt();
} else if (selectNo == 2) {
scores = new int[studentNum];
for (int i = 0; i < studentNum; i++) {
System.out.print("scores[" + i + "]: ");
scores[i] = sc.nextInt();
}
} else if (selectNo == 3) {
for (int i = 0; i < studentNum; i++) {
System.out.println("scores[" + i + "]:" + scores[i]);
}
} else if (selectNo == 4) {
int sum = 0, count = 0, max = 0;
double avg = 0.0;
for (int i = 0; i < studentNum; i++) {
sum += scores[i];
count++;
if (max < scores[i]) max = scores[i];
}
avg = (double) sum / count;
System.out.println("최고 점수: " + max);
System.out.println("평균 점수: " + avg);
} else if (selectNo == 5) {
run = false;
}
}
sc.close();
System.out.println("프로그램 종료");
}
private static void quiz8() {
// 주어진 배열의 전체 항목의 합과 평균값을 구하라
int[][] array = { { 95, 86 }, { 83, 92, 96 }, { 78, 83, 93, 87, 88 } };
int sum = 0;
double avg = 0.0;
int count = 0;
for (int i = 0; i < array.length; i++) {
for (int j = 0; j < array[i].length; j++) {
sum += array[i][j];
count++;
}
}
avg = (double) sum / count;
System.out.println("sum: " + sum);
System.out.println("avg: " + avg);
}
private static void quiz7() {
// 주어진 배열의 항목에서 최대값을 구하라
int max = 0;
int[] array = { 1, 5, 3, 8, 2 };
for (int i = 0; i < array.length; i++) {
if (array[i] > max)
max = array[i];
}
System.out.println("max : " + max);
}
private static void quiz6() {
// array.length 값과 array[2].length값을 구하라
int[][] array = { { 95, 86 }, { 83, 92, 96 }, { 78, 83, 93, 87, 88 } };
System.out.println(array.length + " " + array[2].length);
}
}