Sinbum's blog
  • 인셉션 개발자
    • History
    • Editorial Board
    • 세미나
      • MS_빅데이터_분석_교육
      • Databricks_Musinsa_사례분석
      • Databricks_AMOREPACIFIC_사례분석
    • 개발자 꿀팁
  • 리눅스
    • 리눅스 기초
      • 기본명령어
      • 프록시서버
      • 온프레미스
      • systemd
      • 우분투 앱
      • vi 사용법
    • 도커
      • MSA 아키텍처
      • 도커 설명
      • 도커 설치
      • 도커 가이드
        • 컨테이너 만들기
        • 컨테이너 보관
        • 컨테이너 사용
        • 컨테이너 관리
        • 컨테이너 볼륨
        • 컨테이너 통신
        • 도커 연습
  • 언어
    • 자바
      • 자바(JAVA)는 무엇인가?
        • JVM 메모리
      • 자바 설치 가이드
      • 자바 언어 활용
        • 변수
        • static
        • 상수
        • 연산자
        • 제어문
        • 배열
        • CLI-자바사용
        • 클래스
        • 메소드
        • 값에의한 호출
        • GUI 프레임
        • 생성자
        • 오버로딩
        • 상속
        • 상속생성자
        • 접근제한자 와 가비지 컬렉션
        • 추상클래스 와 인터페이스
        • 다중구현
        • 예외처리
        • 컬렉션 프레임워크
        • 쓰레드
        • 네트워크
        • 다중 접속 서버 구현
      • 간단한 채팅 앱 개발하기
    • 파이썬
      • 파이썬(Python)은 무엇인가?
      • 파이썬 설치 가이드
      • 파이썬 언어 활용
        • 변수
        • 입력,출력
        • 타입선언
        • 자료구조
        • 주석처리
        • 문자열
        • 리스트
        • 반복문
        • 연산자
        • 조건문
        • 정규표현식
          • re 모듈
          • 메타문자1
          • 메타문자2
          • 그루핑
          • 전방탐색
          • 문자열 바꾸기
          • Greedy 와 Non-Greedy
      • 마치며...
  • 형상관리,CI/CD
    • 깃허브
      • 깃허브 협업 모델
      • 깃허브 설치 와 ssl
      • 깃허브를 잘쓰는 팁 모음
  • BigData
    • BigData 개념
      • OLTP,OLAP
      • ELT,ETL
      • DW
      • ObjectStorage
      • LambdaArc
      • OGG
    • Kafka
      • 환경설정 및 소스코드 다운로드
      • 아파치 카프카는?
        • 카프카의 시작
        • 카프카 특성
        • 빅데이터 아키텍처
      • 카프카 기초 개념
    • BuildApplications
      • Airflow
      • Grafana
    • PowerBi
      • DAX
        • REMOVEFILTERS
        • DAX_문법
        • DAX_함수
    • Azure
      • SynapseAnalytics
  • IOT
    • 아두이노
      • 설치 및 기초
      • 센서의 종류
      • led 출력하기
      • 시리얼 통신
      • 무선 통신
  • About
    • SINBUM
    • INTEREST
    • PROJECTS
      • 업무 프로젝트
      • 개인 프로젝트
        • 티스토리API를 사용한 블로그 앱
        • 노션 API와 블로그 연동 자동화 하기
        • 로지텍 마우스 수리
    • CONTACT
Powered by GitBook
On this page
  • 멤버 메소드
  • 메소드를 사용하지 않은 경우
  • 메소드를 사용한 경우
  • 리턴값이 있는 메소드의 사용
  • 클래스의 분리
  • 메소드를 이용해 성적프로그램 만들기. Sungjuk, SungjukUse
  • 변수의 유효 범위(scope)
  • 멤버 변수(Instance 변수)
  • 지역 변수, Local Variable
  1. 언어
  2. 자바
  3. 자바 언어 활용

메소드

멤버 메소드

  • C언어의 함수와 비슷합니다.

  • 데이터 처리 기능을 구현합니다.

  • 리턴값이 없는 메소드는 void 형을 지정합니다.

  • 메소드가 받는 인수의 데이터 타입은 메소드를 호출하는 쪽과 일치해야 합니다.

  • Method Overloading(중복 정의), Overriding(재정의)기술로 확장 됩니다.

  • 메소드가 리턴하는 값과 리턴되는 값의 데이터 타입은 일치해야 합니다.

메소드를 사용하지 않은 경우

PayCalc2.java

public class Pay2 {
    //멤버 변수, 인스턴스 변수, 필드
    String name;
    int    bonbong;
    int    tax;
    int    silsu;
}
public class PayCalc2 {
    public static void main(String[] args) {
      //┌ Class
      //↓
        Pay2 p1 = new Pay2();
        Pay2 p2 = new Pay2();
      //       ↑
      //       └ 객체, 객체 변수
    
        p1.bonbong = 2000000;
        p1.name = "왕눈이";
        p1.tax = (int)(p1.bonbong * 0.05 + 0.5);
        p1.silsu = p1.bonbong - p1.tax;
    
        p2.bonbong = 2500000;
        p2.name = "아로미";
        p2.tax = (int)(p2.bonbong * 0.05 + 0.5);
        p2.silsu = p2.bonbong - p2.tax;
    
        System.out.println("성명: " + p1.name);
        System.out.println("본봉: " + p1.bonbong);
        System.out.println("세금: " + p1.tax);
        System.out.println("실수령액: " + p1.silsu);
    
        System.out.println("성명: " + p2.name);
        System.out.println("본봉: " + p2.bonbong);
        System.out.println("세금: " + p2.tax);
        System.out.println("실수령액: " + p2.silsu);
    }
}

메소드를 사용한 경우

Pay.java

package classtest;

/**

- 데이터 클래스
  */
  class Pay {
  //멤버 변수, 인스턴스 변수, 필드
  private String name; //성명, 문자열 저장
  private int bonbong; //본봉, 숫자
  private int tax; //세금, 숫자
  private int silsu; //실수령액 본봉 - 세금, 숫자

  /**
    - 기초 데이타를 멤버변수에 저장한다
    - @param name
    - @param bonbong
      */
      public void setData(String name,int bonbong){
      this.name = name;
      this.bonbong = bonbong;
      }

  /**
    - 세금계산
      */
      public void calcTax(){
      tax = (int)(bonbong * 0.045 + 0.5);
      }

  /**

    - 실수령액 계산
      */
      public void calcSilsu(){
      silsu = bonbong - tax;
      }

  public void printPay(){
  System.out.println("--------------------");
  System.out.println("--- 8월 급여 내역 ---");
  System.out.println("--------------------");
  System.out.println("성명: " + name);
  System.out.println("본봉: " + bonbong);
  System.out.println("세금: " + tax);
  System.out.println("실수령액: " + silsu);

  }
  }

PayCalc.java

/**

- 데이터 이용 클래스, 시작 클래스
  */
  public class PayCalc {

  /**

    - 시작 메소드
    - @param args
      */
      public static void main(String[] args) {

      Pay p1 = new Pay();
      Pay p2 = new Pay();
      Pay p3 = new Pay();

      p1.setData("왕눈이", 2000000);
      p1.calcTax();
      p1.calcSilsu();
      p1.printPay();

      p2.setData("아로미", 2500000);
      p2.calcTax();
      p2.calcSilsu();
      p2.printPay();

      p3.setData("투투", 3000000);
      p3.calcTax();
      p3.calcSilsu();
      p3.printPay();


    }
    }

리턴값이 있는 메소드의 사용

PayCalc.java



/**

- 데이터 이용 클래스, 시작 클래스
  */
  public class PayCalc {

  /**

    - 시작 메소드
    - @param args
      */
      public static void main(String[] args) {

      Pay p1 = new Pay();
      Pay p2 = new Pay();
      Pay p3 = new Pay();

      p1.setData("왕눈이", 2000000);
      p1.calcTax();
      p1.calcSilsu();
      p1.printPay();

      p2.setData("아로미", 2500000);
      p2.calcTax();
      p2.calcSilsu();
      p2.printPay();

      p3.setData("투투", 3000000);
      p3.calcTax();
      p3.calcSilsu();
      p3.printPay();


    }
    }

Pay.java

package classtest;

/**

- 데이터 클래스
  */
  class Pay {
  //멤버 변수, 인스턴스 변수, 필드
  private String name; //성명, 문자열 저장
  private int bonbong; //본봉, 숫자

  /**

    - 기초 데이타를 멤버변수에 저장한다
    - @param name
    - @param bonbong
      */
      public void setData(String name,int bonbong){
      this.name = name;
      this.bonbong = bonbong;
      }

  /**

    - 세금계산
      */
      public int calcTax(){
      int tax = (int)(bonbong * 0.045 + 0.5);
      return tax;
      }

  /**

    - 실수령액 계산
      */
      public int calcSilsu(){
      int silsu = bonbong - calcTax();
      return silsu;
      }

  public void printPay(){
  System.out.println("--------------------");
  System.out.println("--- 8월 급여 내역 ---");
  System.out.println("--------------------");
  System.out.println("성명: " + name);
  System.out.println("본봉: " + bonbong);
  System.out.println("세금: " + calcTax());
  System.out.println("실수령액: " + calcSilsu());

  }
  }

클래스의 분리

Pay.java

package classtest;

/**

- 데이터 클래스
  */
  class Pay {
  //멤버 변수, 인스턴스 변수, 필드
  private String name; //성명, 문자열 저장
  private int bonbong; //본봉, 숫자

  /**

    - 기초 데이타를 멤버변수에 저장한다
    - @param name
    - @param bonbong
      */
      public void setData(String name,int bonbong){
      this.name = name;
      this.bonbong = bonbong;
      }

  /**

    - 세금계산
      */
      public int calcTax(){
      int tax = (int)(bonbong * 0.045 + 0.5);
      return tax;
      }

  /**

    - 실수령액 계산
      */
      public int calcSilsu(){
      int silsu = bonbong - calcTax();
      return silsu;
      }

  public void printPay(){
  System.out.println("--------------------");
  System.out.println("--- 8월 급여 내역 ---");
  System.out.println("--------------------");
  System.out.println("성명: " + name);
  System.out.println("본봉: " + bonbong);
  System.out.println("세금: " + calcTax());
  System.out.println("실수령액: " + calcSilsu());

  }
  }

PayCalc.java

package classtest;

/**

- 데이터 이용 클래스, 시작 클래스
  */
  public class PayCalc {

  /**

    - 시작 메소드
    - @param args
      */
      public static void main(String[] args) {

      Pay p1 = new Pay();
      Pay p2 = new Pay();
      Pay p3 = new Pay();

      p1.setData("왕눈이", 2000000);
      p1.calcTax();
      p1.calcSilsu();
      p1.printPay();

      p2.setData("아로미", 2500000);
      p2.calcTax();
      p2.calcSilsu();
      p2.printPay();

      p3.setData("투투", 3000000);
      p3.calcTax();
      p3.calcSilsu();
      p3.printPay();


    }
    }

메소드를 이용해 성적프로그램 만들기. Sungjuk, SungjukUse

Sungjuk.java

class Sungjuk{
String name = "";
int kuk = 0;
int eng = 0;
int tot = 0;
int math = 0;
int avg = 0;
}

SungjukMgr.java

public class SungjukMgr {

// ⓐ 값 초기화
public void setValue(){

}

// ⓑ 총점
public void calcTot(){

}

// ⓒ 평균
public void calcAvg(){

}

// ⓓ 출력
public void print(){

}


}

SungjukUse.java

public class SungjukUse {

public static void main(String[] args) {
    SungjukMgr mgr = new SungjukMgr();

    Sungjuk sungjuk = new Sungjuk();
    mgr.setValue(sungjuk); // 값 초기화
    mgr.calcTot(sungjuk);  // 총점 계산
    mgr.calcAvg(sungjuk);  // 평균
    mgr.print(sungjuk);

}


}

변수의 유효 범위(scope)

멤버 변수(Instance 변수)

  • 변수가 메소드 밖에 선언되는 변수를 말합니다.

  • 멤버변수, 인스턴스 변수, 필드라고 합니다.

  • 멤버 변수는 모든 메소드가 사용할 수 있습니다.

  • 메모리 모델에서 Heap 메모리를 이용합니다.

  • 변수의 사용이 끝나도 클래스의 객체 자체가 GC에 의해 회수 되기 전에는 할당받은 메모리를 계속 유지하게 됩니다. 따라서 불필요한 멤버 변수를 최대한 사용하지 않아야 메모리를 낭비없이 효율적으로 이용할 수 있습니다.

  • 변수 선언시 값을 주지 않아도 특정 값으로 초기화 됩니다.

지역 변수, Local Variable

  • 변수가 메소드안에 선언되는 것을 말합니다.

  • Stack 메모리를 이용합니다.

  • 메소드의 이용이 끝나면 자동으로 메모리가 회수됩니다.

  • 초기화를 해야 사용할 수 있습니다.

  • 블럭안에 선언: '{ }'안에서만 생명력을 가집니다.

    • Stack 메모리를 이용합니다.

Variable.java

public class Variable {
//멤버 변수, 인스턴스 변수, 필드, Heap
String movie = "트로이";

//지역변수가 없음으로 전역변수가 출력
public void show(){
    System.out.println("show 메소드 영역:" + movie);//트로이
}

//지역변수가 우선으로 출력됩니다. Stack
public void title(){
    String movie = "아마겟돈";
    System.out.println("title 메소드 영역:" + movie);
    System.out.println("title this.movie:" + this.movie);
}

public static void main(String[] args) {

    Variable v = new Variable();
    v.show();
    v.title();
}


}

Block.java

public class Block {
String Block="재미있는 영화";

public static void main(String[] args) {
    String b1="트로이";
    System.out.println("Movie:" + b1);//트로이

    {
       String b2="우주 전쟁";
       System.out.println("Movie:" + b2);
       int i=0;

       for(int j=0; j<5; j++){
         //j는 이 블럭 안에서만 유지됩니다.
       }
       //System.out.println("j:" + j);

       for(i=0; i<5; i++){
         //i는 외부에 선언되어 있어야 합니다.
       }
       System.out.println("i:" + i);

    }
    System.out.println("Movie:" + b1);
    //ERROR
    //System.out.println("Movie:" + b2);
}
Previous클래스Next값에의한 호출

Last updated 2 years ago