19.03.27 static

개임개발/과제 2019. 3. 28. 00:00

- static -

 

특정 개체가 아니라 형식 자체에 속하는 정적 멤버를 선언할 수 있다.

static 한정자는 클래스, 필드, 메서드, 속성, 연산자 및 생성자와 함께 사용할 수 있지만,

인덱서, 종료자 또는 클래스 이외의 형식에는 사용할 수 없습니다.

 

- static class -

 

정적 클래스는 기본적으로 비정적 클래스와 동일하지만,
정적 클래스는 인스턴스화할 수 없다는 한 가지 차이점이 있습니다.
즉, new 키워드를 사용하여 클래스 형식의 변수를 만들 수 없습니다.
인스턴스 변수가 없기 때문에 클래스 이름 자체를 사용하여 정적 클래스의 멤버에 액세스합니다.
예를 들어 public static 메서드 MethodA를 포함하는 UtilityClass라는 정적 클래스가 있는 경우 다음 예제와 같이
메서드를 호출합니다.

 

double dub = -3.14;
Console.WriteLine(Math.Abs(dub));
Console.WriteLine(Math.Floor(dub));
Console.WriteLine(Math.Round(Math.Abs(dub)));

// Output:
// 3.14
// -4
// 3

 

 

 

출처

https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/classes-and-structs/static-classes-and-static-class-members

'개임개발 > 과제' 카테고리의 다른 글

19.03.26 상수,열거형식, var 타입 등  (0) 2019.03.27
19.03.26 과제  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
:

19.03.27 반복문 사용 배열 출력 (for,foreach,while)

개임개발/수업내용 2019. 3. 27. 14:42
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace study_05
{
    class Unit
    {
        private string v;
 
        public Unit()
        {
 
            
            
            Unit[] array = new Unit[5];
 
            
 
            int[] arr0 = new int[5]; //000000000,int는 값형식이라 0
            Unit[] units = new Unit[5]; //null, 클래스는 참조형식이라 null
            //배열은 array클래스에서 파생된 형식이고, 참조형식이라 null 이다.
            string[] arrNames = { "홍길동""임꺽정""홍상직" };  //배열의 인스턴스
 
 
         
 
 
            for (int i = 0; i<units.Length; i++)
            {
                Unit unit = units[i];
                Console.WriteLine($"for문에서 나오는값 :{arrNames[i]}");
                Console.WriteLine($"for문에서 나오는값 :{arrNames[i+1]}");
                Console.WriteLine($"for문에서 나오는값 :{arrNames[i+2]}");
                break;
            }
            
            foreach (string Unit in arrNames)
            {
               
                System.Console.WriteLine($"foreach문에서 나오는값 :{arrNames[0]}");
                System.Console.WriteLine($"foreach문에서 나오는값 :{arrNames[1]}");
                System.Console.WriteLine($"foreach문에서 나오는값 :{arrNames[2]}");
                break;
 
            }
            
            while (true)
            {
                Console.WriteLine($"while문에서 나오는값 : {arrNames[0]}");
                Console.WriteLine($"while문에서 나오는값 : {arrNames[1]}");
                Console.WriteLine($"while문에서 나오는값 : {arrNames[2]}");
                break;
            }
 
 
            //배열의 길이 파악할때 사용
 
 
 
        }
 
        public Unit(string v)
        {
            this.v = v;
        }
    }
}
 
cs

 


'개임개발 > 수업내용' 카테고리의 다른 글

0322 프로그래밍  (0) 2019.03.22
:

19.03.26 와우 게임 (아직 다 못함)

카테고리 없음 2019. 3. 27. 09:24
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static study_03.GameEnum;
 
namespace study_03
{
    class App
    {
        //생성자 
        public App()
        {
 
        }
    }
}
cs
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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace study_03
{
    class GameEnum
    {
        //진영
        public enum eCamp
        {
            none = 0,
            Alliance,
            Horde,
            all = ~none
        }
 
        public enum eAllianceTribe
        {
            none = 0,
            human = 1,
            dwarf = 2,
            nightElf = 4,
            gnome = 8,
            draenei = 16,
            worgen = 32,
            tushuiPandaren = 64,
            voidElf = 128,
            lightforgedDraenei = 256,
            darkIronDwarf = 512,
            kulTiran = 1024,
            all = ~none
     
        }
 
        public enum eHordeTribe
        {
            none = 0,
            orc = 1,
            undead = 2,
            tauren = 3,
            troll = 4,
            bloodElf = 5,
            goblin = 6,
            huojinPandaren = 7,
            nightBorne = 8,
            highmountainTauren = 9,
            magharOcr = 10,
            zandlariTroll = 11,
            all = ~none
        }
 
        public enum ejob
        {
            none = 0,
            paladin = 1,
            knight = 2,
            darkKnight = 3,
            hanTer = 4,
            thief = 5,
            monk = 6,
            powwow = 7,
            wizard = 8,
            priests = 9,
            darkWizard = 10,
            druid = 11,
            devilHunter = 12,
            all = ~none
 
        }
    }
}
 
cs
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace study_03
{
    class Program
    {
        static void Main(string[] args)
        {
            var eCamp = Enum.GetValues(typeof(GameEnum.eCamp));
 
            Console.WriteLine($"선택할 진형의 숫자를 입력해주세요 1.얼라이언스 2.호드");
            string eCampinput = Console.ReadLine();
            int eCampselectedNum;                                    // 입력받을 키를 설정함
            var eCampisSuccessedParse = Int32.TryParse(eCampinput, out eCampselectedNum); //Int32.TryParse는 숫자의 문자열 표현을 해당하는 32비트 부호있는 정수로 변환
            var eCampselectedEnum = (GameEnum.eCamp)eCampselectedNum;
 
            var eCampEnum = GameEnum.eCamp.all;
            var isInclude = (eCampselectedEnum & eCampEnum) != GameEnum.eCamp.none;
 
            if (isInclude)
            {
                Console.WriteLine("선택하신 진형 : {0}이 있습니다.", eCampselectedEnum.ToString());
            }
            else
            {
                Console.WriteLine("선택하신 진형 : {0}은 없습니다.", eCampselectedEnum.ToString());
            }
 
            Console.WriteLine("진영이 선택되었습니다.");
 
            var eCampTibes = Enum.GetValues(typeof(GameEnum.eCamp));    //Enum을 사용해서 GameEnum.eAllianceTribe을 Enum.GetValues 배열에 넣고 그 값을 allianceTibes에 저장함
 
 
 
            if (eCampinput == "1")
            {
            Console.WriteLine($"진영의 선택할 종족의 숫자를 입력해주세요 1.사람 2.드워프 3.나이트엘프 4.노움 5.드레이니 6.워젠 7.판다린 8.공허엘프 9.라이트드레이니 10.다크다워프 11. 쿠테란");
 
            string input = Console.ReadLine();
            int selectedNum;                                    // 입력받을 키를 설정함
            var isSuccessedParse = Int32.TryParse(input, out selectedNum); //Int32.TryParse는 숫자의 문자열 표현을 해당하는 32비트 부호있는 정수로 변환
            var selectedEnum = (GameEnum.eAllianceTribe)selectedNum;
 
            var allianceTibesEnum = GameEnum.eAllianceTribe.all;
            var allianceTibesisInclude = (selectedEnum & allianceTibesEnum) != GameEnum.eAllianceTribe.none;
 
            if (isInclude)
            {
                Console.WriteLine("선택하신 종족 : {0}이 있습니다.", selectedEnum.ToString());
            }
            else
            {
                Console.WriteLine("선택하신 종족 : {0}은 없습니다.", selectedEnum.ToString());
            }
 
            }
            else
            {
                {
                    Console.WriteLine($"진영의 선택할 종족의 숫자를 입력해주세요 1.오크, 2.언데드, 3.타렌, 4.트롤, 5.블러드엘프, 6.고블린,7.휴진팔라진, 8.나이트본, 9.하이마운틴타렌, 10.마셜오크, 11.잔다르트롤");
 
                    string eHordeTribeinput = Console.ReadLine();
                    int eHordeTribeselectedNum;                                    // 입력받을 키를 설정함
                    var eHordeTribeisSuccessedParse = Int32.TryParse(eHordeTribeinput, out eHordeTribeselectedNum); //Int32.TryParse는 숫자의 문자열 표현을 해당하는 32비트 부호있는 정수로 변환
                    var eHordeTribeselectedEnum = (GameEnum.eHordeTribe)eHordeTribeselectedNum;
 
                    var eHordeTribeEnum = GameEnum.eHordeTribe.all;
                    var eHordeTribeisInclude = (eHordeTribeselectedEnum & eHordeTribeEnum) != GameEnum.eHordeTribe.none;
 
                    if (isInclude)
                    {
                        Console.WriteLine("선택하신 종족 : {0}이 있습니다.", eHordeTribeselectedEnum.ToString());
                    }
                    else
                    {
                        Console.WriteLine("선택하신 종족 : {0}은 없습니다.", eHordeTribeselectedEnum.ToString());
                    }
 
                }
                
            }
 
 
            Console.WriteLine($"선택할 직업의 숫자를 입력해주세요. 1.팔라딘, 2.나이트, 3.다크나이트, 4.헌터, 5.도적, 6.수도사, 7.기사, 8.위자드, 9.프리스트, 10.다크위자드, 11.드워드, 12.데빌헌터");
             
     
            string ejobinput = Console.ReadLine();
            int ejobselectedNum;                                    // 입력받을 키를 설정함
            var ejobisSuccessedParse = Int32.TryParse(ejobinput, out ejobselectedNum); //Int32.TryParse는 숫자의 문자열 표현을 해당하는 32비트 부호있는 정수로 변환
            var ejobselectedEnum = (GameEnum.ejob)ejobselectedNum;
 
            var ejobEnum = GameEnum.ejob.all;
            var ejobisInclude = (ejobselectedEnum & ejobEnum) != GameEnum.ejob.none;
 
            if (isInclude)
            {
                Console.WriteLine("선택하신 직업 : {0}이 있습니다.", ejobselectedEnum.ToString());
            }
            else
            {
                Console.WriteLine("선택하신 직업 : {0}은 없습니다.", ejobselectedEnum.ToString());
            }
            
 
 
 
 
                    Console.WriteLine("엔터를 누르세요.");
            string nameinput = Console.ReadLine();
            Console.WriteLine($"이름을 입력하세요.{nameinput}");
 
          
 
                                        // 입력받을 키를 설정함
                                             //Int32.TryParse는 숫자의 문자열 표현을 해당하는 32비트 부호있는 정수로 변환
 
 
 
 
 
 
            //var app = new App();
            Console.ReadKey();
        }
    }
}
 
 
cs


:

19.03.26 상수,열거형식, var 타입 등

개임개발/과제 2019. 3. 27. 01:04
 - 상수 (const) -

상수 필드 또는 지역 상수를 선언할 때는 const 키워드를 사용합니다.

상수 필드 및 지역 상수는 변수가 아니며 수정할 수 없습니다.상수는 숫자, 부울 값, 문자열 또는 null 참조일 수 있습니다.

 

public const double X = 1.0, Y = 2.0, Z = 3.0;

 

출처 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/const

 

 

 

 - 열거형식 (enum) -

 enum 형식은 열거자 목록이라고 하는 명명된 상수 집합으로 구성된 고유 형식인 열거형을 선언하는 데 사용됩니다.

대개 네임스페이스의 모든 클래스가 같은 수준으로 열거형에 액세스할 수 있도록 네임스페이스 내에서 직접 열거형을 정의하는 것이 좋습니다.

하지만 특정 클래스나 구조체 내에 열거형이 중첩될 수도 있습니다.기본적으로 첫 번째 열거자 값은 0이며 그 이후의 열거자 값은 순서대로 1씩 증가됩니다.예를 들어 다음 열거형에서 Sat0, Sun1, Mon2등입니다.

 

enum Day {Sat=1, Sun, Mon, Tue, Wed, Thu, Fri};

 

 

출처 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/enum

 

 


- var 타입 -

Visual C# 3.0부터 메서드 범위에서 선언된 변수에 암시적 "형식" var을 사용할 수 있습니다.암시적 형식 지역 변수는 형식을 직접 선언한 것처럼 강력한 형식이지만 컴파일러가 형식을 결정합니다.i의 다음 두 선언은 기능이 동일합니다. 

(즉, 변수앞에 넣으면 자동으로 받는 값에 맞게 타입이 변한다 좋음!!)

 

var i = 10; // Implicitly typed.
int i = 10; // Explicitly typed.

 

출처 https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/keywords/var

 

 

박싱(Boxing) 과 언박싱 (UnBoxing)
형식 변환 (문자를 숫자로, 숫자를 문자로)
산술연산자 (+, -, *, / %)
객체와 개체의 차이 

 

'개임개발 > 과제' 카테고리의 다른 글

19.03.27 static  (0) 2019.03.28
19.03.26 과제  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
:

19.03.26 과제

개임개발/과제 2019. 3. 27. 00:46

2019_03_27_00_18_46

2019_03_27_00_31_49

 

다음 코드를 보고 읽고 쓰세요 (음성파일로 대체 가능) x 20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_03
{
    class Program
    {
        static void Main(string[] args)
        {
            new App();
 
            Console.ReadKey();
        }
    }
}
 
cs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_03
{
    class App
    {
        //생성자 
        public App()
        {
            var character = new Character("홍길동");
            Console.WriteLine("케릭터의 이름 : {0}", character.name);
            character.Move(1.2f, 3.5f);
        }
    }
}
 
cs



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
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Study_03
{
    class Character
    {
        public string name; 
 
        //매개변수 1개 있는 생성자
        public Character(string name)
        {
            this.name = name;
        }
 
        //기능 (이동)
        public void Move(float x, float y)
        {
            Console.WriteLine("{0}이 ({1},{2})로 이동했습니다."this.name, x, y);
 
        }
    }
}
 
cs




'개임개발 > 과제' 카테고리의 다른 글

19.03.27 static  (0) 2019.03.28
19.03.26 상수,열거형식, var 타입 등  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
:

19.03.25 값 복사와 참조 복사

개임개발/과제 2019. 3. 25. 16:31

* 값 복사란? *


다른말로 깊은복사 라고도 한다.

얕은 복사와 달리 객체가 가진 모든 멤버(값 형식이든 참조 형식이든)가 복사되는 것을 말한다.

객체가 참조타입의 멤버를 포함할 경우 참조값의 복사가 아닌 참조된 객체 자체가 복사되는 것을 값 복사라 한다.




* 참조 복사란? *


다른말로 얕은 복사 라고도 한다.

얕은 복사는 객체가 가진 멤버의 값들을 새로운 객체로 복사를 하는데 만일 객체가 참조타입의 멤버를 가지고 있다면

참조값만 복사된다.




* 복사란? *

객체가 복사된다는 것은 기존 객체와 같은 값을 가지는 새로운 객체를 만든다는 것이다.

객체는 멤버(필드)를 가진다멤버는 값 형식일 수도 있고 참조형식일 수도 있다.

객체가 가진 값 형식(Value Type) 과 참조형식(Reference Type) 의 복제 방식에 따라

얕은복사와 깊은 복사로 개념이 나뉜다.

 

 

 

---참조 복사와 값 복사의 차이점---


참조복사는 원본 개체 안의 참조와 복제 안의 참조가 동일한 개체를 가리키기 때문에

원복 개체나 복사 개체 둘중에 하나만 값이 변해도 나머지 하나도 같이 값이 변한다.

값 복사는 참조 복사와는 달리 가리키고 있는 개체의 값이 변해도 서로 영향을 주지 않는다.

 

 

 

 

 


관련 링크

http://egloos.zum.com/itbaby/v/4715037

http://blog.naver.com/PostView.nhn?blogId=adonise007&logNo=220578209008&parentCategoryNo=4&categoryNo=&viewDate=&isShowPopularPosts=true&from=search



'개임개발 > 과제' 카테고리의 다른 글

19.03.26 상수,열거형식, var 타입 등  (0) 2019.03.27
19.03.26 과제  (0) 2019.03.27
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
:

19.03.22 오우거 잡기

개임개발/과제 2019. 3. 24. 21:51
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace study_01
{
class Program
{
static void Main(string[] args)
{
//몬스터의 이름은 오우거 입니다.
//몬스터의 체력은 100입니다
//몬스터는 사남고 무섭습니다.
//용사의 이름은 홍길동 입니다.
//용사의 체력은 80입니다.
//용사의 공격력은 4입니다.
//용사가 몬스터를 공격했습니다.
//몬스터의 체력은 96입니다.(96.44%)
string monster_name = "오우거";
float monster_phy = 100.0F;
string soldier_name = "홍길동";
float soldier_phy = 80.0F;
float soldier_power = 4.0F;
float percentage = 100.0F;
int attack_ = 0;
float phy_attack = monster_phy - soldier_power;
float phy_percentage = (phy_attack / monster_phy) * percentage;
Console.WriteLine("몬스터의 이름은" + monster_name + "입니다.");
Console.WriteLine("몬스터의 체력은" + monster_phy + "/" + monster_phy + "입니다.");
Console.WriteLine("몬스터는 사납고 무섭습니다.");
Console.WriteLine("용사의 이름은" + soldier_name + "입니다.");
Console.WriteLine("용사의 체력은" + soldier_phy + "/" + soldier_phy + "입니다.");
Console.WriteLine("용사의 공격력은" + soldier_power + "입니다.");
Console.WriteLine("용사가 몬스터를 공격했습니다.");
Console.WriteLine("몬스터의 체력은" + phy_attack + "/" + monster_phy + "(" + phy_percentage + "%)입니다.");
char soldier_attack;
Console.WriteLine("추가로 공격을 하시려면 y를 누르세요.");
soldier_attack = (char)Console.Read();
for (int i = 0; i < 25; i++)
{
switch (soldier_attack)
{
case 'y':
for (phy_attack = 92; phy_attack > 0;)
{
Console.WriteLine("용사가 몬스터를 공격했습니다.");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("데미지" + 4 + "!", Console.ForegroundColor);
Console.ResetColor();
Console.WriteLine("몬스터의 체력은" + phy_attack + "/" + monster_phy + "입니다.");
phy_attack -= soldier_power;
while (true) {
Console.WriteLine("공격을 더 하시겠습니까? (Y/N)\t");
ConsoleKeyInfo attack = Console.ReadKey();
if (attack.Key == ConsoleKey.Y)
{
Console.WriteLine("몇 회 공격하시겠습니까?\t");
attack_ = int.Parse(Console.ReadLine());
{
Console.WriteLine("입력된 횟수" + attack_ + "회");
Console.WriteLine("용사가 몬스터를 공격했습니다.");
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("데미지" + 4 + "!", Console.ForegroundColor);
Console.ResetColor();
Console.WriteLine("몬스터의 체력은" + phy_attack + "/" + monster_phy + "입니다.");
phy_attack -= soldier_power * attack_;
}
}
}
while (false)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("몬스터가 사망하였습니다.", Console.ForegroundColor);
Console.ResetColor();
}
}
break;
}
}
}
};
}
------------------------------------------------------아직 다 못했습니다.-------------------------------------------------------------


 

'개임개발 > 과제' 카테고리의 다른 글

19.03.26 과제  (0) 2019.03.27
19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 Stack 과 Heap  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
19.03.22 과제 데이터 타입 예제  (0) 2019.03.22
:

19.03.22 Stack 과 Heap

개임개발/과제 2019. 3. 24. 17:10

Stack 이란?

 

스택은 컴퓨터에서 사용되는 기본 데이터 구조 중 하나로 데이터를 후입선출(LIFO : Last In, First Out, FILO : First In, Last Out) 구조로 유지하는 추상 데이터형(abstract data type)을 말한다.

컴퓨터 공학에서 스택 혹은 LIFO는 추상 데이터형으로, 두 가지 기본 연산인 삽입(push)과 삭제(pop)를 수행하는 순서를 가지는 요소(elements) 집합이다. 삽입 연산은 데이터 요소를 스택의 최상위(top)에 추가하고 기존의 요소들은 그 아래에 두는 연산이다. 삭제 연산은 스택의 현재 최상위 요소를 제거하고 이를 반환하는 연산이다. LIFO라는 용어는 이러한 연산들로 인한 스택의 특성으로부터 기인한 것으로, 스택에서는 각 요소가 삽입 연산의 순서와 반대로 가장 먼저 삽입되어 스택에 들어간 요소가 가장 최후에 삭제된다는 특성을 나타낸다. 스택은 선형 자료구조로 구조의 한쪽 끝(top)에서만 삽입과 삭제 연산이 일어나는 제한된 데이터 구조이다.

 

 

Stack 포스팅

https://docs.microsoft.com/ko-kr/dotnet/api/system.collections.stack?view=netframework-4.7.2

https://terms.naver.com/entry.nhn?docId=2837556&cid=40942&categoryId=32841

 

 

 

 

Heap란?

Heap (힙) 영역은 참조 형식의 변수 할당 이다.

힙 영역은 스택에 반대되는 개념의 메모리라고 볼 수 있다. 힙에는 new를 이용하여 생성된
메모리가 복사된다. 즉, 메소드 내에서 선언된 변수는 스택에, new를 이용한 메모리는
힙에 복사되는 것이다. 
어떠한 객체 생성을 통해 값을 설정하면, 스택에는 이에 대한 메모리 주소가 생겨난다.
힙에는 이에 따른 실질적인 값이 들어간다.

힙 메모리에서 중요한 점은 다음과 같다.
1. 스택에는 메모리 주소가, 힙에는 실질적인 값이 복사된다.
2. 새로운 객체 변수에 기존의 변수를 할당하면 스택의 메모리 주소만 복사된다.
3. 값을 변경하면 메모리를 참조하고 있는 모든 변수의 값은 동일해진다.


Heap 포스팅

https://blog.naver.com/ever_green23/221003845504

 

'개임개발 > 과제' 카테고리의 다른 글

19.03.25 값 복사와 참조 복사  (0) 2019.03.25
19.03.22 오우거 잡기  (0) 2019.03.24
19.03.22 문자열 표현식 예제  (0) 2019.03.22
19.03.22 과제 데이터 타입 예제  (0) 2019.03.22
19.03.22 과제 for문  (0) 2019.03.22
: