。゚(*´□`)゚。

코딩의 즐거움과 도전, 그리고 일상의 소소한 순간들이 어우러진 블로그

[네이버클라우드] 클라우드 기반의 개발자 과정 7기/웹프로그래밍

[NC7기-29일차(6월5일)] - 웹프로그래밍 10일차

quarrrter 2023. 6. 5. 16:34

1교시

App.java

반복되는 코드 메서드로 분리하기 

 

자바스탈 : 시작 중괄호를 메서드 뒤에

2교시

스태틱 변수는 기본 값 0으로 초기화 된다. 

로컬 변수는 자동초기화 없음 꼭 값을 줘야함 

package bitcamp.myapp;

public class Test {

  static int result; // 스태틱 변수는 기본 값 0으로 초기화 된다. 로컬 변수는 자동초기화 없음 꼭 값을 줘야함

  public static void main(String[] args) {

    // 2 * 3 + 7 - 2 / 2 = ?
    // => 연산자 우선 순위를 고려하지 않고 앞에서부터 뒤로 순차적으로 계산한다.

    init(2);
    multiple(3);
    plus(7);
    minus(2);
    divide(2);
    System.out.println(result);
  }

  static void init(int a) {
    result = a;
  }

  static void plus(int a) {
    result += a;
  }

  static void minus(int a) {
    result -= a;
  }

  static void multiple(int a) {
    result *= a;
  }

  static void divide(int a) {
    result /= a;
  }
}

 

*메서드 명과 클래스 명

메서드 명  동사형태: print(), copy()
동사구:printMember(), addMember()
전치사구: toString(), fromJson()
명사/명사구: name(), email()
클래스 명 명사: Integer, String, Math, System
명사구: ClassLoader,IllegalAccessError
형용사구: AutoCloserable

 

 

3교시

클래스 파일 따로 만들고 

// Calculator.메서드

 

*클래스 접근 범위 -default (package private)

bitcamp/
	myapp
       	 App.java
    	 Test.java
    
   	util
     	  Calculator.java (default=package private // 소속된 패키지 안에서만 접근 가능)
          	 	  (public: 외부 패키지의 멤버가 접근 가능)
                
             -메서드 default : 같은 클래스 멤버이거나 같은 패키지의 클래스멤버만 접근 가능
             -메서드에 public 붙여서 공개

** public : 공개는 필요한 시점에 소극적으로 하기

class & 메서드에 public을 붙여서 공개
위에서 bitcamp.util.Calculator import 했으니까 밑에 다 안 써두 됨

컴파일러는 import를 바이트코드로 컴파일 하지 않음.

아래 코드만 컴파일하지만.

 

project

오후수업 1교시

패키지

[조직].[프로젝트].[역할]
+조직: 중복되지 않도록 주로 도메인명 사용
도메인명을 거꾸로 사용 
예) come.naver   /  net.daum   /  org.apache   (상위조직이름.하위조직이름)

+프로젝트: crm, hrd(인사관리시스템),gmail, blog
+역할: controler, service, dao, domain, util, ... 

encapsulation(캡슐화)

복잡한 코드를 메서드 안에 감춘다.

메서드 역할에 따라 분류하여 유지보수를 쉽게한다. 

(멤버 입력 관련 메서드 및 변수 분류, 프롬프트 관련 메서드 및 변수 분류)

메모리를 더 사용하고, 속도를 잃지만 개발 비용 절감효과 

 

스태틱 변수와 메서드 에리어 

class Test {
	static class calculator {
	static int result;
    static void init(int a){
    	restult a;
    }
    static void Plus (int a) {
    restult += a;
    }
   }
   }

$java Test

1. Method Area에 Test.class 로딩 됨

2. Method Area에 Test.class 속 main() 호출 

3. main()이 실행되는 동안 사용할 로컬변수를 JVM stack의 main()프레임안에 준비(ex) args)

4. calculator.class가 Method Area 에 로딩됨.

5. static result 필드 생성됨 

6.calculator.class 속에 init 콜

7. JVM stack에 calculator.init()의 로컬변수가 준비됨

 

**4. calculator 클래스 로딩시

1. static 변수 생성됨

2. static 블럭 실행 

 

변수

1. static 변수

클래스 로딩 시 생성/ JVM 끝날 때, 클래스 끝나면 사라짐

2. 인스턴스 변수

new 실행할 때 생성 / 클래스 언로딩 할 때, JVM 종료할 때 사라짐 

3. 로컬 변수

메서드 호출되면 생성 / 메서드 끝날 때, JVM 종료할 때 사라짐