[2023.09.19] 개발자 교육 2일 차 : 강의-변수, 문서작성[구디 아카데미/김승수 강사님]

DaramGee·2023년 9월 19일

오늘 정리

인스턴스화란, 컴파일된 클래스를 호출하는 것이고, 이를 통해 재사용성, 이식성을 갖는다.

변수란, 기능을 하도록 여러 값이 들어가는 것이고, 선언위치와 값의 속성에 따라 여러 종류가 있다.(전역변수, 지역변수, 정적변수/int, double, boolean 등)

복습

  • 코딩이란? 약속에 따라 컴퓨터가 이해할 수 있는 언어로 문서를 작성하는 것
  • 약속이란? 클래스 선언, 메인메소드 선언, 선언부 작성(변수, 메소드)
  • 클래스란? 변수와 메소드로 구성되어 있음. {}
    • 변수는 저장소
    • 메소드는 기능, 배포, 실행, ()
  • 코딩을 실행하기 위해서는 JVM이라는 처리주체를 사용하여 컴파일을 해야 함
    • JVM은 bin, src 폴더로 구성됨.
  • 컴파일이란? 고급언어를 저급언어로 바꾸는 것, .java를 .class로 바꾸는 것
  • 인스턴스화(객체화)란?
    • 컴파일된 클래스를 호출하는 것, 전역변수를 호출할 수 있음.
    • 메소드와 변수를 모아 놓은 것에 불과한 클래스를 사용할 수 있도록 해당 클래스 타입의 객체명을 선언하고 값을 넣어줘서, 해당 클래스의 변수나 메소드를 사용 가능한 상태로 만드는 것

  • 프로젝트 복습
    • 작업공간 → 프로젝트 생성 → 패키지 생성 → 클래스 생성
(public) class 클래스명{
		변수선언
		메소드             //변수선언 -> 호출 -> 소유주는 클래스 -> 인스턴스화
}

사전 다운로드

자바 tip

  • 메인메소드
    • 다른표현
      • 메인스레드(가장 먼저 실행되기 -> 우선순위를 정할 수 있음)
      • 엔트리 포인트
      • 콜백함수(개발자가 호출하지 않아도 가장 먼저 실행)라고도 함.
    • 파이썬과의 가장 큰 차이점은 실행 순서를 정할 수 있다는 것
    • 메인메소드가 있어야 실행할 수 있고, 생략되면 실행되지 않음.
    • 메인메소드는 선언 시 static이 있음(기타 수정자) - 싱글톤(하나, 공유)
      • static이 있으면 컴파일을 하는 것에 제약이 있음.
  • 에러의 종류
    • 컴파일타임 에러(기초) : convention(약속)을 지키지 않았을 때 발생, 클래스 생성 x, 실행 x
    • 런타임 에러(중급) : 논리에 오류가 있어 실행 시 발생, exception →에러 해결은 재밌게 프론트엔드 언어부터 시작
  • 공부순서
    • 생각하기 → 말하기 → 코딩하기
  • 표준 약속
    • 클래스는 대문자로 시작
    • 그 외는 카멜형식으로 작성
  • 메소드
    • 메소드 선언(메소드 뒤에 {})
    • 메소드 호출(메소드 뒤에())
  • 단축키
    • ctrl + alt + 방향키(복붙)
    • alt + shtift +x & j

오전 강의

실습 정리

package com.step1;

public class Variable3 extends Object{
	//중급으로 가려면 타입을 결정할 수 있어야 하고, 갯수까지도 결정할 수 있어야 한다.
	public void account(int z, int y) { //파라미터 자리에 선언된 변수는 지변이고,선언만 되었고,
                                      //17번 라인 메소드가 호출될 때 값이 결정됨
		System.out.println("account 호출 성공");
		System.out.println(z); //1 - 
		System.out.println(y); //2 - call by value
	}
	//사용자 측 개발자가 임의의 메소드를 얼마든지 선언, 구현할 수 있음.
	//컴파일을 하는 언어는 컴파일 타임에 JVM이 문법체크를 함. -> JAVA는 다른 언어보다 안전, 일관성, 공정하다
	public static void main(String[] args) { 
		//insert here - 내가 정의한 메소드 account 호출하기
		//내 안에 정의된 메소드라 하더라도 static영역 안에서 non-static(스태틱이 없는) 메소드를 호출하려면 
		//반드시 인스턴스화 할 것(메인 메소드 앞에는 static이 있기 때문에)
		//주소번지.or인스턴스변수.해당메소드가 선언된 소유주.account(1,2);
		Variable3 v = new Variable3();
		v.account(1,2);
		v.account(1); //파라미터와 갯수가 다르면 JVM이 같은 메소드 이름이어도 다른 메소드로 인식한다.
		v.account("호출");//파라미터와 타입이 다르면 JVM이 같은 메소드 이름이어도 다른 메소드로 인식한다.
	}
}
  • 지역변수를 선언할 수 있는 위치는 메소드 안에서 하거나 파라미터 자리에 할 수 있음.
  • 파라미터 자리란 메소드 괄호 안을 말하며, 사용자가 입력한 값을 받아오는 자리, 그 자리에 선언된 변수는 지역변수여서 초기화가 반드시 필요 → 메소드를 호출할 때 초기화 값이 결정
  • 그 괄호 안에서는 오직 선언만 가능함(초기화는 불가)
  • 사실, 메인 메소드 부분은 시스템, 사용자가 결정하는 부분이어서 나중엔 작성을 줄이는 방향으로 진행 예정
  • 인스턴스화 방법
    • 자체 메소드도 non-static인 경우, 인스턴스화 필요
    • 다른 클래스의 메소드를 가져와서 사용 가능(인스턴스화, 재사용성, 이식성)
    • 주소번지 or 인스턴스변수.해당 메소드가 선언된 소유주.메소드();

강의 목적 → 변수(Variable) 이해와 선언

변수 정리

  • 변수 선언 → (접근제한자) 타입 변수이름 대입연산자 값;
    • 접근제한자 : public 또는 private
  • 변수의 종류 : 8가지 중 일부만 학습
  • 변수의 종류
    • 참조형 타입(reference data type) : 변수 호출, 주소번지, 클래스 인 것은 모두 여기에 해당, 레퍼런스 타입(주소 번지), . 인스턴스화(필수 예약어 new)
    • 원시형 타입(primitive data type) : 호출하면 값이 나옴. → 한 번에 하나만 담을 수 있음

정리표

종류할당되는 메모리 크기타입표시
int4byte원시형
double8byte원시형
boolean8byte원시형
String1byte참조형-
  • 인스턴스 변수
    • 인스턴스화에 사용된 변수
    • 인스턴스 변수로 호출할 수 있는 건 전역변수 뿐이다.(지역변수 불가)
  • 선언위치, 붙는 수정자에 따른 분류
    • 전역변수(global) :

      • 인스턴스 변수 호출 o, 초기화 생략o(생성자가 대신 해주고, 기본값이 저장해주고 있다.)
      • 인스턴스 변수.변수 → 메인메소드에서 호
    • 지역변수(local) :

      • 인스턴스 변수 호출x, 컴파일x, 초기화 생략x
      • local variable(내 pc에서만), automatic variable(메소드에서 사용 후 자동으로 사라져서)
    • 정적변수(static) : ‘클래스타입.변수명’으로 사용(싱글톤, 하나다, 공유된다)

      int     i   =  0;
      타입   이름  =;
      ----------
                   ----    
        (선언)    (초기화)
  • 변수 전환
    • 강제형전환(캐스팅 연산자 괄호를 활용 → i = (int) d;
    • 괄호 안에는 왼쪽 타입명을 적는다 → 대입연산자는 오른쪽 값이 왼쪽으로 들어가기 때문
    • 치환할 때, 더 큰 타입은 작은 타입에 담을 수 없음

연산자

  • 대입연산자 = → 오른쪽에는 더 작은 것이 와야 함. 오른쪽의 값이 왼쪽으로 들어감.
    • int i = 0; ((접근제한자) 타입 이름 = 값;) → i 변수에는 0 값이 들어감.(초기화)
    • 초기화는 위치에 따라 결과가 달라지기 때문에 중요(중급)
  • 다트연산자 . → 앞에 소유자가 나옴, 다른 말로 ‘주소 번지, 고급언어, 인스턴스 변수’

디버그 실행

  • 방법
    • 해당행 선택, 마이너스, 화살표 표시, 북마크 더하기(리본), 디버그 실행(alt + shift + d & j)
  • why?
    • 각 변수의 생성여부, 생성되는 주소번지 확인 가능
    • 각 클래스 내부의 변수 확인 가능, 값을 언제 갖는지 확인

변수 종류(자세히)

  • 변수크기 :
  • int(정수)
  • double
  • boolean
    • True or False 값을 갖고 조건문, 반복문에서 사용 → 중요

      public class Boolean1 {
      
      	public static void main(String[] args) {
      		boolean isOk = false; //boolean 타입에는 접두어로 is를 붙임
      		isOk = true;
      		if(isOk) { //false
      			System.out.println("괄호 안 조건식이 true일 때 실행");
      		}else {
      			System.out.println("false일 때 실행");
      		}
      	}
  • static
    public class Static1 {
    	//아래 변수는 모두 원시형 타입이라 변수 호출 시 값이 출력됨
    	//참조형 변수는 호출하면 주소번지가 출력됨
    	int i = 1; //정적 변수는 클래스급, 하나만 생성
    	static int j = 2;
    	public double d = 0.5;
    	public void methodA() {
    		System.out.println("메소드A 호출 성공"); //꼭 호출해보는 습관 들이기!!
    	}
    	public static void methodB() {
    		System.out.println("메소드B 호출 성공");
    	}
    	public static void main(String[] args) {
    		Static1 s = new Static1();
    		System.out.println(s.i); // i는 non-static 이라 직접 접근 불가능하여 인스턴스화 필요
    		System.out.println(j); // 변수 j 선언 시 static을 붙여서 인스턴스 변수 없이 호출 가능
    		//insert here 0.5 출력해 보세요(변수 d)
    		System.out.println(s.d); //인스턴스변수.변수로 호출
    		s.methodA(); //static이 없어 불가 -> 해결 : 앞에 다트연산자 사용하여 추가
    		methodB();
    	}
    }

소스 리뷰 - 코드를 작성하는 convention(약속, 규칙) 확인

0개의 댓글