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 |