Home [Java 프로그래밍] 2강 - JAVA 기본 문법
Post
Cancel

[Java 프로그래밍] 2강 - JAVA 기본 문법

💡해당 게시글은 방송통신대학교 김희천 교수님의 'Java 프로그래밍' 강의를 개인 공부 목적으로 메모하였습니다.



학습 목차


  1. Java 프로그램과 기본 사항
  2. 자료형
  3. 연산자와 제어문

학습 개요


  • java 언어의 기본 문법과 기본 자료형을 숙지하며 리터럴 사용 방법 익힘
  • 자료형 변환에서 묵시적 변환과 명시적 변환의 차이를 이해
  • 연산자 종류와 각 연산자의 기능 이해
  • 변수의 종류를 용도별로 구분
  • 선택문과 반복문의 사용 방법 확인

학습목표


  1. java의 기본 자료형 나열 가능
  2. 변수의 종류를 나열하고 용도의 차이 설명 가능
  3. 연산자의 종류를 나열하고 기능 설명 가능
  4. 제어문의 종류와 기능 설명 가능



1. Java 프로그램과 기본 사항


1-1. Java 프로그램

  • 성적 처리를 위한 Java 프로그램
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    
    class Grade {
      int e; //영어 성적을 위한 필드
      int m; //수학 성적을 위한 필드
      
      void input_grade(int a, int b)
      {
        e = a; //영어 성적 입력
        m = b; //수학 성적 입력
      }
      
      void output_grade( ) {
        //총점 출력 메소드
        System.out.println(e+m);
      }
    }
    
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    
    public class GradeOutput {
      public static void main(String args[]) {
        Grade g1, g2; //성적을 표현하는 객체
        g1 = new Grade( ); // 객체 생성
        g2 = new Grade( );
        g1.input_grade(90, 85); // 성적 입력
        g2.input_grade(80, 80);
        g1.output_grade( ); // 총점 출력
        g2.output_grade( );
      }
    }
    

1-2. 식별자

  • 클래스, 변수, 메소드, 레이블 등의 이름
    1
    2
    3
    4
    5
    6
    7
    8
    
    public class HelloApplication {
      static String szMsg = "Hello, Java!";
    
      public static void main(String args[]) {
        int nTest = 0;
        System.out.println(szMsg);
        }
    }
    
  • 프로그래머가 작명
  • 작명 규칙
    • 대소문자 구분
    • 길이에 제한 없음
    • 영 대소문자, 한글, 숫자, _, $ 사용
    • 숫자로 시작할 수 없음
    • 키워드, 예약어(true, false, null) 불가
      ex) 2002WorldCup, my#class, class, World Cup, lee@knou
  • 식별자를 만들 때의 관례
    • 클래스
      • 첫 자는 대문자, 단어의 첫 글자는 대문자, 나머지는 소문자
        ex) Car, HelloWorld, MyClass, String
    • 메소드, 변수(필드)
      • 위와 같으나 첫 글자가 소문자
        ex) speed, myCar, gearArea()
    • 상수
      • 모든 문자를 대문자로 표기하고 단어 사이에 _ 넣어 구분
        ex) static final int NUM_GEARS = 6;
    • 변수의 경우 자료형을 표시하기 위한 접두어를 붙이기도 함
      ex) int nSpeed;
      ex) iString szStr1;

1-3. 키워드

  • 키워드
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    
      abstract
      assert
      boolean
      break
      byte
      case
      catch
      char
      class
      const
      continue
      default
      do
      double
      else
      enum
      extends
      final
      finally
      float
      goto
      if
      implements
      import
      instanceof
      int
      interface
      long
      native
      new
      package
      private
      protected
      public
      return
      short
      static
      strictfp
      super
      switch
      synchronized
      this
      throw
      throws
      transient
      try
      void
      volitile
      while
    
    • 의미가 미리 정해진 단어
    • 프로그램에서 정해진 의미로만 사용해야함



2. 자료형


2-1. 변수와 자료형

  • 변수와 자료형
    • 변수를 선언할 때, 저장되는 값의 자료형 선언
      ex) int i;
    • 메소드 선언 시, 반환 값의 자료형 선언
      • 함수에서 반환하는 값이 없을 경우 void 사용
    • 자료형에 따라 적용 가능한 연산이 다름
      ex) 1 + 3 → 숫자 계산
      ex) “a” + “bcd” → 문자열 합치기
  • 변수의 종류
    • 인스턴스 변수
      • 클래스 정의에서 static이 아닌 필드
      • 객체가 소유하는 변수
    • 클래스 변수
      • 클래스 정의에서 static 필드
      • 객체가 공유하는 변수
    • 지역 변수
      • 메소드 내부 또는 블록 내부에서 선언된 변수
    • 파라미터
      • 메소드 호출 시 전달하는 값 저장하기 위한 변수
      • 인자, 매개변수
        ex) args

2-2. 변수의 사용 범위

  • 지역 변수와 파라미터
    • 선언된 곳부터 해당 블록이 종료될 때까지 유효
      • 메소드가 실행될 때 만들어지고 끝나면 없어짐
    • 지역 변수는 초기값 지정 후 사용
    • 지역 변수 선언에서 접근 제어자를 사용하지않음
  • 데이터 필드(인스턴스 변수 or 클래스 변수)
    • 선언된 클래스 내부에서 사용 가능
    • 클래스 외부에서의 사용 가능 여부는 접근 제어자(access modifier)에 따라 다름
      ex) class Circle { protected int radius; …}

2-3. Java의 기본 자료형

분류키워드길이(byte)값의 범위
문자char2\u0000~\uFFFF
논리boolean1true 또는 false
정수byte1-128 ~ 127
정수short2-32768 ~ 32767
정수int4-2^31 ~ 2^31-1
정수long8-2^63 ~ 2^63-1
실수float4(+/-)약1.4E-45 ~ 3.4E38
실수double8(+/-)약4.9E-324 ~ 1.8E308

2-4. 리터럴

  • 상수
    • 리터럴(실제 데이터 값) 또는 값이 변하지 않는 변수
      ex) final int nConst = 3; //선언시 초기 값 지정
  • 정수형 리터럴
    • byte, short, int, long
    • 소문자 l이나 대문자L로 끝나면 long형, 나머지는 int
      • byte와 short는 허용 범위 안에서 int와 호환
        ex) 26L, 26, 0b11010(2진수), 032(8진수), 0x1a(16진수)
  • 실수형 리터럴
    • 소수점이 있는 숫자
    • f나 F로 끝나면 float형, 나머지는 double형
      ex) 123.4f, 123.4, 1.234e2
  • 문자형 리터럴
    • 1개의 문자를 표현하고 16비트 UNICODE로 인코딩됨
    • 단일 따옴표를 사용하고 Unicode 사용 가능
      • (0~65536)의 수와 호환됨
        ex) \u0000~ \uFFFF
        ex) (char)65 = A = \u0041
        ex) 가 = \uAC00

2-5. 참조형

  • 기본형을 제외한 모든 자료형
    • 참조 값(주소)을 가지는 자료형
  • 배열, 클래스 형 등
    image
    • int anArray[];
    • Circle myCircle;
    • String szStr;
  • 참조형 변수는 저장 공간에 참조 값 저장
    • 실제 데이터는 별도의 공간에 저장
  • 기본형 변수는 저장 공간에 값 자체를 저장
    image

2-6. 형변환

  • 묵시적 자료형의 변환
    • 작은 타입에서 큰타입으로는 자동 형변환
      • byte → short → int → long → float → double
      • 개발자 → 직원 → 인간 → 포유류
        ex) double d = 5; // 대입문 → 5.0 자동 형변환 되어 대입
        ex) System.out.println(“j=” + 10); // 수식 → 숫자 10이 문자열 10으로 자동 형변환
        ex) double res = Math.sqrt(2); // 메소드 호출 시 인자의 유형 → 2.0으로 자동 형변환
  • 명시적 자료형의 변환
    • 강제적 형변환
    • 큰 타입에서 작은타입으로 변환할 때 명시적 형변환 필요
      • 문법은 (자료형)피연산자
        ex) float f =(float)5.5; → double형 실수 float형 실수로 명시적 형변환



3. 연산자와 제어문


3-1. 연산자의 종류

구분연산자 예시
산술 연산자+ - * / % 단항연산자 + - ++ --
비교 연산자> >= < <= == != instanceof
논리 연산자&& || 단항 ! 삼항 ?: & | ^
비트 연산자비트논리 & | ^ ~ 비트이동 << >> >>>
대입 연산자= += -= *= /= %= &= ^= |= >>= <<= >>>=
형변환 연산자(자료형)
기타[] () .

3-2. 명령행 매개변수

  • 명령행 매개 변수
    • 프로그램을 실행할 때 전달하는 인자
    • main() 함수에 전달되는 인자
    • 문자열로 전달됨
      1
      
      java CommandInputTest Kim 123
      
      1
      2
      3
      4
      5
      6
      7
      
      public class CommandInputTest {
        public static void main(String args[ ]) { // 매개변수 빈칸으로 구분  
          System.out.println(args[0]);  
          int n = Integer.parseInt(args[1]); // 문자열을 integer 형식으로 변환  
          System.out.println(n);
        }  
      }
      

3-3. 문장의 종류

  • 수식문
    • 하나의 결과값으로 계산이 되어야함
      ex) a = b; // b의 값을 a에 대입
      ex) a++;
      ex) 함수 호출문
  • 변수 선언문
  • 제어문
    • 실행의 흐름 제어
  • 기타
    • 블록문
      • {}
    • 레이블문
      • 레이블: 문장
    • 예외처리문
      • try catch
    • 동기화문
      • synchronized

3-4. 제어문

  • 제어문
    • 프로그램의 실행은 기본적으로 위에서 아래로 순차 실행
    • 제어문은 실행 흐름을 바꿈
  • 제어문의 종류
    • 선택문
      • 조건에 따른 문장의 선택
      • if문, switch
    • 반복문
      • 조건에 따른 문장의 반복
      • for문, while문, do while
    • 점프문
      • 분기문
      • return문, break문, continue

3-5. 선택문

  • if
    • if (boolean-수식) 문장
  • if-else
    • if (boolean-수식) 문장 else 문장
  • if와 else의 짝짓기
    1
    2
    3
    4
    5
    6
    7
    8
    
    int a = 2;
    int b = 2;
      
    if (a == 1)
      if (b == 2)
        System.out.println("a was 1 and b was 2.");
    else // if (b == 2)와 짝지어진 else문
      System.out.println("a wasn't 1.");
    
    • else는 자기 짝이 없는 가장 가까운 if와 짝을 이룸
  • switch
    1
    2
    3
    4
    5
    6
    7
    8
    
    switch(n) {
      case 10 : System.out.println("10입니다.");
                break;
      case 20 : case 30: System.out.println("20이거나 30입니다.");
                break;
      default: System.out.println("모르겠습니다.");
                break;
    }
    
    • 다중 선택 구조
    • case 조건은 정수(long형 제외)와 호환되거나 String 값
    • default는 생략 가능하며, 어떤 case에도 해당되지 않은 경우 매칭
    • 만족되는 case를 실행한 후, break문 만날 때까지 계속 실행

6) 반복문

  • for-each
    1
    2
    3
    4
    5
    
    int[ ] array0fInts = {32, 87, 3, 589, 12, 1076, 2000, 8};
    for (int element : array0fInts) {
      System.out.print(element + " ");
    }
    System.out.println(array0fInts); // 32 87 3 589 12 1076 2000 8
    
    • 개선된 for
    • 배열이나 컬렉션의 원소들을 차례로 다룰 때 편리
    • 형식은 for ( 변수선언 : 배열 ) { 문장 … }

7) 점프문

  • break
    • break문을 포함하는 가장 가까운 switch문, for문, while문, do-while의 실행을 끝냄
      • 반복문이나 switch문을 빠져나갈 때 사용
    • break문 형식
      • break;
    • 레이블을 사용하여 특정 블록 또는 특정 반복문을 빠져나갈 수 있음
      • 중첩 for문에서 바깥 for문을 종료하는 경우
      • break 레이블; 형식
        • 반복문에 레이블을 지정하려면 레이블: 반복문
  • continue
    • 반복문 안에서 사용함
    • 가장 가까이 있는 반복문의 다음 반복을 위한 조건식으로 즉시 제어를 이동하기 위한 것
    • continue문 형식
      • continue;
    • 레이블을 사용하여 특정 반복문의 다음 반복으로 이동할 수 있음
      • 중첩 for문에서 바깥 for문의 다음 반복으로 갈 때
      • continue 레이블; 형식
  • return
    • 함수 실행 끝날 때 사용
    • return;
      • 함수 리턴 값이 존재하지 않을 경우
    • return 자료형값;
      • 함수 리턴 값이 존재할 경우



학습 정리


  • 변수의 종류로는 인스턴스 변수, 클래스 변수, 지역 변수, 파라미터가 있음
  • 인스턴스 변수는 객체가 소유하는 변수이며, 클래스 변수는 해당 클래스의 객체들이 공유하는 변수
  • java의 기본형을 나타내는 키워드는 byte, short, int, long, float, double, char, boolean 8가지
  • 클래스와 배열은 대표적인 참조형으로, 참조형 변수에는 참조 값(주소)이 저장
  • 명령형 매개변수란 main() 함수에 전달되는 인자로서, 프로그램을 실행시킬 때 프로그램의 이름 뒤에 나열하는 인자를 말함
  • 제어문은 프로그램의 실행 흐름을 제어하는 문장
  • break문, continue문, return문은 제어문 중 점프분(분기문)에 해당



연습문제


Q1

1
2
3
// 다음 중 클래스 이름에 해당하지 않는 것은?

// boolean

Q2

1
2
3
// 다음 정수 리터럴 중 값이 다른 하나는 무엇인가?

// 0b0000_1010

Q3

1
2
3
4
5
6
7
8
9
int[ ] a = {32, 87, 3, 589, 12 }; 
for (int i = 0; i < a.length; i++)   
      System.out.print( a[i] + " " );
// 아래 for문을 for-each문을 이용해 다시 작성하여라.

int[ ] a = {32, 87, 3, 589, 12 }; 
for (int element : a) { 
      System.out.print( element + " " );
}

[Java 프로그래밍] 1강 - JAVA와 객체지향 프로그래밍

[Java 프로그래밍] 3강 - JAVA 기본 문법