1. Java 소개

  1-1) Java 란?

    - 자바는 객체지향 프로그래밍 언어이다.

    - 자바로 작성된 프로그램은 운영체제의 종류에 상관없이 실행이 가능하기 때문에 운영체제에 따라 프로그램을 변경하지 않고도 실행이 가능하다. (JVM : Java Virtual Machine)

    - 이러한 장점으로 인해 자바는 다양한 기종의 컴퓨터와 운영체제가 공존하는 인터넷 환경에 적합한 언어로써 인터넷 발전과 함게 많은 사용자층을 확보할 수 있었다.

 

  1-2) Java 언어의 특징

  - 비교적 배우기 쉽다.

  - 운영체제에 대해 독립적이다.

    ▶ 자바 운용프로그램은 운영체제나 하드웨어가 아닌 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다.

  - 객체지향 언어이다.

    ▶ 자바프로그램은 대세로 자리잡은 객체지향 프로그래밍 언어 중의 하나로 객체지향 개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 순수한 객체지향 언어라는 평가를 받고 있다.

  - 자동메모리 관리 (GC : Gabage Collector)

    ▶ 자바로 작성된 프로그램이 실행되면 GC 가 자동으로 메모리관리를 해주기 때문에 프로그래머는 메모리를 따로 관리하지 않아도 된다.

  - 개발환경 (이클립스/IntelliJ) : 대체로 이클립스를 많이 선호함.

2. 변수 및 형변환

  2-1) 변수 (Variable)란?

  - 수학에서 변수란 '변하는 수'라고 정의하지만 프로그래밍에서의 변수란 '값을 저장할 수 있는 메모리 상의 공간'을 의미한다.

    ※ 변수란 : 단 하나의 값을 저장할 수 있는 메모리 공간 (램, RAM)

  - 다만, 하나의 변수에 단 하나의 값만 저장할 수 있으므로 새로운 값을 저장하면 기존의 값은 사라진다.

 

  2-2) 변수의 선언과 초기화

  ① 변수의 선언

     - 변수를 사용하려면 먼저 변수를 선언해야 하는데 변수의 선언방법은 다음과 같다.

     int number;

          - number 라는 이름의 변수를 선언

          - int(정수형)라는 변수 타입을 설정

          - 실수형 double

          - 문자열 char

     - 변수 타입은 변수에 저장될 값이 어떤 타입인지를 지정하는 것이다.

     - 자바는 정수형, 실수형, 문자형 등의 다양한 타입을 제공한다.

    ※ 변수를 선언하면 메모리의 빈 공간에 '변수 타입'에 알맞는 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 '변수 이름'을 통해 사용할 수 있다.

  ② 변수의 초기화

     - 변수를 선언한 이후부터는 변수를 사용할 수 있으나, 그 전에 반드시 변수를 '초기화(initialization)'를 해야한다.

      ▶ 선언과 동시에 초기화

           int number = 10;

      ▶ 선언과 초기화를 분리

           int number;

           number = 10;

     - "="은 수학에서 양변의 값이 같다는 뜻이지만 자바에서는 오른쪽의 값을 왼쪽(변수)에 저장하라는 뜻이다.

     ※ "=" 왼쪽에는 반드시 변수가 와야한다.

 

  2-3) 변수의 명명규칙

    - 대소문자가 구분되며 길이의 제한은 없다.

       int number;

       int nUmber;

       (서로 다른 변수)

    - 예약어를 사용해서는 안된다.

      if, for, while, class ... 등등 예약어를 변수명으로 사용할 수 없다.

      int if; (X)

    - 숫자로 시작해서는 안된다.

      int number1; (O), int 1number; (X)

    - 특수문자는 '_', '$' 만 허용된다.

    - 상수이름은 모두 대문자로 한다.

    ※ 변수이름은 짧을 수록 좋지만, 약간 길더라도 용도를 알기 쉽게 '의미있는 이름'으로 하는 것이 바람직하다.

 

      int categoryNumber;

      int category_number;

      final int MAX_NUMBER = 10; (상수)

  2-4) 변수의 타입

     값 (data)

           - 문자

           - 숫자 → 정수

                                  → 실수

    - 이러한 값의 종류에 따라 값이 저장될 공간의 크기와 저장형식을 정의한 것이 자료형(data type)이다.

    - 자료형에는 문자형, 정수형, 실수형 등이 있으며, 변수를 선언할 때는 저장하려는 값의 특성을 고려하여 가장 알맞는 변수의 타입으로 선택하면 된다.

 

    ◎ 기본형과 참조형

    - 자료형은 기본형과 참조형 두 가지로 나눌 수 있는데, 기본형 변수는 실제 값(data)을 저장하는 반면, 참조형 변수는 어떤 값이 저장되어 있는 주소 (memory address)를 값으로 갖는다.

    ① 기본형(primitive type)

      논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)

      ※ 계산을 위한 실제 값을 저장한다. (8개)

 

    ② 참조형(referance type)

      객체의 주소를 저장한다. 8개의 기본형을 제외한 나머지 타입

 

  2-5) 기본형(primitive type)   

종류 Type
논리형(boolean) true/false 중 하나를 값으로 가지며 조건식과 논리적 계산에 사용된다.
문자형(char) 문자를 저장하는데 사용되며 변수에 단 하나의 문자만 저장할 수 있다.
정수형 byte, short, "int", long (정수를 저장하는데 주로 사용되며 int가 많이 사용된다.)
실수형 float, "double" (실수를 저장하는데 사용되며 주로 double이 사용된다.)

※ 1byte = 8bit

bit > byte > KB > MB > GB > TB

Size 1 byte 2byte 4byte 8byte
논리형 boolean      
문자형   char    
정수형 byte short int long
실수형     float double

  2-6) 상수와 리터럴 (constant & literal)

   - 상수는 변수와 마찬가지로 값을 저장할 수 있는 공간이지만 한번 값을 저장하면 다른 값으로 변경할 수 없다.

   - 상수를 선언하는 방법은 변수와 동일하지만 변수타입 앞에 키워드 final 을 붙여주면 된다.

   - 상수는 반드시 선언과 동시에 초기화를 해줘야하며, 상수의 값을 변경하는 것은 허용되지 않는다.

 

   ① 리터럴 (literal)

    - 리터럴은 단지 우리가 기존에 알고 있는 '상수'의 다른 이름일 뿐이다. (하나의 값이라고 생각하자.)

    ▶ 변수  : 하나의 값을 저장하기 위한 공간

    ▶ 상수  : 값을 한번만 저장할 수 있는 공간

    ▶ 리터럴  : 그 자체로 값을 의미하는 것

 

  ② 상수가 필요한 이유

    int triangleArea = ( 20 * 10 ) / 2;

    final int HEIGHT = 10;   // 높이

    final int WIDTH = 20;   // 넓이

 

    int triangleAre = ( WIDTH * HEITGHT ) / 2;

    ※ 상수는 이터럴에 의미있는 이름을 붙여서 코드의 이해와 수정을 쉽게 만든다.

 

 ③ 리터럴 타입과 접미사

종류 접미사
논리형 없음
정수형 1, L
실수형 f, F (float)
문자형 없음
문자열 없음

 

  2-7) 형변환 (casting)

   - 형변환이란 변수의 타입을 다른 타입으로 변환하는 것

   - 종류에는 묵시적형변환(자동형변환), 명시적형변환(강제적형변환) 2가지가 있다.

   - 형변환하고자 하는 변수나 리터럴 앞에 변환하고자 하는 타입을 괄호()와 함께 붙여주면 된다.

   - 여기서 사용되는 괄호()는 '캐스트 연산자' 또는 '형변환 연산자'라고 한다.

 

    double d = 85.4;

    int score = (int)d;       // 강제형변환

    System.out.println(score);   // 85 (소수점 제외됨 , int 4byte이고, double 8byte 이기 때문에 일부 데이터가 손실된다.)

 

  - 큰 타입에서 작은 타입으로 변환하는 경우 크기의 차이만큼 잘려나간다.

  ※ 값 손실 (loss of data)가 발생할 수 있다.

    double d1 = 80;       // 자동형변환, 변수 값 앞에 "(double)"을 넣어줘도 된다.

    System.out.println(d1);  // 80.0

  - 반대로 작은 타입에서 큰 타입으로 변환하는 경우 값 손실이 발생하지 않는다.

'개발도전하기 > Java 기초' 카테고리의 다른 글

Java 기초 강의 4일차  (0) 2022.07.01
Java 기초 강의 3일차  (0) 2022.06.16
Java 기초 강의 2일차  (0) 2022.06.13
복사했습니다!