안드로이드 앱 프로그래밍

저자
정재곤 지음
출판사
이지스퍼블리싱 | 2011-12-19 출간
카테고리
컴퓨터/IT
책소개
『안드로이드 앱 프로그래밍』은 진저브레드와 허니콤, 그리고 한 ...
가격비교 글쓴이 평점  

이번에 안드로이드 개발하면서 독학으로 공부해보고자 책을 보게되었는데 이해하기가 힘드네요..

저는 자바를 꽤 능숙하게 다룰줄 알고, 컴퓨터공학 대학원생입니다.


아이스크림 샌드위치 적용되었다고해서 코드를 그대로 치면서 해보고 있었는데

deprecated (더이상 지원하지 않는) 메소드들이 꽤 있습니다.

일단 이 부분에서 별점이 내려가고,

오타가 상당히 많습니다. 따라서 책만 봐서는 제대로 이해가 될리 없구요

저자 홈페이지 가서 소스코드를 보면서 이해를 하셔야합니다.

정오표가 있지만, 정오표를 일일이 보면서 책 읽는 것도 쉽지 않겠죠.


또한, 내용부분에 

예제 코드 설명이 핵심적인 부분이 제대로 설명되지 않아서 

예제 코드를 보면서 이부분이 이런 역할을 하는거구나 라며 제가 스스로 찾아서 이해를 하곤했습니다.

이책으로 공부하기에는 너무 비효율적이라 추천하지 않습니다.


코딩을 하는 순서또한 뒤죽박죽입니다.

코드를 순서대로 해놓지 않아서 이해하는데 시간이 걸립니다.


또한 코드 설명시, 

핵심 소스코드만 골라서 보여주지만, 설명이 매우 부족합니다.

글이 있긴 하지만 장황할뿐 딱히 핵심적인 내용을 보여주지 못하네요.


평점이 높아서 구매했지만, 추천하지 않습니다.


보다가 책 덮고 안드로이드 개발자 홈페이지의 튜토리얼을 보면서 하는게 훨씬 빠를거같습니다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[삼겹살]
  • 규격돈
    • 육질등급: 1+,1, 2
    • 규격등급: A, B, C
    • 80kg~98kg 에서 나오는 삼겹살
    • 75~78kg 규격돈에서 나오는 삼겹살의 양: 8.5kg

  • 초저가 대패 삼겹살의 꼼수
    • 국내산을 대패삼겹살로 하는것은 고기에 문제가 있다는 뜻이다.
      → 원래 국내산은 생으로 팔았을 때 더 비싸게팔 수 있지만, 대패는 냉동임

    • 국내산 암퇘지를 정말로 2000원대로 팔 수 있을까?
      • 1등급 국내산 암퇘지 1A의 원가는 100g에 1700원

    • 초저가 삼겹살은 "모돈"(어미돼지) 을 사용. 모돈은
      • 살보다 지방이 많음 → 지방과 살의 비율이 거의 1:1
      • 삼겹살 부위지만 2겹
      • 키운 개월수가 많고 새끼를 낳아서 육질이 규격돈 보다 많이 질김. 너무 질겨서 일반 삼겹으로는 먹기 힘듬
      • 냄새가 많이 남
      • 무게는 200~300kg정도 나감 (일반 돼지의 2~3배)
      • 모돈은 등급을 결정하지 않음 (등외 등급)
      • 보통은 육가공품으로 사용
      • 원가는 100g에 650원

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[곱창, 양, 대창]
  • 곱창: 곱창 안에 '곱'이라는게 맛있고 몸에도 좋다.
  • : 소의 위. 기름기가 없고, 단백질이 풍부하며, 비타민과 미네랄이 풍부하여 몸에 좋음.
    • 소 한마리에서 2~3인분 밖에 나오지 않음
  • 대창: 음식점에서 파는 대창은 '기름 대창'이라는 것, 원래 바깥에 이름이 붙어있지만, 음식점에서는 대창을 뒤집는다.
    • 이 기름은 포화 지방으로, 몸에 좋지 않다. 
    • 내장 지방으로 일반적인 고기의 지방보다도 포화도가 높다. 
    • 다른 돼지, 닭, 오리의 기름과 비교해도 포화도가 월등히 높다. 몸에 안좋다!
    • 술과 같이 먹는 열량은 보통 몸에 저장된다.
    • 200g 대창을 구우니 42g의 고기만 남음
    • 가격: 소 고기 부위중에 가장 싼 부위. 600g에 5천원 정도. 하지만 음식점에서는 200g에 17,000~27,000원에 판매
      • 고급음식점에서는 참숯(백탄)이나 인테리어, 밑반찬을 좋게해서 가격을 높게 받는다.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[편의점 음식]
  • 삼각김밥: 묵은쌀을 새쌀처럼 보이게 하기 위해서 밥에만 15~20개의 첨가물이 들어감. 도시락 하나에 20개 정도의 첨가물이 들어감.
    • 편의점 밥에 뜨거운 물(혹은 녹차)를 넣으면 기름이 뜨게 됨
    • 편의점 삼각김밥 도시락을 사료로 먹인 후쿠오카 양돈농가 임신한 돼지 250마리 사산
  • 사례
    • 편의점 상품 개발팀 직원이 28일만에 건강이 나빠져 그만두고 5년 째 자취를 감춤
  • 첨가물
    • 값이 싸진다
    • 편안하게 먹을 수 있다
    • 보존성을 높일 수 있다
    • 보기에 매우 이쁘다.
    • 맛을 진하고 맛있게 한다.
  • 육가공품
    • 장기 및 먹을 수 있는 부분, 폐, 비장, 위, 장, 식도, 뇌 등이 육가공품으로 쓰임

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 산삼

2012.06.13 22:04 from 예전글들

[산삼]E02
  • 음식점에 들어가는 산양삼 3~4년산 가격: 개당 800원
  • 산양삼은 10년이 되어야 약효가 있음 (한의사)
  • 약효는 도라지 수준의 3~4년 산양삼.
  • 모든 삼은 5년근 이상만 판매함
  • 삼의 맛
    • 삼은 한의사들이 분류할 때 단맛에 속하는 맛. 
    • 산양삼이나 산삼은 맑은 맛이다.
    • 사포닌이 많을수록 쓰지 않다.
  • 인삼
    • 농가에서 재배한 것
    • 인삼은 뿌리가 굵음
  • 산양삼
    • 자연상태에 씨를 심어서 재배 한 것
    • 잔뿌리가 매우 얇음
    • 10년근이 되어도 크기가 크지 않음.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[매운 음식]
  • TV에서 매운 음식이 자주 등장 하는 이유
    • 그냥 맛있다거나 좋다는건 표현이 잘 안되지만, 맵고 짜고 신 음식들은 격렬한 반응을 쉽게 화면에 따올 수 있기 때문
    • 매운 맛은 통증
    • 고춧가루는 매우 비싸므로, 수입고추와 캡사이신 농축액을 사용 함 (청양고추의 1/30 가격인 캡사이신 농축액)
      • 캡사이신에 들어있는 합성 보존료와 유화제
    • 캡사이신이 50ppm 이면 맵다고 느낄 수 있음 
    • 100ppm이면 매우 매운맛임
    • 매운 돈까스의 1인분은 청양고추 80개의 캡사이신 양
  • 매운 음식을 먹은 후 
    • 점막이 붉게 변하는 현상 관찰
    • 위 점막에 급성 위염 소견 관찰
    • 나트륨 수치가 급증 → 매운 맛만 들어가면 아프기만 함. 아픈 것을 줄여주기 위해서 단맛을 넣게 됨. 단맛만 넣게 되면 빈듯하므로 짠맛을 넣음. 이렇게 세가지 맛이 부딪히므로 넣는게 화학조미료.
    • 동물 실험의 경우, 과량으로 들어오면 암을 일으킬 수 있다.
    • 쥐 실험에서 체중 1kg 당 50mg 정도가 치사량.
  • 매운음식점 폐해
    • 아무리 신선한 재료를 쓰고 아무리 솜씨있게 볶아내고 국물을 깊이 있게 우려낸다고 한들 사람들은 맵다는 것 밖에 기억을 못함
    • 음식의 맛이라기보다는 재미를 보러 오는 곳. 
    • 맛있고 좋은 음식을 먹으러 오는 개념은 아님
    • 맛을 찾으러 오는 식당은 아니고, 호되게 아파 보고 싶은 경우 권할만한 곳.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[도토리묵]
  • 전통방식으로 만들면 사람 손이 많이 가는 음식
  • 요즘 방식: 도토리 분말(섬유질은 다 빼고 전분만 있는 것)로 도토리 묵을 만듬
  • 문제:
    • 도토리 속의 아콘산이 폐수 속의 중금속을 떨어뜨리는 효과는 있지만, 먹었을 때 몸안에 있는 중금속을 배출시키는 효과에 대한 연구는 없음
    • 도토리 가루를 가는 기계를 오래 쓰다보면 쇳가루가 같이 포함되는 경우가 생김
    • 5개 제품 중 3개 제품에서 식약청 기준을 넘김
    • 국내산 도토리 생산량이 매우 적어서 중국산이나 북한산을 해서 씀
    • 국내산을 쓴다는건 거의 극소수. 보통 음식점은 국내산이 아님

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[학교 앞 먹거리]
  • 그린 푸드 존(Green Food zone): 학교와 학교 주변 200m안에는 어린이 건강을 해치는 건강저해식품과 불량식품 등의 판매를 금지하는 제도
    • 하지만 학교 앞 먹거리들 단속이 안되는 경우가 많음
    • 학원가 주변에는 그린 푸드존이 포함되지 않음 (관련 법안 국회 계류 중)

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

[수험생 보양식 물범탕]
  • 물범탕: 대치동 보양식?
    • 건강원이 주장 하는 내용: 물범탕은 칼슘이 많아서 머리에 좋다. 뇌에 좋다고 주장. 키도 크게 한다고 주장
    • 이십전 대보탕 + 물범 + 철갑상어, 미꾸라지 + 효소,엿 → 4~5일 다리면 됨. 4달치가 200만원
  • 실제 한방에서는
    • 물개는 성질이 뜨거워서, 성장기일 때나 음기가 부족한 사람은 먹지 못하게 금기사항으로 되어있음
    • 물범, 철갑상어, 미꾸라지를 같이 먹으면 열량이 지나치게 높음
    • 물범탕에 설탕을 너무 많이 넣음
    • 칼슘이 풍부해서 머리가 좋아진다는 건 아님
    • 1% 정도의 칼슘이 신경 전달하는 기능을 하지만, 칼슘을 많이 먹는다고 머리가 좋아지는 건 아님
    • 물범에 소고기보다 200배 많다는 주장 → 물범 고기에 함유된 칼슘 함량은 많지 않다. 100g당 4~10mg 정도. 
    • 물범에 오메가3가 많다는 주장 → 멸치나 정어리는 100g당 1g의 오메가 3함유. 물범은 100g당 0.5~1g 함유. 특별히 많이 함유되어있지는 않음.
    • 오메가3는 먹이 사슬 단계에서 낮은 작은 물고기에서 추출한 오메가 3를 좋게 봄
      • 높은 단계인 연어, 물범으로부터 추출한 오메가3에는 중금속이나 다이옥신, PCB등이 축적되어 있으므로 좋지 않음
    • 물범 가격은 10kg에 15만원. 물범탕은 200만원.

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 카레

2012.06.13 22:02 from 예전글들

[카레]
  • 카레에 있는 강황의 커큐민이 뇌세포 활동에 좋음.
    • 미국의 치매 발병률이 인도보다 6배가 높음. 하지만, 사람에게 투여한 커큐민의 효능이 입증되지 않음.
    • 커큐민은 단기간 소량 섭취로는 별 효과가 없을 것으로 보임. 하지만 인도처럼 어릴때부터 평생 먹는다면 좋은 효과를 얻을 수 있다고 추측됨
  • 인도카레는 강황이 1인분에 5g
    • 한국식 카레는 강황과 밀가루를 섞어서 사용. 실제 강황의 양이 매우 적음. 인도카레 1인분의 강황을 섭취하려면 우리나라 카레 6인분을 섭취해야 함

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 장어

2012.06.13 22:02 from 예전글들

[장어]
  • 무한리필 음식점의장어는 민물장어, 갯장어가 아님
    • 민물장어(뱀장어): (비쌈) 민물과 바다를 오가는 장어. 구하기 힘들어 대부분 양식. 지방이 많아 부드러움. (귀한음식)
    • 갯장어: (비쌈) 바다장어. 개의 이빨을 닮아서 갯장어라고 부름. 양식이 존재하지 않음
    • 붕장어: (싼 장어) 바다장어. '아나고'라고 하며 사계절 잡을 수 있음. 양식이 없음. 구이용 보다는 탕이나 회로 많이 먹음. 육질이 단단해 씹을수록 고소함. → 자연산 민물장어처럼 자연산 장어로 불리는 꼼수로 쓰임
      • 양념을 권하면 냉동 장어를 쓴다는 것임. 수족관 관리를 안해도되고, 장어를 잡을 필요도 없음
  • 무한리필 장어는 '붕장어'임
  • 장어
    • 1kg에 3~4마리가 가장 맛있는 크기
    • '풍천' 장어라 함은 특정 지역을 말하는게 아닌 강과 하구가 만나는 곳이라는 뜻임.
    • 자연산은 10년이 커야 1kg에 3~4마리가 됨
  • 민물장어(뱀장어) 양식의 문제점
    • 자연산 민물장어가 거의 사라져서 양식밖에 먹을 수 없음
    • 소화제, 영양제, 항생제를 투여
    • 양식은 6개월에 1kg에 3~4마리가 되어야 함
    • 갯벌장어
      • 양식장에서 1년동안 키운 장어들을 갯벌에 75일 동안 풀어놓아 그동안은 사료와 약품을 먹이지 않음
      • 양식장어를 자연산 장어로 속여서 팔기도 함
  • 자연산 장어
    • 전라북도 고창의 해리천
    • 돌무덤으로 전통방식으로 잡고 있음
    • 특징: 옆구리가 노르스름하고 배는 하얌. 양식은 노르스름한게 없음.
  • 장어의 지방은 불포화 지방산으로 성인병 예방에 탁월하지만, 오래된 장어 지방은 문제가 될 수 있다. 

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 숯

2012.06.13 22:01 from 예전글들

[숯]
  • 굽는 방식에 따라
    • 백탄: 옅은 회색 빛 
      • 반들반들하고 흰색을 띔
      • 불이 강함
      • 재가 될 때까지 사용할 수 있음
      • 1주일 동안 1000도 이상에서 구워지는 숯
      • 구이용에 적합
      • 숯 자체에 불순물이 거의 없음
      • 원적외선이 많이 나옴. 고기의 겉과 속이 동시에 익게 됨
      • 탄소밀도가 높아 전류가 잘 통함
    • 검탄
      • 600도 이상에서 구워지는 숯
      • 전기가 잘 통하지 않음
      • 검고 윤기가 없음
    • 성형탄
      • 보통 음식점에서는 발암물질이 가득한 성형탄을 사용
      • 폐자재로 성형탄을 만듬
      • 유해 성분이 가득함.
      • 수입수출 제한도 없고 검사도 안함
      • 숯불구이용으로 사용함.
      • 포름알데히드, 벤젠 등이 기준치보다 많이 검출됨
      • 화로에 한번 열을 가한 후에 사용하면 유해성분이 연기로 사라짐
  • 강도가 단단하고 오래가므로 참나무 사용
  • 충북 진천군: 국내 참나무 참숯 80% 생산

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

미각스캔들 - 두유

2012.06.13 22:01 from 예전글들

[두유]
  • 어릴 때 두유를 많이 먹으면 불임의 위험이 높음
  • 콩에 많이 들어있는 이소플라본 성분은 여성 호르몬인 에스트로겐과 유사하여 피토 에스트로겐(식물성 에스트로겐)이라고도 함
  • 이소플라본의 문제
    • 집중력 결핍 장애, 주의력 결핍과잉행동장애, 학습장애 증가
    • 고농도의 망간은 뇌손상, 학습장애, 집중력 결핍장애, 주의력 결핍과잉행동장애, 폭력성 유발, 암과 갑상선에도 영향
    • 성장기 아이기에는 피하는것이 좋다. 성조숙증 유발 함.
    • 아이뿐만 아니라 성인들도 두유를 추천하지 않음.
  • 분리 대두 단백
    • 콩에서 단백질 성분만 정제 건조시켜 만든 제품
    • 분리 대두 단백을 제조하는 과정에서 콩에 함유되어있는 플루오르화합물이 가공과정 중에 그 양이 늘어나며, 이는 어린이의 신경질환이나 골다공증에 영향을 줄 수 있다.
  • 두유의 단맛
    • 두유에 들어가는 액상과당은 설탕의 6배의 당도를 가지고 있음
    • 과당은 인슐린이나 랙틴같은 호르몬을 자극하지 않으므로, 우리 몸에서 원하는 수준보다 훨씬 많은 양을 섭취할수있게 하고, 식욕 조절 시스템을 교란하여 비만이 될 수 있다.
  • 일본은 세가지로 나눠서 판매, 한국에는 "가공 두유"만 판매
    • 무조정 두유; 그대로의 두유
    • 조정 두유: 비린 맛을 없애기 위한 설탕이나 소금을 조금 더한 정도의 두유
    • 가공 두유: 첨가물 등이 들어가는 두유
  • 일본의 이소플라본 1일 권장 섭취량: 100mg. 우리나라에서는 법으로 지정한 성분 외에 추가적으로 업체에서 성분표기하는것이 금지되어 있으므로, 이소플라본 함유를 표시하지 않고 있음

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요


apt-get을 이용한 설치

$ sudo add-apt-repository "deb http://archive.canonical.com/ lucid partner"

$ sudo apt-get update

$ sudo apt-get install sun-java6-jdk


위와같이 설치가 안되는 경우 아래와 같이 설치한다.


수동으로 설치하는 방법


  1. http://java.oracle.com/ 에서 자바를 다운받음.
    → 단, 우분투는 데비안 계열이므로, RPM을 받지 않고, .bin 파일을 받아야 합니다.
  2. 권한 설정
    $ chmod +x jdk-6u32-linux-x64.bin
  3. /usr/local에 bin 파일 복사 및 압축 풀기
    $ sudo ./jdk-6u32-linux-x64.bin
  4. /usr/local/jdk1.6.0_32 에 압축이 풀림
  5. $ sudo update-alternates --install "/usr/bin/java" "java" "/usr/local/jdk1.6.0_32/jre/bin/java" 1
  6. $ sudo update-alternates --config java
  7. 설치된 자바 버전 확인
    $ java -version
    java version "1.6.0_32"
    Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
    Java HotSpot(TM) 64-Bit Server VM (build 20.7-b02, mixed mode)




퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요

자바 (Java) 문법

2012.06.05 11:43 from 예전글들



주석

  • // 한줄 주석
  • /* 여러줄
      주석 */
  • /** Java Doc 주석 */



식별자

  • 숫자로 시작하지 않고, 스페이스를 포함하지 않는 글자, 숫자, 밑줄(_), 달러($)
  • 대소문자 구분
  • 클래스 이름: 대문자로 시작, 뒤는 소문자 예) SampleClassName
  • 변수, 함수 이름: 소문자로 시작 예) foo



문자 포맷팅

Escape character\n: 다음 줄의 처음으로 이동합니다.
\t: 탭
\r: 현재 줄의 처음으로 이동합니다.
\\: 백슬러시(\)를 출력할 때 사용
\": 큰 따옴표(")를 출력할 때 사용
Formatting specifier%s: 문자열
%f: float, double 값 표현
%.2f: 소수점 2째 자리까지 표현

%d: 정수






연산자

연산자 종류

  • 단항 후위 연산자: a++, a--
  • 단항 연산자: ++a, --a, +a, -a, (타입)
  • 산술 연산자
    • 곱셈(*), 나눗셈(/), 나머지(%)
    • 덧셈 또는 문자열 연결(+), 뺄셈(-)
  • 비교연산자
    • >, <, >=, <=
    • ==, !=
  • 타입 연산자: instanceof 예) 객체의 클래스 타입이 맞는지 반환. 객체 instanceof 클래스이름
  • 조건 연산자: ?:
  • 대입 연산자: =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=
  • 논리 연산자: &&, ||, !
  • 비트 연산자
    • 왼쪽 시프트(<<), 오른쪽 시프트(>>), 부호 없는 오른쪽 시프트(>>>)
    • &, |, ^, ~


연산자 우선순위

위에서 아래로 내려갈수록 우선순위가 낮아집니다.
  • a++, a--
  • ++a, --a, +a, -a, NOT(!), complement(~), (타입)
  • *, /, %
  • 덧셈 또는 문자열 연결(+), 뺄셈(-)
  • <<, >>, >>>
  • <, <=, >, >=, instanceof
  • ==, !=
  • &
  • ^
  • |
  • &&
  • ||
  • ?:
  • =, +=, -=, *=, /=, %=, &=, ^=, |=, <<=, >>=, >>>=


타입

  • primitive type → java.lang에 있는 Wrapper class
    • boolean → Boolean
    • byte → Byte
    • char → Character
    • short → Short
    • int → Integer
    • long → Long
    • float → Float
    • double → Double

배열

  • 배열 선언
    • int c[] = new int[12];
    • int[] c = new int[12];
    • int[] array1, array2; // 둘다 배열로 선언
    • int c[][] = new int[2][2];
    • int b[][];
      b = new int[2][];
      b[0] = new int[5]; // 첫 행에 5개의 열
      b[1] = new int[3]; // 첫 행에 3개의 열
  • 값 지정
    • int n[] = {1,2,3,4};
    • int n[][] = {{1,2}, {3,4}};
  • 접근
    • myArray[2] = var;


제어문

조건문

if

if(조건문) { ... } else { ... }

?:

System.out.println(studentGrade >= 60 ? "Passed" : "Failed");

switch

switch(타입이 int 또는 enum 변수명)
{
  case1:
 <statements>
 break;
  case2:
 <statements>
 break;
  ...
  default:
 <statements>
 break;
}


반복문

while

while( 조건문 ) { ... }

do ~ while

do { …  } while( 조건문 );

for

for(int i=1; i<10; i++) { ... }

enhanced for

배열이나 Collection을 순회할 때 인덱스 없이 반복할 수 있습니다. 단, 각 배열 값을 for문에서 아래 코드의 number로 수정할 수 없습니다. array[0] = 1; 과 같이 배열에 직접 접근해서 수정해야 함.
int array[] = { 87, 68, 94, 100, 83 };
int total = 0;
for(int number : array) {
  total += number;
}



레이블

switch, while, do/while, for, for/in 문장에 레이블을 붙일 수 있습니다.
parser:
while(token != null) { ... }



continue

현재 반복문을 탈출합니다.
  • continue;
  • continue 레이블이름;

예) 0,1,2,4만 순회
for(int i=0; i<5; i++) {
  if( i==3 ) continue;
}



break

switch, for, while 문으로부터 탈출합니다. 레이블 이름을 붙이는 경우, 해당 루프를 탈출합니다.
for(int i=0; i<5; i++) {
  if( i==3 ) break;
  System.out.println(i);
}




예외처리

try

try {

  <statements>

} catch (<예외 클래스> e) {

  <try {...} 내부에서 예외가 발생하면 실행될 코드>

} catch (<예외 클래스> e) {

  <try {...} 내부에서 예외가 발생하면 실행될 코드>

} finally {

  <try나 catch가 실행된 후 반드시 실행될 코드>

}


  • try: try 문 실행 도중 예외가 발생하면 나머지 코드는 무시하고 현재 발생한 예외를 처리 할 수 있는 catch 문으로 이동합니다.

  • catch: 예외가 발생하는 경우, catch에서는 현재 발생한 예외와 일치하는 가장 첫 catch 블록만을 실행합니다.

  • finally: System.exit(); 메소드를 사용하는 경우를 제외하고는 try { ... } catch { ... } 가 실행된 후에 continue, return, break 문이 실행 되어도 반드시 finally 문이 실행됩니다.

  • 예외를 전부 처리할 수 없는 경우: 발생한 예외를 전부 처리할 수 없는 경우, 일부만 처리하고 나머지는 호출한 메소드에서 처리하도록 다시 throw로 예외를 던질 수 있습니다.
    try { ... } catch (Exception e) {
      // <예외중 일부만 처리>
      
    throw e;  또는 throw new Exception();
    }

throw

예외를 발생시킵니다.

throw new Exception();



예외의 종류

  • checked exception: 반드시 try로 예외 처리를 하거나 메소드 선언시 throws로 예외가 발생함을 명시적으로 나타내야 하는 예외

  • unchecked exception: try나 throws로 예외를 처리하지 않아도 되는 예외



예외의 상속 구조

  • Throwable(checked exception):
    모든 예외의 슈퍼클래스. 예외 핸들링은 Throwable 객체만 사용할 수 있습니다.

    • Exception(checked exception):
      자바 프로그램에서 발생하는 예외상황을 나타냅니다. 어플리케이션에서 잡아서 처리합니다.

      • RuntimeException(unchecked exception)
        어플리케이션에서 처리하지 않는 예외입니다.

        • ClassCastException

        • ArrayIndexOutOfBoundsException

        • NullPointerException

        • InputMismatchException

        • ArithmeticException

        • IOException

    • Error(unchecked exception):
      JVM에서 발생할 수 있는 예외적인 상황을 나타내며,
      정상으로 돌아오는 것이 대개 불가능하므로, 애플리케이션에서 처리하지 않습니다.

      • AWTError

    • ThreadDeath

    • OutOMemoryError




접근 제한자(클래스, 필드, 메소드, interface, enum)

  • public: 모든 패키지에서 접근 가능
  • private: 같은 클래스 내부에서만 접근 가능
  • protected: 정의한 클래스의 메소드나 상속 받은 메소드에서 접근 할 수 있습니다.
  • 접근 제한자를 쓰지 않는 경우: 같은 패키지에 있는 클래스에서만 접근할 수 있습니다.

클래스 (Class)

클래스 선언

[final] [abstract] [public] class <클래스이름>  [extends <상속할 부모 class이름>]
                                [implements
<상속할 부모 interface이름>, ...] {
  
<클래스 Property 선언>
  <클래스 Method 선언>
}

  • final: final 클래스는 상송할 수 없으므로, 자식 클래스가 없습니다.
  • abstract: 이 클래스가 추상 클래스임을 나타냅니다.
    • 구현이 되지 않은 abstract Method가 포함되어있음을 나타내며,
    • 이 클래스로 바로 객체를 생성할 수 없습니다.
  • extends: 이 클래스가 상속받는 클래스
  • implements: 이 클래스가 상속받는 인터페이스


클래스의 static 영역

클래스를 처음 접근 했을 때 호출되는 영역
static 변수를 초기화하거나 기타 초기화 작업을 할 때 사용합니다.

예) class Test {

       private static final String text;

         static {

            text = "TEST";

         }

      }



필드 & 메소드

필드

[public|protected|private] [final] [static] [transient] [volatile] int foo = 10;


클래스의 속성 변수는 외부에서 수정할 수 없도록 private/protected으로 선언합니다. 속성 값은 public인 set, get함수로 각각 값을 지정하거나 얻습니다.
  • public, protected, private, 생략하는 경우: 접근 제한자
  • final: 변수 값을 변경할 수 없는 상수로 선언합니다. 선언할때 초기화를 반드시 해야합니다.
  • static: 한 Class의 모든 객체가 공유하는 변수로 객체가 없어도 접근 가능
      public final
    static double PI = 3.141592; // static field. 클래스이름.필드이름 으로 참조
  • transient:
  • volatile:

클래스 내에서 접근할 수 있는 미리 지정된 객체
  • this: static 타입의 메소드가 아닌 경우, 현재 객체를 메소드에서 this로 접근할 수 있습니다.
  • super: 현재 객체의 클래스가 상속받는 부모 클래스 타입의 객체를 반환합니다.

메소드

[public|private|protected] [abstract] [synchronized] [final] [static] <반환타입> <메소드이름> ([<argument type> <argument name>]*) [throws <예외클래스이름>+]
  • 접근 제한자
  • abstract: 추상 메소드로 이 클래스에서는 선언만 하고 메소드를 정의하지 않습니다. 추상 클래스나, interface에서만 사용할 수 있습니다.
    abstract void foo();
    static 메소드는 오버라이딩이 불가능하므로  추상메소드가 될 수 없습니다.
  • synchronized:
  • final: 현재 클래스를 상속 받은 자식 클래스에서 override 할 수 없습니다.
  • static: 객체를 생성하지 않고 호출할 수 있는 메소드
  • throws: 예외처리 부분 참조. 해당 메소드에서 발생할 수 있는 checked exception(메소드 안에서 try로 잡히지 않은 예외)을 명시적으로 나타내야 합니다.
    • 상속: 오버라이딩하는 경우, 부모클래스의 throws에 선언된 예외 이외의 예외는 throws에 추가할 수 없습니다.


생성자
반환타입이 없고 클래스 이름과 동일
class MyClass {
  public MyClass(String courseName) { // 생성자
     this.courseName = courseName;
  }
}
  • this( ... ): 생성자에 현재 클래스의 다른 생성자를 호출할 수 있습니다.
  • super( ... ): 클래스를 상속 받아 생성자를 Overriding하는 경우 부모의 생성자를 호출할 수 있습니다. 단, 해당 생성자에서 가장 처음 나와야 합니다.

finalize
가비지 컬렉터가 객체의 메모리를 회수하기 직전에 객체의 종료 작업을 위해 호출하는 protected 메소드 입니다.
  • 정의:
    class Foo {
      protected void
    finalize() {
         System.out.println("finalized");
      }
    }
  • Foo foo = new Foo(); // 객체를 생성
    foo = null; // 가비지 컬렉터 대상임을 표시
    System.gc(); // 명시적으로 가비지 컬렉터 실행
  • 주의: 메소드가 호출될 지 보장할 수 없습니다.


static
  • 객체를 생성하지 않고 호출할 수 있습니다.
      public
    static void main(String args[]) { … } // static 메소드. 클래스이름.메소드이름 로 호출

메소드 오버로딩
  // 생성자 같은이름의 메소드를 파라미터만 달리해서 정의할 수 있습니다.
  public MyClass() { }
  public MyClass(String courseName) { }

  // 메소드를 오버로딩 하는 경우
  public int square(int intValue) { }
  public int square(double doubleValue) { }


set/get 함수
  public void setCourseName(String name) { // set함수: property에 접근
     this.courseName = name;
  }

  public String getCourseName() { // get함수: property에 접근
     return courseName;
  }

return
  • 메소드가 void type인 경우: return;
  • 이외의 경우: return expression;

toString
객체를 문자열로 변환하는 메소드
  public String toString() {
     return
문자열;
  }

가변 인자 목록
public class VarargsTest {
  public static double average( double... numbers ) {
     double total = 0.0;
     for( double d : numbers )
     total += d;
      ...
  }
}


클래스 객체

  • 객체 생성: Foo foo = new Foo(파라미터);


상속

  • Method Overriding: 클래스를 상속 했을 때, 부모 클래스의 메소드를 자식 클래스에서 재정의 할 수 있습니다.
    static 메소드는 오버라이딩 할 수 없습니다.

    Parent의 foo() 메소드를 Child 클래스에서 상속받아 Override한 예:
    public class Parent {
      void foo() { System.out.println("Parent's bar"); }
    }
    class Child extends Parent {
      void foo() { System.out.println("Child's bar"); }
    }

다형성 (Polymorphism)

다음과 같이 객체를 생성할 수 있습니다.
Parent a = new Child();

Interface

abstract method를 포함하고 있습니다. Interface를 상속받아서 클래스의 메소드들을 구현하여 사용할 수 있습니다.

예)

public interface Payable {

  double getPaymentAmount();

}


정의

interface 인터페이스이름 [extends <interface이름1>, <interface이름2>, ...];
  • abstract method를 포함하고 있습니다.
  • final로 정의된 상수를 포함하고 있습니다.
  • 변수는 선언할 수 없습니다.


Enum

enum 정의

  • 클래스의 멤버 변수로 enum 정의
    public class Craps {
      private
    enum Status { CONTINUE, WON, LOST};
    }
  • enum 정의
    public enum Book {
      AAA("aaa"), BBB("bbb"), CCC("ccc");
      private String title;
      Book(String title) {
         this.title = title;
      }
      public String getTitle() {
         return title;
      }
    }
  • 메소드를 상속받는 경우
     public static enum Store {
      YES {
         @Override
         public boolean isStored() { return true; }
         },
         NO {
            @Override
            public boolean isStored() { return false; }
         };
         public abstract boolean isStored();
     }




enum 메소드

  • Book.values(): enum의 값들을 배열로 반환


Package

import패키지에 미리 정의된 클래스를 사용합니다.
  • import java.util.Scanner;
  • import static java.lang.Math.*; // Math의 static 멤버를 Math. 를 붙이지 않고 사용
package
  • 소스코드의 가장 처음에 선언합니다.
  • 현재 클래스의 패키지 이름일 지정합니다.
  • 패키지 이름은 인터넷 도메인의 역순으로 표시합니다.

예) package com.zyint.util





제네릭 (Generic)

제네릭에서 사용하는 타입은 primitive 타입이 아닌 wrapper class를 사용합니다. 즉, 정수를 제네릭에서 표현할 때 int가 아닌 Integer 클래스를 사용함
  • <T>: 모든 클래스가 제네릭 타입이 될 수 있습니다.
  • <T extends Comparable<T> >: Comparable 인터페이스를 상속받는 클래스만 제네릭 타입이 될 수 있습니다
      예) public static <T extends Comparable<T> > T maximum(T x, T y, T z) { … }
  • <? extends Number>: wildcard type argument.
      예) Integer 클래스가 Number가 자식 클래스 일 때,
    void sum(ArrayList<Number> list) 함수에 ArrayList<Integer> 변수를 함수의 argument로 넘길 수 없습니다. → void sum(ArrayList<? extends Number> list)로 변경하면 ArrayList<Integer>타입의 변수도 인자로 받을 수 있습니다.


Generic Class

클래스에서의 제네릭 타입을 설정합니다.

예) public class Stack <E> {
private E[] elements;
    …

    }



Generic Method

함수 파라미터의 변수 타입에 따라서 타입이 결정되도록 합니다
예) public <E> void print(E value) { }
    public <E> void print(E value1, E value2) { }

참고자료

  • Java How to program (한글 6판), Prentice Hall -

퍼가실때에는 출처표시를 반드시 하셔야 합니다. 출처: http://zyint.tistory.com/

Posted by 진트­ 트랙백 0 : 댓글 0

댓글을 달아 주세요


티스토리 툴바