freeseaboy 님의 멋있어 지려 노력하는 블로그
자바 기초(10) 랩퍼?래퍼 랑 예외상황 ㅋ 본문
자 2교시 이번에는 위에 서술했듯이 공부할 예정..
근데 영상 찍다가 시간이 오래 걸려 좀 길어도 이해좀 ㅋㅋㅋㅋ
무튼 재밌게 보고 유익한 영상이었길 바라며 ..
바로 ㄱㄱ
스크립밑
★ ★ ★위 포스팅 내용은 네X버 Blog 아래 링크에도
똑같이 미러링 되어 있습니다.예비 Blg ★ ★ ★
https://blog.naver.com/iwseo7114
package studyJava;
public class studyBoxing {
public static void main(String arg[]) {
exceA recExc = new exceA();
try {
recExc.getA(07);
}catch(Exception e){
System.out.println(e.getMessage());
}finally {
System.out.println("Bank Excep");
}
problemMan A = new problemMan();
try {
A.troubleMake();
}catch(Exception e) {
System.out.println(e.getMessage());
}finally {
System.out.println("RESULT");
}
}
}
class problemMan{
public int[] aint = new int[1];
public void troubleMake() throws customException{
aint[0] = 7;
if(aint.length <= 1) {
//throw new customException("Array Size over");
int errorNum = 0101111;
Integer A = new Integer(errorNum);
throw new customException(A.toString());
}
aint[1] = 77777;
}
}
class customException extends Exception{
public customException(String message) {
super(message);
}
}
class exceA{
public void getA(int num) throws customException {
execB.methodB(num);
}
}
class execB{
static public void methodB(int num) throws customException {
execC A = new execC();
A.methodC(num);
}
}
class execC{
private int money;
public void methodC(int num) throws customException {
money = num;
bank();
}
public void bank() throws customException {
if(money == 0) {
throw new customException("You dont have pay");
}
System.out.printf("Rich man");
}
}
/*
public class studyBoxing {
public static void main(String aaa[]) {
int A = 777;
double B = A;
System.out.println(A+""+B);
Integer god = new Integer(A);
//String C = A;
String C = god.toString();
System.out.println(C);
WrapA testA = new WrapA();
testA.getCheck(god);
WrapB.getObj(god);
}
}
class WrapA{
public Integer A1;
public int iFlag = 0;
public void getCheck(Integer objInt) {
if(null == objInt) {
System.out.println("NULL");
return;
}
else {
System.out.println("NOT NULL");
iFlag = 1;
}
System.out.println(iFlag+" "+objInt.intValue());
}
}
class WrapB{
static public void getObj(Object obj) {
System.out.println(obj.toString());
}
}
*/
######################################################
자 안녕하세요 주말 2교시 자바 시간이에요..
일단 오늘 간단하기 자바책을 보니깐 정말 개념보단 막 쓸데없는
굳이 나중에 실무하면 어차피 구글링하면서 배우면 되는것들이 정말 많아요..
책을 잘못산거 같아요 분량이 많은건 좋은데 정말 쓸데없는걸로 책 두께만 크게 만들어서
시중에 판매하는 악성 저자들이 몇몇있거든요? 그중 한명이 쓴책인데 진짜 짜증나요
중요한 키워드라던가 아니면 정말 필요한 클래스라던가 이런것만 알짜배기로 하면되는데
자기가 개발하면서 불편했던거 그래서 바꿔 사용하는 클래스 이딴것만 설명을해요..
근데 A-ZZZ 까지 사람이 있으면 전부다 세뇌 하듯이 다른사람은 다른거를 좋아할수있잖아?
즉 내말은 좀 화가나는게 어차피 무조건 구 선마이크로 ~ 현 오라클에서
무조건 JAVA개발할때 필수로 배워야 작성할수 있는 키워드가 혹은 기능 이런걸위주로
설명을해야지 함수 메소드 클래스 이런거는 사실 openAPI가면 널렸어요 그리고 거기에
이런거 만들어 놓는 얘들이 천재에요 상위 0.0001에서도 0.00000001 얘들이 만든거가 많은데
굳이 그런거를 벌써부터 쓰라니 마라니 이렇게 명령식으로 글 써재끼는게 정말 재껴지네요 ㅋ
무튼 말이 길어졌고..
오늘 일단
노래듣고 ㅋ
- Wrapper(래퍼)
- 예외처리
솔직히말해서 앞전에 마지막에 인터페이스였죠?
그리고 쪽수로 100~?언저리 정도 뛴 상태에요...정말 쓸데없게 많죠?책에?
그런겁니다
래퍼랑 예외는 알아야되요 이런거는 예외는 키워드고 래퍼를 키워드는 아닌데
키워드 만큼 중요한 내용이에요..그래서 이렇게 하는겁니다...
뭐 printf를 쓰지말고 println을 써라 이딴 강제적 소리하는 저자들 있는데..
그냥 무시하세요..그냥 자기가 쓰기 편한거 쓰면 되고 어차피 나중에 개발할때
1차적으로 아웃풋이 내가 원하는 결과가 나오면 되요 어떤 코드를 쓰던
예시죠
문제가 있어 즉 A를 줄바꿈 된 형태로 5개 출력해야 되는 상황에서
무긍무진한 코딩법이 있어요 어떻게보면 알고리즘
A는
System.out.printf("A\n")
System.out.printf("A\n")
System.out.printf("A\n")
System.out.printf("A\n")
System.out.printf("A\n")
이렇게 할수도 있고
B는
System.out.println("A");
System.out.println("A");
System.out.println("A");
System.out.println("A");
System.out.println("A");
할수 있고
C는
while(1){
if문 조건 주고 5번되면 브레이크 걸고
System.out.println("A");
}
등 이런식으로도 되고 for for each 기타 등등 엄청많아요
결국 여기서 중요한건 A가 출력 5번 되고 각각 줄바꿈 되면 끝이에요...
그렇기에 이것도 다형성이죠??그래서 1차적으로 배울때는
가장 내가 할수 있는 역량으로 이해하고 필수 키워드만 배우세요.
나중에 이제 프로그램이 커지고 어쩌구 저쩌구 복잡성이 증가하고
이럴때 최적화 혹은 코딩할때 편의성 생산성 을 접하게 되는데
그떄 코드를 리펙토링 해서 알고리즘을 용량으로 포커스를 주던 속도로 주던 아니면 클린코드로 주던해서
그떄 튜닝해도 안늦어요 100프로에요 이건 경험입니다..
그니깐 쓸데없다고 느끼는 내용은 그냥 밖에 버리세요
ㅋ
위내용은 걸러 들을라면 듣고 새겨 들을라면 듣고 알아서 하세요..저는
개발자는 아닌데 그래도 개발이랑 서버 엔지니어랑 거의 밥먹듯이관심을 갖고 구축을 하는 닝겐이라서
저만의 노하우를 알려드리는거 ㅋ
래퍼 클래스 = 기본자료형을 -> 객체 자료형으로 바꾼다는 그런거라네요.
즉 포장이라는의미를 갖듯이 포장기능을 하는 클래스 라고 말합니다..
기본 자료형 -> 객체 자료형으로 변환하기 위해 쓰인데요?
근데 뭔 헛소리인지 모르겠죠?
기본자료형 int A 하고 데이터 넣으며 되는데 무슨소린지??
이해안되고있죠?
이게 좀 생소해요 이해하기도 좀 애매해요...저도 아직도완벽히 이해가 안되고있어요..
즉 쉽게 이말이에요.
우리는 int A = 777;
하고 쓰잖아요?? 어디에 값을 넣는용도죠??
근데 이런 기본적인 타입은 참조가 안된다고 해요...
그래서 예를들어 지금 상태서 A.어쩌구 이런게 안되요 왜냐면
저건 그냥 int 정말 기본타입이에요
반대로 우린 알죠?? 클래스를 인스턴스화 해서는 즉(객체로 만든거죠?)이런거는 자주 썻죠?
InstaA iA = new InstaA();
뭐 이런식으로 하고 iA.~~어쩌구 이런거는 객체를 하나 만들고
그안에 포장을까서 자료를 혹은 메소드를 꺼내서 쓰는 용도로 알고있잖아요?
이것처럼 정확히 왜 자료형을 객체로 만들어서 쓰는지는 몰라도 사용형식으로
위와 같아요 즉 int A = 777; 이거를 객체화 하려면
이미 키워드는 아니지만 다 JAVA회사에서 개발한 class를 이용하면 흉내는 낸다고 보시면 됩니다.
Integer ObjInt = new Interger(인자값)으로 기본타입 변수이름을 넣으면 객체화가 된다고 합니다.즉 A 가 들어가겠죠..?
그러면 그거를 객체화 되서 참조를 하면되요
System.out.println(객체화된타입이름 즉 ObjInt.변환할 메소드() ) 이렇게하면 그 메소드로
기본int 타입으로 정의된 값이 변환되서 출력된다고 합니다.
맞나요?
요말입니다...
즉 int를 객체에 쳐넣고 그거를 갖고올때 객체를 참조하고
다양한 형태로 그값을 갖고올수 있다 이게 핵심이에요..
이게 다인거같아요
그리고 가장중요한 두가지
타입캐스팅의 한계 극복
객체로만 받는 API의 사용을 위해
코드 내용처럼 저런거 할려고 만들진 않았어요..
정말 코드가 좁밥같아보여도 개념설명하기엔 딱이니깐
무조건 동영상 보세요...
이말입니다..
이개념만 알면은 더이상 진도 나갈 필요가 없어요 사실...
어차피 그이후는 자신의 두뇌로 알고리즘 싸움이니깐.
진짜 책 꼬라지마 정말 어이가없네요
래퍼 클래스 하는데 예제도
int i = 10;
Integer j = i;
Integer i = new Integer(10);
int j = i;
이렇고 있어요..이해가 이게?래퍼 클래스가 존재하는?
안되죠??근데 책에서 이렇게 설명해요..
이걸 이해하고 래퍼클래스가 왜 있는지
명확하게 정확하게 알아듣는 학생이 몇이나 될까요?
전 이해 저런식으로 코드만 적어놓으면 전혀 이해못해요..
무튼 기능은 상당히 많아요..
우리가 일상생활에서 코딩하는것 외에 예를들면
널값 검사
혹은 컬렉션 기타 메소드 등 다양해요.그럴때 씁니다.
기타 코드 만들어 볼게요
즉 위 내용처럼 저렇게 사용하는 경우가 실무에서는 진짜 많다고 하니
이런게 생길수 밖에 없었던것 같아요..
자 이제는 예외처리
예외키워드는
try catch thorw thorws finally 등이 있어요
기본적으로 한번 꾸며볼게요
try - catch 먼저 해보죠
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 1 out of bounds for length 1
at studyJava/studyJava.problemMan.troubleMake(studyBoxing.java:14)
at studyJava/studyJava.studyBoxing.main(studyBoxing.java:6)
위 오류를 다르게 처리해보시죠.
사용자 정의 예외
그리고 던지는거 까지 할게요.
Throwsable 이놈이 부모에요
그아래에 Error Exception그아래에 쭊쭉 뻗어나감..
근데 우린 예외를 오버라이딩 할거니깐 부모쪽을 건드려야됩니다.
예외를 던진다 잡는다 만든다 이게 좀 해깔려요 사실..
이거를 코드로 좀 보여줄게요..
예외가 쉽다 라는 헛소리 혹은 천재들이 있는데 뭐 난그렇지 않음..
자 이해함 ㅋ
예시를 들게요.좀 응용을 할게요
자 이렇게 던지고 던지고 던지고도 했어요.돌리고 아닙니다 ㅋㅋ
무튼 이렇게 교육을 해서 기분이좋내요..
무튼 까먹지 않게 열심히 지속적으로 공부하세요 ㅋ
오늘의 결과
예외 및 박싱 언박싱(래퍼)
이렇게 자주 쓰이니...
고생했음다 수고링 나 법먹을거임 ㅋ
######################################################
'컴퓨터 & 서버 > Java' 카테고리의 다른 글
자바 기초(12) 이넘!! 이놈!!? (1) | 2024.11.20 |
---|---|
자바 기초(11) 넌 익명?난 안익명?ㅋ (1) | 2024.11.17 |
자바 기초(9) What's up Interface (1) | 2024.11.11 |
자바 기초(8) 최상위 포식자 Obj 넌 누구냐! (4) | 2024.11.09 |
자바 기초(7) 추상스럽다 및 객체비교란?ㅋ (2) | 2024.11.06 |