본문 바로가기
Java/study

참조 변수, 배열 (04/05)

by avvin 2019. 4. 5.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
import java.util.Scanner;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
 
public class Hello 
{
    public static void main(String [] args) //다시
    {    
        int go = 1;
        while(go==1
        {
            int inputNum = (int)(Math.random()*6+1;
            System.out.println(inputNum);
            if(inputNum==6)
            {
                System.out.println("반복을 종료합니다.");
                go = 0;
            }
        }    
        
        String inputString = "비교하기"
        
        if(inputString.equals("비교하기"))
        {
            System.out.println(".equals(\" \") 메서드로 문자열 비교 완료");
        } 
        
        if(inputString == "비교하기")
        {
            System.out.println("논리연산자로 문자열 비교 완료");
        }
        
        int[] intArray; // 기본값은0 null값으로, stack메모리만 할당된다.
        //intArray[0] = 1; // 참조 변수는 초기화해야 객체가 생성된다. 변수 선언 = stack영역 메모리만 할당, 초기화 = heap영역에 객체 생성
        
        //참조변수를 선언하고 초기화 없이 메서드에 접근하려고하면(변수를 사용하려고 하면)  NullPointException 발생
        
        String str;
        str = "초기화"// 여기서 str의 객체 생성
        
        String name1 = "문자열 리터럴로 변수에 문자열 저장";
        String name2 = new String("new를 사용하여 직접 String 객체 생성");
        
        //★★★★★
        //동일한 문자열 리터럴로 String 객체 생성할 경우, 다른 두 변수가 같은 객체를 가리키므로 
        // 두 변수를 ==연산자를 통해 비교하면 true값이 나오나,
        //new를 이용하여 직접 String 객체를 생성할 경우엔 동일한 문자열을 저장해도 각각의 독립된 객체에 문자열이 저장되므로
        // 두 객체 변수를 ==연산자를 통해 비교할시 false값을 반환한다.
        //String 클래스의 equals(" " or 문자열변수) 메서드는 이러한 각각의 객체에 저장된 문자열끼리 같은지 아닌지를 비교할 때 사용된다.
        
        
        //배열
        String[] names = {"아빈""아란""희제"}; // 배열 선언과 동시에 원소 초기화
        
        String[] names2;
        //names2 = {"아빈", "아란", "희제"}; 배열 선언 따로, 원소 초기화 따로는 안된다.
        //선언한 뒤에 따로 초기화하려면
        names2 = new String[] {"아빈""아란""희제" };
        //new 데이터타입[] {}를 통해 객체를 생성해주어야한다.
        //배열 아닌 경우엔  선언 따로, 문자열 리터럴로 초기화 따로하는 것이 가능한데 왜 배열에선 안될까
        
        //String[] names = {" ", " ", " "}는 문자열 리터럴을 통해 "배열"객체가 생성됨
        //일단은 그냥 문법으로 받아들이기
        
        //new로 배열 객체를 생성하면 자동으로 기본값 초기화된다.
        int[] scores = new int[30]; //값형식인 int의 기본값인 0으로 초기화된다.
        String[] strings = new String[10]; // 참조형식인 String의 기본값인 null로 초기화된다.
        
        
        // 정수 30개가 들어갈 정수 배열을 메모리에 할당하고, 루프를 통해 각 배열에 0~100까지의 난수를 대입한 후 평균을 구해본다.
        
        int[] scores2 = new int[30];
        int sum =0;
        
        for (int i =0; i < scores2.length; i++//length는 읽기전용 필드
        {
            scores2[i] = (int)(Math.random()*101+1// '수'와 관련된건 먼저 Math로 접근해보기
                    //1에서 100까지니까 101가지 경우의 수
            sum += scores2[i];
            if (i != scores2.length-1)
            {
                System.out.printf(scores2[i]+ "+");
            }
            else 
            {
                System.out.println(scores2[i]+ "=" + sum );
            }
        }
        
        int scoreAverage = sum / scores2.length;
        
        System.out.println("점수 평균 = "+ sum + "/" + scores2.length + "=" + scoreAverage);
 
        
//실행 결과        
//        70+10+19+26+89+32+7+35+40+41+53+6+81+10+26+75+34+92+52+35+90+20+49+41+23+54+68+36+94+88=1396
//        점수 평균 = 1396/30=46
    
    }
        
}
 
cs


'Java > study' 카테고리의 다른 글

가변인자  (0) 2019.04.09
클래스 상속  (0) 2019.04.09
static / Singleton / final /상수  (0) 2019.04.08
공부해야할 내용들  (0) 2019.04.05
난수 표현  (0) 2019.04.05