Notice
Recent Posts
Recent Comments
Link
«   2025/09   »
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
Archives
Today
Total
관리 메뉴

つ⋅⌄⋅)づ⌁⌁도움⌁⌁⋆

2020.06.30_수업일지 본문

카테고리 없음

2020.06.30_수업일지

ㅈㅏ윤이 2020. 6. 30. 18:20

 

< 예외처리 >

int Parse("인자") -> 인자에 int로 바꾸고 싶은것을 넣어서 int형으로 바꿔주는 것

-->> 인자는 스트링인데 반환값은 int형 

 

클래스 이름 : Exception 에러 -> 오류 에러정보를 객체화 시킨다

닷넷 프레임워크에서 Try 문에서 오류가 나면실행 멈추고 Catch 문으로 점프

 

**  Main에서 Exit는 괜찮지만 Exit는 전체 프로그램을 종료시키기 때문에 조심해야한다!!

-> 남겨야하는 코드가 필요하기 때문에 0을 넣어준다

 

에러 발생시 Finally 실행 안된다 ( 생략가능 )

Finally는 Try문이 정상/비정상이든 무조건 실행된다

 

 

 

위치 바꾸면 에러난다 

-> Exception 이 FormatException보다 범위가 좁기 때문에 에러난다

 

 

 

 

 

 

 

 

** 옛날 운영체제

Unix에서 종료할때 텍스트파일로 저장된다 -> Log파일 // 0을 적으면 정상종료 - 0 없으면 비정상종료

Main메소드에 return문에 쓰는 숫자는 정상종료를 나타내는 최소공간 -> 남기고 싶으면 int 싫으면 void사용

 

< 클래스 호출하기 >

Main이 있고 메소드 테스트 -> 메소트 ( ) -> 그상태로 스탑하고 해당 메소드로 점프해서 간다 ( Method call )

-> 수행 끝나면 호출했던 위치로 돌아간다(return문 생략가능) 

1. 여기는 메인메소드입니다.

2. 여기는 메소트테스트입니다

3. 메소트테스트 메소드를 호출하였습니다 --> 순으로 호출된다! 

** 다른 클래스의 메소드 호출

    -> A객체를 호출하고 싶을때

메소드앞(왼쪽) static을 붙이면 메소드를 호출할 수 있다

-> 객체 생성없이 호출이 가능하다! 

원래 객체이름.메소드이름 ( ) 이렇게 호출해야한다

-> static이 있으면 클래스이름.메소드이름 () ; 호출가능

 

 

  

** 메소안에서 메소드 호출

-> 메인안에서 B 호출 -> B안에서 A호출 ( 중첩 메소드 호출 )

 

 

   

 

 

 

** Factorial  

 

 

 

 

 

 

 

 

 

 

 

 -> unIniVar  값을 안넣어줘서 미정값으로 취급 

 

 

 

 

 

 

< 클래스 내부에 있는 Static 변수 >

  

** 지역변수가 아니라서 에러가 안난다

-> 클래스 변수 에러  XXX

클래스 안에 있는 변수는 클래스변수 , 기본 값을 넣지 않으면 0이 들어간다. 

 

** 변수이름에 static 유무의 차이

: 메인안에 e1과 e2는 생성됬을때 객체가 없기 때문에

e1 . 을 찍으면 에러난다

-> e1 = new Example(); Example의 객체가 만들어지고 

e1 값에 Example의 위치가 들어간다 

- 첫번째로 classvari 2가 만들어진다 -> 생성자 호출됨

- classvari1은 객체 소속이 아니여서 객체 전체를 통틀어

-> 객체 존재해야 존재

1개만 생성된다 -> 만들지 않아도 1개가 꼭 만들어진다

=> static 으로 되어있기 때문 ( 클래스소속 ) - 클래스 이름이 있을때부터 존재 / 처음부터 끝까지 존재!

 

스태틱변수 = 클래스변수

 

 

F11 -> 그줄에 실행되는 과정을 보는것 -> 위로 점프한다

 -> 객체 안에만 존재할 수 있는 객체

: 인스턴스 객체 ( 객체 변수 )

 

 

 

 

 

 

 

 

 

 

 

 

 

변수 1. 지역 { } 안에 있을때까지

       2. 클래스  프로그램 끝날때까지

       3. 인스턴스  인스턴스가 살아있을때까지

1. 값 변수      -  값 전달 방식

2. 참소형 변수 -  값 전달 방식  - 주소를 사용

** Main안에서 실행시작 되서 ParamRef 객체 생성 후

-> pr(객체 참조변수 = 지역변수)로 저장

 

 ParamTest.Increase(pr); 객체를 생성하지않았지만 호출 가능한 이유는 static으로 만들었기 때문에 가능하다.

 

Main의 pr, varRef도 전부 ParamRef를 가르키고 있다.

그래서 varRef는 myVal이기때문에 10에 ++해서 11이 된다

-> return되서 다음을 수행한다.

Console.WriteLine("호출 후 : {0}", pr.myVal); 로 리턴되어서 11을 내보낸다.

 

 

 

 

3. 참조 전달 (1번의 참조전달)

-> ParamRef 객체 생성 후 -> pr(객체 참조변수 = 지역변수)로 저장

4. 참조형 변수 - 참조전달 ( 2번의 참조 전달 ) - 주소사용(주소만 저장) / 고정변수

-> 2번보다 메모리 조금 덜 사용해서 더 효율적이다 

  

** pr : 객체 참조변수 

new ( heap 영역 ) > ParamRef안에 myVal (10)을 가진다

pr이 ParamRef를 참조한다 (가르킨다)

 

ParamTest.Increase(ref pr); 

-> pr을 ref(Increase)있는곳으로 전달 

-> varRef = pr 이므로 ++ 이 되서 11이 출력한다

 

객체 만들지않고 

Increase에서 VarRef를 부르면 Main에서는 pr로 불려진다

-> 이름만 다르고 동일한 값이다.