CodeGym/Java Blog/무작위의/올드 레벨 06
John Squirrels
레벨 41
San Francisco

올드 레벨 06

무작위의 그룹에 게시되었습니다
회원

Java 개발자의 로드맵

내 친구는 왜 개발자들이 항상 그렇게 행복한지 궁금해했습니다. 그녀가 내놓은 답은 간단하면서도 의외였습니다. 좋아하는 일을 하고 큰 돈을 번다는 것입니다. 소프트웨어 개발자의 세계에 오신 것을 환영합니다. 이전 레벨 06 - 1

소프트웨어 개발자의 급여

개발자 연봉에 대해 알려드리려고 합니다. 급여가 있는 땅, 일하러 가야 할 곳, 일하지 말아야 할 곳. 당신이 개발자가 아니고 스스로 퍼즐을 풀려고 한다면 다소 논쟁의 여지가 있는 데이터를 얻을 수 있습니다. 요점은 개발자의 급여에 영향을 미치는 주요 요인은 자격이 아니라 고용 장소라는 것입니다. 때로는 동일한 자격 수준에서 좋은 직장과 나쁜 직장의 차이가 2배에서 10배(!)가 될 수 있습니다. 한 달에 자격을 두 배로 얻고 두 배의 급여를 받을 수는 없습니다. 하지만 한 달 안에 직장을 옮기고 두 배 더 많은 급여를 받을 수 있습니다. 두 달의 흐름에 한 번 내 월급에 3배(!) – 잊을 수 없는 경험. 그럼 어떤 곳이 가장 좋은지 알아봅시다.
  1. 회사의 본업이 소프트웨어 개발인지 여부
  2. 회사가 글로벌 또는 로컬 시장을 지향하는지 여부
  3. 본사 위치: 선진국 또는 개발도상국
근무하는 도시는 관련이 없습니다. 즉, 뉴욕에 있는 친구보다 바르셀로나에서 5배 적게 번다면 제가 언급한 요인이 영향을 미쳤을 것입니다. 

특정 숫자

급여는 지역마다 다르기 때문에 5년 경력의 선임 Java 개발자 급여를 시작점으로 "최대 5년"이라고 제안합니다. 아래의 모든 수치는 이 금액의 백분율로 표시됩니다. 다음은 세계 여러 도시의 "최대 5년" 급여에 대한 몇 가지 예입니다. 이전 레벨 06 - 2아래에는 5년 경력의 Java 선임 개발자가 근무하는 회사에 따라 받을 수 있는 금액이 나와 있습니다. 이전 레벨 06 - 3이전 레벨 06 - 4현재 상황에서 가장 이상한 점은 무엇입니까? 전체 프로그래머의 절반이 1단계 및 2단계 회사에서 근무합니다. 당신은 알고 싶어, 캐치가 무엇입니까? 3단계와 4단계 회사에는 수백 개의 공석이 있습니다. 이러한 회사는 귀하에게 더 높은 급여와 일반적으로 더 나은 근무 조건을 기꺼이 제공합니다. 나는 두 명의 Java Junior를 알고 있는데, 그들 중 한 명은 "5년 최대" 급여(레벨 1 회사)의 약 3%를 지불하는 직업을 얻었고 다른 하나는 "5년 최대" 급여(레벨 4)의 30%를 받는 직업을 얻었습니다. 그렇다면 왜 적게 받습니까? 프로그래머에 대한 수요가 제안을 초과합니다. 급여가 적은 곳에서 일하지 마십시오! 결론 1: Java 개발자의 평균 급여(경력 포함)는 "5년 최대" 급여의 40%-50%입니다. 결론 2: 1, 2급 회사를 다니지 않고 3, 4급 회사에서 일하면 5년 후 평균 급여는 “5년 최고” 급여의 약 90%-110%가 될 것입니다.

어리석은 짓을 하지 않으면 얻을 수 있는 것

지금 프로그래밍에 대한 독학을 시작하면 급여는 다음과 같습니다. 이전 레벨 06 - 5

계획

0-3개월(학생)

당신은 프로그래밍에 대해 거의 알지 못합니다. 학교나 대학에서 기본 수준으로 공부했을 수 있습니다. 당신이 해야 할 일은 Java를 프로그래밍하고 배우는 방법을 배우는 것입니다. 귀하의 목표는 레벨 3 이상의 회사에서 Java Junior Developer로 취업하는 것입니다. 계획의 처음 3개월 동안은 아무것도 얻지 못할 것입니다. 왜냐하면 당신은 프로그램하는 법을 배우는 것이기 때문입니다. 하지만 일찍 시작할수록 좋습니다. 가장 좋은 시간은 지금입니다. 미래에는 가족이 있고 많은 대출이 있을 때 자격을 다시 갖추기가 훨씬 더 어려워질 것입니다. 실수를 바로잡으려면 적어도 1년 동안 정상적인 생활을 하기 위해 지불할 돈을 저축해야 합니다. 어리석은 실수를 저 지르지 마십시오.

3-15개월(Java 주니어 개발자)

귀하는 이미 소프트웨어 개발자로 일하고 있으며 귀하의 경험은 매일 증가합니다. 긴장을 풀지 마십시오. 노를 젓기 전에 할 일이 많습니다. 여러분이 해야 할 일은 미들 개발자로서 필요한 기술을 공부하는 것입니다. 이것들은 무엇입니까? 세상은 끊임없이 변화하고 있습니다. 나는 당신에게 조언을 해줄 것이고 인생은 모든 것을 바꿀 것입니다. 웹에서 몇 가지 공석을 찾고 지원해야 할 사항을 확인하십시오. Bruce Eckel의 "Thinking in Java" 책을 꼭 읽어보세요. Java Junior Developer로 일한 첫 해의 목표는 Java Middle Developer 수준에 도달하는 것입니다. 그것이 쉬울 것이라고 아무도 말하지 않지만 목표 지향적인 사람에게는 가능합니다. "최대 5년"의 40%(SF 및 런던의 경우 $50,000, 방갈로르의 경우 $6,000)까지 즉시 급여가 인상됩니다.

2년 프로그래밍(Java Middle Developer, 레벨 1)

당신은 작년에 좋은 일을 해냈고 이제 당신은 자바 미들 개발자입니다. 선임 Java 개발자 월급의 50%를 벌고 꽤 잘 살 수 있습니다. 당신은 직장에서 몇 가지 심각한 작업을 받고 있으며 경험이 크게 증가합니다. 2~3년 안에 Java Senior Developer 수준에 도달하게 됩니다. 서두를 필요 없다. 어쨌든 급여에서 큰 상한선을 얻지 못할 것입니다. 당신이 해야 할 일은 디자인 패턴을 배우고, McConnell의 코드 완성을 읽는 것입니다. 코드 및 팀 기술의 품질을 완성하십시오. 매달 컴퓨터 프로그래밍에 관한 책 1권을 읽는 규칙을 만드세요. 그러면 4년 안에 나머지 모든 것보다 50권의 책이 더 똑똑해질 것입니다. 미루지 마십시오. 더 많은 여가 시간을 얻지 못할 것입니다. 게다가 가족을 시작할 가능성이 높거나 가족이 있으면 더 커질 것입니다. 네 목표수석 Java 개발자로서 전문화할 몇 가지 기술을 선택하는 것입니다. 그것들을 모두 배울 수는 없습니다. 그리고 단일 전문 분야에서 전문가가 되는 것은 항상 좋은 결정입니다. 이전 레벨 06 - 6

3년 프로그래밍(Java Middle Developer, 레벨 2)

당신은 이제 경험이 풍부한 미들 개발자이며 시니어 개발자가 될 생각을 하고 있습니다. 즐겁고 권위적입니다. 급여가 "5년 최대"의 60%(방갈로르 $10,000, 키예프 $25,000, 베를린 $40,000, 뉴욕 $80,000)를 초과합니다. 이 순간부터 귀하와 같은 전문가에 대한 수요가 증가합니다. 당신은 항상 며칠 안에 일자리를 찾을 수 있고 지금보다 적은 수입을 거의 얻지 못할 것입니다. 물론 바보 같은 짓을 하지 않는다면 말이다. 당신이해야 할 일은선택한 기술을 계속 연구하십시오. 더 잘 작동합니다. 당신의 고용주를 위해서가 아니라 당신 자신을 위해서. 유망한 기술(이 기사가 작성되는 시점에 BigData와 같은)과 관련된 프로젝트에 참여를 신청하십시오. 어쨌든 사무실에서 하루에 8시간을 보내게 될 것이므로 조금 더 많은 돈을 벌고 훨씬 더 중요한 것은 미래에 필요할 가장 귀중한 경험을 얻는 것입니다. 당신의 목표는 새로운 직업을 찾는 것입니다. 좋은 팀은 항상 찾을 수 있습니다. 새로운 프로젝트와 기술에 직면하게 될 것입니다. 의자에 뿌리를 내릴 필요가 없습니다. 아직 3급 회사에서 일하고 있다면 4급 회사에 고용하는 것을 고려해 보십시오.

프로그래밍 5년차(Java Senior Developer, 1급)

당신은 이제 시니어 개발자입니다. 아마도 당신은 그럴 자격이 없었고 그것을 느낄 것입니다. 그래도 축하합니다. 당신이 지금 당신의 위치에 합당한지 여부는 중요하지 않으며, 당신이 미래에 그 위치에 합당하게 되는 것이 중요합니다. 좋은 직장을 구하고 필요한 수준으로 성장한 다음 그 반대의 경우가 더 낫다는 데 동의하실 것입니다. 한 달에 한 권의 책을 읽으라는 제 조언을 잊지 않으셨으면 좋겠습니다. 이제 모든 학생이 당신의 지식과 기술을 부러워할 것입니다. 좀 더 구체적으로 말하자면, 그는 그들을 위해 기도할 것입니다. 생각해보세요. "5년 최대" 급여의 90%에 가까운 상당한 수입이 있습니다. 당신은 아마 아직 어리다. 세상은 당신의 발 앞에 있습니다. 당신이해야 할 일은선택한 기술을 재평가합니다. 전문화를 변경해야 할 수도 있습니다. 세상은 변했고 기술은 변했고 지난 2년 동안 꽤 많은 지식을 얻었습니다. 지금 선택한 것이 앞으로 몇 년 동안 헤드라인이 될 것입니다. 좋아하는 기술을 선택할 때입니다. 귀하의 목표는 성장 방향을 선택하는 것입니다. 그것들은 수없이 많고 아무도 그것들의 이름을 모두 지을 수는 없지만 당신의 선택은 지금 당장 이루어져야 합니다. 오늘 작은 변화를 주면 미래에 큰 변화를 얻게 될 것입니다.

프로그래밍 6년차(Java Senior Developer, level2)

당신은 당신의 미래를 결정했고 당신의 꿈을 이루기 위해 노력하고 있습니다. 앞으로 나아가고자 하는 열망과 함께 올바른 방향을 선택하고 결과는 오래가지 않을 것입니다. 축하해요. 꿈을 이룬 사람이 한 명 더 있다는 것이 기쁩니다. 한 가지 심오한 진리가 있습니다. 사람들은 종종 1년 동안 달성할 수 있는 것은 과대평가하고 5년 동안 달성할 수 있는 것은 과소평가합니다. 5년 전을 보십시오. 그렇습니다. 당신이 해야 할 일은 현명하지 못한 결정을 피하고 게으르지 않는 것입니다. 당신의 목표는 방향을 선택하고 앞으로 나아가는 것입니다. 아니면 여기서 끝이라고 생각하셨나요? 졸업을 기억하십시오. 끝이 아니라 시작일 뿐입니다.

미래 전문화

이전 레벨 06 - 7기술 전문가(상위), 관리(하위) 또는 고용된 전문/독립 컨설턴트(중)로 성장할 수 있습니다. 그것은 모두 당신이 선호하는 것에 달려 있습니다.

자바 개발자의 경력

개발자의 경력은 남들과 다릅니다. 좋은 돈을 벌기 위해 매니저가 될 필요는 없습니다. 시니어 개발자가 매니저 상사보다 더 많은 수입을 올리는 경우가 종종 있습니다. 더 많은 경험을 쌓을수록 상사와의 작업 관계는 "상사-하급자"에서 "스타와 매니저"로 바뀝니다. 가치 있는 개발자가 프로젝트와 공석을 선택한다는 사실을 알고 버릇이 없습니다 . 우리 자신을 위해 행복합시다. 그렇다면 세계적으로 인정받는 인기 개발자가 되려면 무엇이 필요할까요? 가장 많이 요구되는 신기술에 대한 풍부한 경험이 있어야 합니다. 이것을 달성하는 방법? 아래를 참조하십시오. 이전 레벨 06 - 8개발자로 취직하자마자 두 가지 일이 일어나기 시작합니다. 그래도 항상 보이는 것은 아닙니다. 1. 실제 프로젝트에서 경험을 쌓고 빠르게 성장합니다. 이 직장에서 1년을 일하면 대학에서 5년을 보내는 것보다 더 많은 경험을 얻을 수 있습니다. 채용 공고에 "자바 개발자 경력 3년 필수"라고 기재할 정도로 경력이 중요합니다. 2. 하루에 8시간씩 신기술을 공부하고 그에 대한 보수를 많이 받습니다. 이 사실을 과대 평가할 수 없습니다. 어떤 경우에는 당신이 얻은 기술이 너무 귀중해서 그것을 얻기 위해 무료로 일하거나 심지어 돈을 지불할 수도 있습니다. 현명하게 작업하는 프로젝트를 선택하면 머리가 돌아가는 소프트웨어 개발자 경력을 갖게 될 것입니다. 그래서… 무엇을 선택해야 할까요? 어떤 기술이 유용할지 모르기 때문에 "좋고 싫음"과 "패션 트렌드"를 선택하기 시작합니다. 운이 좋을 수도 있고 그렇지 않을 수도 있습니다. 따라서 목적지를 미리 알고 가는 것이 좋습니다. 프로그래머를 위해 진화할 수 있는 수많은 방법이 있으므로 간단하게 하기 위해 그 중 몇 가지를 선택하고 앞으로의 상황에 대한 비전을 작성하겠습니다. 이 패턴이 강경책이라고 생각하지 마십시오. 오히려 명확하게하기 위해 제시된 사물의 단순화 된보기입니다.

200세 개발자

무엇보다 프로그래밍을 즐긴다면 선임 개발자, 기술 리드 개발자, 아키텍트가 당신의 길입니다. 이렇게 하면 50년 이상 개발자로 일할 수 있습니다. 대부분의 경우 수석 개발자 및 기술 리드 개발자의 급여는 관리자의 급여를 초과합니다. 따라서 돈의 가치를 얻으십시오.

관리자. 남들과 달라서 다행이야

당신은 적에게 갔다. 농담이야. 훌륭한 조직 기술을 발견했다면 팀 리더, 그 다음 프로젝트 관리자가 될 것입니다. 부서장이 되어 자신의 사업을 시작할 수 있는 기회를 제공합니다. 그것이 당신이 원하는 것입니다, 그렇죠?

마음가는 곳이 집입니다

이전 레벨 06 - 9이미 가정을 꾸렸다 면 아마도 경제가 강한 나라에서 멋지고 조용한 삶을 살고 싶을 것입니다. 아마도 당신은 캐나다, 미국, 스위스 또는 호주로 이주하는 것을 고려할 것입니다. 당신은 뛰어난 기술과 요구되는 직업을 가지고 있습니다. 설거지부터 시작할 필요가 없습니다. Java 시니어 개발자로 시작합니다. 아마, 많이 벌고 있을 겁니다. 나쁘지 않죠?

나폴리를 보고 죽지 마라.

당신은 아직 가족이 없고 여행을 좋아합니다 . oDesk는 당신의 전부입니다. 클라이언트를 찾고 시간당 $20-$50의 요율에 동의하고 노트북을 가지고 가십시오! 당신의 급여는 세계 어디에서나 살기에 충분할 것입니다. 바로 꿈을 이루기 시작하지 않겠습니까?

난 프로그램하고 싶지 않아, 난 여자야..

당신이 여자 라면 출산 휴가를 받아야 할 수도 있습니다 . 그것은 성 차별적 농담처럼 들립니다. 그래도 거기에는 상식이 많이 들어 있습니다. 대부분의 경우 출산 휴가를 사용하면 출산 휴가를 많이 받을 수 있습니다(사회적 보호 수준이 높은 국가의 경우). 돈을 안 주는 회사가 있고, 돈을 잘 주는 회사가 있습니다. 제 학생 중 한 명이 출산 휴가로 연봉의 3분의 1을 받았습니다. 그리고 이것은 2009년 봄 고용 정리 해고 중에 일어났습니다. 그리고 1년 반 후에는 최소한 중간 개발자가 되어 돌아올 수 있습니다.

레벨 6

이전 레벨 06 - 10

1 엘리. 개체 가시성. 없는

- 이봐, 아미고! - 안녕, 엘리! 오늘 나에게 흥미로운 것을 말해 줄래? - 오늘은 객체의 수명 에 대해 말씀드리겠습니다 . 개체가 생성된 후 적어도 하나의 변수가 해당 주소를 저장할 때까지(최소한 하나의 개체 참조가 있음) 존재합니다. 더 이상 참조가 없으면 개체가 죽습니다. 예: 이전 레벨 06 - 11- 개체 «cat Tommy»는 생성된 이후 단 한 줄에만 존재합니다. 다음 줄에서 해당 참조를 저장하는 변수만 null로 설정되고 JVM(Java Virtual Machine)이 개체를 삭제합니다. - 생성된 «cat Sammy» 개체는 cat1 변수에 저장됩니다. 또는 오히려 cat1은 개체에 대한 참조를 저장합니다. 그런 다음 이 참조 아래 두 줄을 변수 cat2에 복사합니다. 그 후 다른 개체에 대한 참조는 cat1에 저장되고 «cat Sammy»에 대한 참조는 cat2에만 남습니다. 마지막으로 main 메서드의 마지막 줄에서 개체에 대한 마지막 참조가 null로 설정됩니다. - 개체 «cat Maisy»는 생성된 순간부터 한 줄에만 존재합니다. 다음 줄에서 변수 cat2에 다른 값이 할당되고 «cat Maisy»에 대한 참조가 손실됩니다. 객체에 도달할 수 없게 되고 가비지(죽은) 것으로 간주됩니다. - «cat Ginger» 개체는 생성된 순간부터 메서드가 끝날 때까지 존재합니다. 런타임에 메서드가 종료되면 변수 cat1이 소멸되고 개체 «cat Ginger»도 소멸됩니다. - 알았습니다. - 그러나 어떤 메서드에서 Cat 개체를 만들고 클래스 변수에 참조를 저장하면 다른 기존 개체에서 Cat에 대한 참조가 있는 한 Cat이 존재합니다. - 일반적으로 개체는 즉시 파괴되지 않습니다. JVM(Java Virtual Machine)은 가끔 가비지 콜렉션을 활성화하여 사용하지 않는 오브젝트를 제거합니다. 그것에 대해서는 나중에 말씀드리겠습니다. - 어떤 변수가 개체 참조 저장을 중지하도록 하려면 null 이나 다른 개체에 대한 참조를 할당할 수 있습니다.

2 교수, 쓰레기 수거

이전 레벨 06 - 12- 이봐, 아미고! 다음은 Java의 가비지 수집에 대한 유용한 링크입니다. 확실히 내 강의는 아니지만 이 정도면 충분하다: Java Garbage Collection Basics

3 엘리, 마무리

- 안녕하세요! 이제 finalize() 메서드에 대해 간략하게 소개하겠습니다 . 이 메서드는 개체가 소멸되기 전에 개체의 JVM(Java Virtual Machine)에 의해 호출됩니다. 사실 이 메서드는 생성자와 반대입니다. 이 메서드에서는 개체에서 사용하는 리소스를 해제할 수 있습니다. - Object 클래스에는 이 메소드가 있으므로 모든 클래스에 이 메소드가 있습니다( Java의 모든 클래스는 Object 클래스에서 상속된 것으로 간주되며 해당 메소드의 사본을 포함함 ). 클래스에 finalize() 메서드를 작성하면 이 클래스의 객체가 소멸되기 전에 호출됩니다. 예: 이전 레벨 06 - 13- 알았다. - 하지만 한 가지가 있습니다. JVM(Java Virtual Machine)이 이 메소드를 호출할지 여부를 스스로 결정합니다.대부분의 경우 메서드에서 생성되고 종료 후 쓰레기로 선언된 객체는 finalize() 메서드를 호출하지 않고 즉시 소멸됩니다. 이 방법은 외부(JVM 외부) 리소스 할당을 제어하는 ​​또 하나의 도구입니다. 개체를 소멸시키려면 사용된 모든 외부 리소스를 해제하고 저장된 참조를 재설정하는 것이 좋습니다. 이 방법의 장점과 작업의 세부 사항에 대해 10단계 또는 20단계로 말씀드리겠습니다. 그 동안 두 가지를 알아야 합니다. 이러한 메서드가 존재하고 ( 놀랍게도! ) 항상 호출되는 것은 아닙니다.

4 엘리, 개체 수명

- 또한 개체 수명에 대한 몇 가지 흥미로운 사항을 말씀드리고 싶습니다. Java에서는 실수로 객체를 잃어버리는 것이 매우 어렵습니다. 개체 참조가 있으면 개체가 확실히 살아 있음을 의미합니다. - 개체 참조 내부에는 이 개체의 메모리 주소인 숫자가 저장됩니다. 이 숫자를 변경하거나 늘리거나 줄일 수 없습니다. 메모리에 주소만 있으면 참조를 만들 수 없습니다. 새 개체를 만들고 해당 참조를 변수에 할당할 수만 있습니다. 이것이 새 참조를 얻을 수 있는 유일한 방법입니다. - 알겠어요. 즉, 모든 개체 참조를 null(지우기)로 설정하면 개체 참조를 가져오거나 액세스할 수 없습니다. - 네. 그러나 종종 그 반대가 사실입니다. 사용되지 않은 라이브 오브젝트가 너무 많습니다.대부분의 프로그램은 수십 개의 개체를 생성하고 런타임에 다른 목록에 저장하지만 해당 목록을 정리하지는 않습니다. - 대부분 프로그래머는 원치 않는 개체에 "삭제됨"이라는 레이블을 지정합니다. 그게 전부입니다. 아무도 목록에서 제거하는 데 관심이 없습니다. 따라서 대규모 Java 프로그램은 부풀어 오르는 경향이 있습니다. 점점 더 많은 미사용 개체가 메모리에 남아 있습니다. - 그게 다야. 앞으로는 사용하지 않는 물건과 적절한 폐기 방법에 대해 항상 주의를 기울일 것입니다. - 네, 감사합니다. 참조에 대한 몇 가지 사항을 정리했습니다.

5 Diego, 개체 수명 작업

- 이봐, 아미고! 다음은 몇 가지 작업입니다.
작업
1 1. Cat 클래스의 finalize() 메서드 보호된 void finalize() throws Throwable
메서드를 Cat 클래스에 작성합니다.
2. 클래스 Cat 및 Dog 및 각 클래스에 대한 finalize() 메소드
Cat 및 Dog 클래스 각각에는 객체가 파괴되었다는 메시지를 화면에 표시하는 finalize() 메소드를 작성합니다.
3. Cat 클래스 객체 50,000개와 Dog 클래스 객체 50,000개
Cat 클래스 객체 50,000개와 Dog 클래스 객체 50,000개를 루프에 생성합니다. (Java 가상 머신은 사용하지 않는 객체를 파괴하므로 finalize() 메서드가 적어도 한 번은 호출됩니다.)
4 4. Cat 카운터 Cat 클래스 생성자 [public Cat()]에서 cat 카운터(같은 클래스의 정적 변수 catCount)를 1 증가시킵니다 . finalize()
메서드에서 1 감소합니다.

6 Elly, 정적 클래스 및 메서드

- 여기 새로운 흥미로운 주제가 있습니다. 정적 변수와 메서드에 대해 알려드리려고 합니다. - 아, 나는 이미 정적 변수에 대해 들었습니다. 정적 방법에 대해서도 마찬가지입니다. 하지만 자세한 내용을 알고 싶습니다. - 클래스에서 변수를 선언할 때 이러한 변수가 단일 공유 인스턴스에서 생성되는지 또는 각 개체에 대한 복사본을 생성해야 하는지 여부를 지정합니다. 기본적으로 이 클래스의 각 개체에 대해 클래스 변수의 새 복사본이 만들어집니다. 다음과 같습니다. 이전 레벨 06 - 14- 변수 cat1.namecat2.name은 동일한 클래스 Cat에서 선언되지만 서로 다른 개체에 바인딩되어 있기 때문에 서로 다른 값을 저장합니다. - 알았습니다. - 단일 인스턴스에 정적 변수가 존재합니다. 클래스 이름을 사용하여 액세스해야 합니다. 이전 레벨 06 - 15- 역시 명확합니다. - 수업 방식도 두 가지로 나뉩니다. 일반 메서드는 개체에서 호출되며 이 개체의 데이터에 액세스할 수 있습니다. 정적 메서드에는 개체 참조가 없기 때문에 이러한 액세스 권한이 없습니다. 정적 메서드는 이 클래스의 정적 변수나 다른 정적 메서드에 액세스할 수 있습니다. - 정적 메서드는 비정적 메서드나 비정적 변수에 액세스할 수 없습니다! - 왜 그래? - 모든 일반 클래스 변수는 개체 내부에 배치됩니다. 모든 메서드는 해당 개체에 대한 참조가 있는 경우에만 이러한 변수에 액세스할 수 있습니다. 이러한 참조는 정적 메서드에 전달되지 않습니다. - 일반적인 방법은 어떻습니까? - 일반 메서드에는 이 메서드가 호출되는 개체에 대한 숨겨진 참조가 전달됩니다. 이 참조를 저장하는 변수를 this 라고 합니다 . 따라서 메서드는 항상 자체 개체의 데이터를 가져오거나 동일한 개체의 다른 비정적 메서드를 호출할 수 있습니다. - 개체 참조 대신 정적 메서드에 null이 전달됩니다. 따라서 정적 메서드는 비정적 변수 및 메서드에 액세스할 수 없습니다. 바인딩된 개체에 대한 참조가 없을 뿐입니다. - 알겠어요. - 이것이 일반적인 비정적 메서드가 작동하는 방식입니다. 이전 레벨 06 - 16- 정적 메서드가 작동하는 방식입니다. 이전 레벨 06 - 17- 변수 또는 메서드는 static 키워드로 선언된 경우 정적입니다. - 그렇게 제한적이라면 그러한 방법의 장점은 무엇입니까? - 이 방법에도 장점이 있습니다. - 첫째, 정적 메서드 및 변수에 액세스하기 위해 개체 참조를 전달할 필요가 없습니다 . - 둘째, 때로는 변수가 고유해야 하는 경우가 있습니다 . 예를 들어 변수 System.out(System 클래스의 정적 변수)과 같습니다. - 셋째, 객체를 생성하기 전에 메소드를 호출해야 하는 경우가 있습니다 . - 어떤 경우에? - main 메소드가 정적으로 선언된 이유는 무엇이라고 생각합니까 ? 객체를 생성할 수 있기 전에 클래스가 메모리에 로드된 직후에 호출합니다 .

7 Risha, 정적 클래스 및 메서드

- 정적 메서드 외에 정적 클래스도 있습니다 . 이 경우는 나중에 살펴보겠습니다. 그 예를 보여 드리겠습니다. 이전 레벨 06 - 18- Cat 클래스의 개체를 원하는 만큼 만들 수 있습니다. 단일 인스턴스에 존재하는 정적 변수와 다릅니다. - 클래스 선언 전에 static 수정자의 주요 목적은 Cat 클래스와 StaticClassExample 클래스 간의 관계를 유지하는 것입니다 . 일반적으로 Cat 클래스는 StaticClassExample 개체 에 바인딩되지 않고(숨겨진 참조가 없음) 일반(비정적) StaticClassExample 변수에 액세스할 수 없습니다. - 그럼 다른 클래스 안에 클래스를 만들 수 있나요? - 네. 자바는 이것을 가능하게 합니다. 이제 너무 많이 생각하지 마세요. 나중에 다른 것들을 설명할 것이고 모든 것이 조금 더 쉬워질 것입니다. - 나는 희망한다.

8 Diego, 정적 메서드에 대한 작업

- 이봐, 아미고! 다음은 정적 메서드에 대한 몇 가지 흥미로운 작업입니다.
작업
1 1. 클래스 Cat 및 정적 변수 catCount Cat 클래스에
정적 변수 int catCount를 작성합니다. 주어진 변수를 1씩 증가시키는 생성자 [ public Cat() ]를 생성합니다.
2 2. 정적 메서드: int getCatCount() 및 setCatCount(int) Cat 클래스
두 개의 정적 메서드를 추가합니다 .
3. Class Util
정적 메서드 double getDistance(x1, y1, x2, y2) 를 구현합니다 . 점 사이의 거리를 계산해야 합니다. 전달된 매개변수의 제곱근을 계산하려면 double Math.sqrt(double a) 메소드를 사용하십시오.
4 4. Class ConsoleReader
클래스 ConsoleReader를 작성합니다. 여기에는 4개의 정적 메서드가 있습니다.
- 키보드에서 문자열을 읽는 문자열 readString()
- 키보드에서 숫자를 읽는 int readInt()
- 키보드에서 분수를 읽는 이중 readDouble()
- void readLn () 엔터 누르기를 기다리기 [use readString()]
5 5. StringHelper 클래스
StringHelper 클래스를 작성하십시오. 이 클래스에는 2개의 정적 메서드가 있습니다.
- String multiply(String s, int count)는 문자열을 count회 반복하여 반환해야 합니다.
- 문자열 곱하기(String s)는 5번 반복된 문자열 s를 반환해야 합니다.

예:
아미고 → 아미고아미고아미고아미고아미고

9 교수, 개체 정적 범위 및 수명

이전 레벨 06 - 19- 또 나야. 안타깝게도 오늘은 링크를 드릴 수 없습니다. 그 위대한 강의는 어딘가에서 사라졌습니다. 오늘은 당신이 스스로 해야 할까봐 두렵습니다. 하지만 Elly와 Risha의 말을 더 잘 들어야 합니다. 그들은 항상 당신에게 무언가를 가르쳐줄 수 있습니다. 그러나 이것을 시도하십시오: 개체 수명 주기

10 훌리오

- 이봐, 아미고! 당신은 오늘 훌륭한 일을 했다. 그래서 더 드릴 수 없습니다. 자, 앉으세요. 쇼가 시작됩니다.

11 다람쥐 선장

-안녕하세요, 군인! - 좋은 아침입니다! - 멋진 소식이 있습니다. 다음은 기술을 강화하기 위한 빠른 확인입니다. 매일 하면 기술이 빠르게 향상될 것입니다. 작업은 Intellij IDEA에서 수행하도록 특별히 설계되었습니다.
Intellij Idea에서 수행할 추가 작업
1 클래스 Cat 및 정적 변수 catCount Cat 클래스에
정적 변수 public int catCount를 작성합니다. 생성자 [public Cat()]을 만듭니다. 고양이(새 객체 Cat)를 생성할 때마다 정적 변수 catCount를 1씩 증가시키십시오. Cat 개체 10개를 만들고 catCount 변수 값을 표시합니다 .
2 2. 정적 고양이
  1. Cat 클래스에 공용 정적 변수 cats(ArrayList<Cat>)를 추가합니다.
  2. 고양이(새 개체 Cat)를 만들 때마다 이 새 고양이를 변수 cats 에 추가하십시오 . 10개의 개체 Cat을 만듭니다.
  3. printCats() 메서드는 모든 고양이를 표시해야 합니다. 메서드에서 cats 변수를 사용해야 합니다.
팁: cats
변수를 생성하려면 다음 코드 라인을 사용하십시오. public static ArrayList<Cat> cats = new ArrayList<Cat>();
3. 정적 수정자 하나 이동
코드가 컴파일되도록 정적 수정자 하나를 이동합니다.
4 4. 최소 정적 키워드 수
최소 정적 키워드 수를 추가하여 코드를 컴파일하고 프로그램을 성공적으로 완료합니다.
5 5. 새로운 아이디어가 있습니까? 생각 해봐...
  1. Solution 클래스에 공개 정적 클래스 Idea를 작성합니다.
  2. 비어 있지 않은 메시지를 반환하도록 Idea 클래스에 public String getDescription() 메서드를 작성합니다.
  3. Solution 클래스에서 정적 메서드 public void printIdea(Idea idea)를 만들어 아이디어에 대한 설명을 표시합니다. 이것이 getDescription() 메서드가 반환하는 것입니다.
6 6. KissMyShinyMetalAss
KissMyShinyMetalAss라는 클래스를 작성합니다. 이 클래스의 개체를 만든 다음 화면에 표시합니다.
7 7. 3개의 정적 변수 이름
3개의 공용 정적 변수 작성: String Solution.name , String Cat.name , String Dog.name
코멘트
  • 인기
  • 신규
  • 이전
코멘트를 남기려면 로그인 해야 합니다
이 페이지에는 아직 코멘트가 없습니다