Development Project

Chapter02 자바 기본 프로그래밍 본문

Language/Java

Chapter02 자바 기본 프로그래밍

나를 위한 시간 2021. 12. 20. 04:19
  1. 자바 프로그램의 구조
    • /*
      * 예시 소스 파일 : 클래스이름1.java
      */
      
      // 클래스 선언
      접근제한자 class 클래스이름1{	
      	// 메소드이름1 메소드 선언
      	접근제한자 리턴자료형1 메소드이름1(자료형 변수이름, ...){ 
      		return 리턴값;
      	}
          
          // main() 메소드 선언, String[] args로 실행 인자를 전달 받음
          접근제한자 리턴자료형 main(String[] args){
          	자료형1 변수명1;
              자료형 변수명2 = 대입할값;
              
              // 메소드이름1 메소드 호출
              변수명1 = 메소드이름1(매개변수, ...);	
              
              //화면 출력 : 표준 출력 스트림에 의해 메시지 출력
              System.out.println(변수명1);
          }
      }
       
  2. 식별자
    • 클래스, 변수, 상수, 메소드 등에 붙이는 이름

    • 식별자 규칙
      - ‘@’, ‘#’, ‘!’와 같은 특수 문자, 공백 또는 탭은 식별자로 사용할 수 없 으나 ‘_’, ‘$’는 사용 가능
      - 유니코드 문자, 한글 사용 가능
      - 자바 언어의 키워드는 식별자로 사용불가
      - 식별자의 첫 번째 문자로 숫자는 사용불가
      - ‘_’ 또는 ‘$’를 식별자 첫 번째 문자로 사용할 수 있으나 일반적으로 잘 사용하지 않음
      - boolean리터럴(true, false)과 Null리터럴(null)은 사용불가
      - 길이 제한 X
      - 대소문자 구별

    • 식별자 이름으로 가능한 예시
      - name, student_ID, $fun, Monster3, 가격

    • 식별자 이름으로 불가능한 예시
      - 3Chapter, if, false, null, %calc

    • 좋은 식별자
      - 목적을 나타내는 충분히 긴 이름 (가독성↑) 
      - 클래스 : 대문자로 시작해서 각 단어의 첫번째 문제만 대문자로 표기
      - 변수/메소드 : 첫단어 이후 각 단어의 첫번째 문자는 대문자로 표기
      - 상수 : 모든문자를 대문자로 표기 
  3. 자바의 데이터 타입
    1. 자료형
      1. PrimitiveType (기본타입) = 변수의 저장 공간에 값 자체가 저장
        • 논리
          - boolean (true, false)
        • 문자
          - char (Unicode)
        • 정수
          - byte [ -128 ~ 127 ]
          - short [ -32,768 ~ 32,767 ]
          - int [ -2,147,483,648 ~ 2,147,483,647 ]
          - long [ -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 ]
        • 실수
          - float [ ± ( 1.40*10^(-45) ~ 3.40*10^38 ) ]
          - double [ ± ( 4.94*10^(-324) ~ 1.79*10^308 ) ]
      2. ReferenceType (참조 타입) = 변수의 저장 공간에 참조 값이 저장
        - 배열에 대한 레퍼런스 [ int[], float[], ... ]
        - 클래스에 대한 레퍼런스 [ String, Date, ... ]
        - 인터페이스에 대한 레퍼런스 [ Runnable, Enumeration, ... ]
    2. 변수 = 프로그램 실행 중에 값을 임시 저장하기 위한 공간
      • 변수 선언
        // 3개의 변수 선언
        char c1, c2, c3;
        
        // 선언과 초기화
        int a=1, b=1, c=1;
        
        // 변수 읽기와 저장
        radius = 10*5;
        c1 = 'r';
        weight = weight + 5.0;​
    3. 상수 = 실행 중 값 변경 불가
      • 상수 선언
        final double PI = 3.141592;​
    4. 리터럴 = 프로그램에서 직접 표현한 값
      • 논리 리터럴 : true, false 

      • 문자 리터럴
        • 기본
          char a = 'A';
          char b = '글';
          
          // 문자 'A'의 유니코드 값(0041) 사용
          char c = \u0041;
          
          // 문자 '글'의 유니코드 값(ae00) 사용
          char d = \uae00;
        • 특수문자
      • 정수 리터럴 [ 언더바( _ ) 아무 위치에 사용가능 ]
        // 2진수 : 0b로 시작
        antilogarithm_2 = 0b0101;
        
        // 8진수 : 0으로 시작
        antilogarithm_8 = 015;
        
        // 10진수 : 그대로
        antilogarithm_10 = 15;
        
        // 16진수 : 0x로 시작
        antilogarithm_16 = 0x15;
        
        // long 타입 리터럴의 경우
        long g = 24L;
      • 실수 리터럴
        // 기본형 : 실수 타입 리터럴은 double타입으로 컴파일
        double d = 0.1234;
        
        // .1234D와 .1234는 동일
        double w = .1234D; 
        
        // 1234E-4 = 1234x10-4이므로 0.1234와 동일
        double e = 1234E-4; 
        
        // float로 맞추고싶다면 f를 실수리터럴끝에 붙여야함
        float f = 0.1234f;​
    5. 타입 변환
      1. 자동 타입 변환(by 컴파일러) = 작은 타입은 큰 타입으로 자동변환
        // int(25)타입이 long(25L)으로 자동변환
        long m = 25; 
        
        // int타입(10)이 double타입(10.0)으로 자동변환
        double d = 3.14 * 10;​
      2. 강제 타입 변환(by 개발자) = 큰 타입이 작은타입으로 변환이 필요할때 강제변환
        // int(32bit) -> byte(8bit)
        // 0x0000012C	    0x2C
        byte b = (byte)300;	// b = 44
  4. 자바에서의 키 입출력
    • System클래스의 필드 in, out, err
      필드 선언 설명
      static InputStream in 표준 입력 스트림
      static PrintStream out 표준 출력 스트림
      static PrintStream err 표준 에러 출력 스트림
    • 입력
      • System.in
        - 키보드로부터 직접 읽는 자바의 표준 입력 스트림
        - 키 값을 바이트 데이터로 넘겨주므로, 응용프로그램이 문자 정보로 변환해야함

      • Scanner클래스
        - System.in에게 키를 읽게하고, 읽은바이트를 문자, 정수, 실수, 불린, 문자열 등 다양한 타입으로 변환하여 리턴
        - Scanner는 입력되는 키 값을 공백으로 구분되는 아이템 단위로 읽음 [ 공백문자 : ‘\t’, ‘\f’, ‘\r’, ‘ ’, ‘\n’ ]
        // import 필수
        import java.util.Scanner;
        
        public class Main{
        	public void main(String[] args){
        		// Scanner객체 생성 
        		// => System.in에게 키를 읽게 한 후, Scanner가 원하는 타입으로 변환하여 리턴
        		Scanner sc = new Scanner(System.in);
        
        		// 원하는 형식으로 입력받기
        		String name = sc.next();	// 공백전까지의 문자열 리턴
        		String stateMessage = sc.nextLine();	// 한줄 문자열 리턴
        		char gender = sc.next().charAt(0);
        		int age = sc.nextInt();
        		double weight = sc.nextDouble();
        		boolean single = sc.nextBoolean();
        
        		// hasNext() : 몇개를 입력받게 될지 모를때
        		// 새로운 입력이 들어오면 true 리턴, ctrl z 키가 입력되면 false 리턴
        		while(sc.hasNext()){
        			int a = sc.nextInt();
        		}
        	}
        }
    • 출력
      public class Main{
      	public void main(String[] args){
      		byte age = 23;
      		int weight = 70;
      		double height = 172.1;
              
      		System.out.print("---------------------신체검사 결과");
      		System.out.println("---------------------");
      		System.out.printf(" 나이 : %d, 몸무게 : %d, 키 : %f, ", age, weight, height);
      		System.out.printf("%s : %c 형", "혈액형", 'AB');
      	}
      }
      // 출력
      //---------------------신체검사 결과---------------------
      // 나이 : 23, 몸무게 : 70, 키 : 172.100000, 혈액형 : AB형
  5. 연산
    • 연산자의 종류
    • 연산자 우선순위
      => 괄호는 최우선순위=> 연산자가 같은 우선순위라면 왼쪽에서 오른쪽으로 처리!
      ( 대입 연산자, --, ++, +,-(양수 음 수 부호), !, 형 변환은 반대로)

    • 산술연산자 [ 더하기 : +, 빼기 :  -, 곱하기 : *, 몫 :  /, 나머지 : % ]
      * ArithmeticException( 0으로 나눌 수 없음 )
      * Infinity ( 실수인 0.0으로 나누면 무한대를 의미 )
      * 0.0/0.0 ( NaN 출력됨)
      * 자료형 byte, short의 산술 연산 모두 int로 변환되어 연산 수행

    • 증감연산
      연산자 내용 연산자 내용
      a++ a를 반환한 뒤에 a값 1 증가 ++a a를 1 증가한 뒤에 값 반환
      a-- a를 반환한 뒤에 a값 1 감소 --a a를 1 감소한 뒤에 값 반환
    • 대입 연산 [ =, +=, -=, *=, /=, %=, &=, ^=, !=, <<=, >>=, >>>= ] 
      - 연산의 오른쪽 결과는 왼쪽 변수에 대입

    • 비교 연산 [ <, >, <=, >=, ==, != ]

    • 논리 연산 [ NOT : !, OR : ||, AND : &&, XOR : ^ ]
      * &&와 ||의 경우, 왼쪽 피연산자만으로 전체 결과가 결정된다면 오른쪽 피연산자는 평가하지 않음

    • 조건 연산자 [ 삼항연산자 == 조건문 ? 참 : 거짓 ]

    • 비트 논리 연산 [ NOT : ~, OR : |, AND : &, XOR : ^ ]

    • 시프트 연산자 [ <<, >>, >>> ]

      - ( a<<b ) : a의 각 비트를 왼쪽으로 b번 시프트, 최하위 비트의 빈자리는 항상 0으로 채움
      - ( a>>b ) : a의 각 비트를 오른쪽으로 b번 시프트, 최상위 비트의 빈자리는 시프트 전의 최상위 비트로 채움
      - ( a >>> b ) : a의 각 비트를 오른쪽으로 b번 시프트, 최상위 비트의 빈자리는 항상 0으로 채움
  6. 조건문
    • if문
      if(조건식1){
      	// 조건식1의 값이 true일 때 실행
      }else if (조건식2){
      	// 조건식1의 값이 false이고 조건식 2가 trued일 때 실행
      }else{
      	// 조건식1의 값이 false이고 조건식 2가 false일때 실행
      }
    • switch문
      switch(값){
      	case 1:
          	// 값이 1일 때 실행
              break;
      	case 2:
          	// 값이 2일 때 실행
      	case 3:
          	// 값이 2이거나 3일때 실행
              break;
      	default:
          	// 값이 1, 2, 3 다 아닐 때 실행
      }​
      - case 문의 값은 문자, 정수, 문자열 리터럴만 허용 (실수X)

'Language > Java' 카테고리의 다른 글

Chapter06 모듈과 패키지 개념, 자바 기본 패키지  (0) 2021.12.28
Chapter05 상속  (0) 2021.12.27
Chapter04 클래스와 객체  (0) 2021.12.22
Chapter03 반복문과 배열 그리고 예외 처리  (0) 2021.12.20
Chapter01 자바시작  (0) 2021.12.19
Comments