つ⋅⌄⋅)づ⌁⌁도움⌁⌁⋆
2020.06.30_수업일지 본문
< 예외처리 >
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로 불려진다
-> 이름만 다르고 동일한 값이다.