2023. 1. 12. 16:24ㆍJAVA(자바)
1. 변수와 자료형
(1) 변수
- 변수는 데이터를 담아두는 상자와 같다고 생각할 수 있다
(2) 자료형
- 변수에 저장되는 자료의 타입을 의미
- 자료형은 변수에 저장되는 값들의 형태와 허용 연산 등을 결정한다.
- 자바는 타입을 강력하게 규제하는 언어 -> 자바에서는 타입을 반드시 지정해야하고 타입이 다른 데이터는 변수에 저장 X
- 자바에는 크게 나누어서 기초형, 참조형의 두 가지 타입의 변수가 존재한다
(3) 변수의 선언과 초기화
- 변수 선언이란 컴파일러에게 어떤 변수를 사용하겠다고 미리 알리는 것이다
- 변수 선언은 세미콜론으로 문장을 마무리 지어야 한다
// 변수 선언 예
char c = 'a'
int i = 7;
double interestRate = 0.05;
(4) 변수의 이름
- 변수의 이름은 식별자의 일종으로 규칙을 가진다
식별자는 유니코드 문자와 숫자의 조합으로 만들어진다. 한글도 가능하다 |
식별자의 첫 문자는 일반적으로 유니코드 문자여야 한다. 첫 문자가 _,$로 시작될 수도 있으나 이는 특별한 경우로 제한하는 것이 좋다 |
두 번째 문자부터는 문자, 숫자, _, $ 등이 가능하다 |
대문자와 소문자는 구별된다 |
식별자의 이름으로 키워드를 사용해서는 안된다. 자바에서의 키워드는 다음과 같다. |
※ 키워드란?
- 키워드는 특별한 의미를 갖고 있는 명령어
- 미리 예약해놓은 단어이므로 변수로 사용해서는 안된다
기본자료형 : void, boolean, byte, char, float, double, int, short
변수 유형지정 : transient, volatile
제어문 : if, else, switch, case, for, while, do, break, continue, return
클래스 : class, interface, abstract, final, extends, implements, this, super, new, instanceof, static,
접근지정자 : public, protected, private
예외처리 : try, catch, finally, throw, throws
패키지 : import, package
상수 : null, true, false
메소드 유형 : native, synchronized
사용되지 않은 키워드 : const, goto
(5) 식별자 이름 작성 관례
- 변수의 이름이나 메소드의 이름을 식별자라고 하는데 일반적으로 다음과 같은 관례를 따라 식별자를 짓는다
종류 | 사용 방법 | 예 |
클래스명 | 각 단어의 첫 글자는 대문자로 한다 | StaffMember, ItemProducer |
변수명, 메소드명 | 소문자로 시작되어 2번쨰 단어의 첫 글자는 대문자로 한다 | width, payRate, acctNumber, getMonthDays(), fillRect() |
상수 | 상수는 모든 글자를 대문자로 한다 | MAX_NUMBER |
2. 기초형
(1) 정의
- 기초형은 바이트, 정수, 실수, 문자, 논리값 등의 일반적인 데이터를 나타내는 형으로 모두 8개가 있다
- 자바의 세상은 모두 객체로 되어있으나 기초형은 자주 사용되므로 성능 저하를 막기 위해 객체로 되어 있지 않다
- 만약 정수를 나타내는 기초형인 int를 객체로 포장해야하는 경우 int 대신 Integer 클래스를 사용하면 된다
데이터형 | 설명 | 크기(비트) | 기본값 | 최소값 | 최대값 |
byte | 부호 있는 정수 | 8비트 | 0 | -128 | 127 |
short | 부호 있는 정수 | 16비트 | 0 | -32,768 | 32,767 |
int | 부호 있는 정수 | 32비트 | 0 | -2,147,483,648(-21억) | 2,147,483,647(21억) |
long | 부호 있는 정수 | 64비트 | 0L | - 9,223,372,036,854,775,808 | 9,223,372,036,854,775,807 |
float | 실수 | 32 | 0.01 | 약 ± 3.4 x 10^(-38)(유효숫자 7개) | 약 ± 3.4 x 10^38(유효숫자 7개) |
double | 실수 | 64 | 0.0d | 약 ± 1.7 x 10^(-308)(유효숫자 15개) | 약 ± 1.7 x 10^(308)(유효숫자 15개) |
char | 문자(유니코드) | 16 | null | '\u0000'(0) | '\uFFFF'(65535) |
boolean | true 또는 false | 8 | false | 해당 없음 | 해당 없음 |
- byte, short은 거의 사용 x
(2) 정수형 상수
- 상수 또는 리터럴이란 x=100;에서 100과 같이 소스 코드에 쓰여있는 값을 의미한다
- 정수형 상수는 여러 진법으로 표시가 가능
- 보통 부호 있는 int 형으로 저장되는 것이 기본이다. -> if, 아주 큰 수를 다루고 있다면, 76L처럼 숫자의 끝에 l이나 L을 붙여서 long형으로 저장되도록 할 수 있다(long 변수에 값을 대입할 때는 L과 같은 접미사를 꼭 붙여야 파일 에러가 발생하지 않는다)
- JDK 7부터는 정수 상수 안에 밑줄 기호가 포함될 수 있다
int x = 123_456
변수 x에는 123456이 대입됨, 밑줄 기호는 무시된다!
(3) 기호 상수
- 자바에서는 리터럴을 기호 상수를 이용하여 번수처럼 표현할 수 있다.
- 리터럴을 숫자로 표현하는 것보다 변수처럼 이름을 주어서 사용하게 되면 프로그램이 읽기 쉬워진다
- 기호 상수는 변수 선언 앞에 키워드 final을 붙여서 만든다
final double PI = 3.141592; //final은 변경되지 않는다는 의미이다
(4) 논리형
- 논리형은 true 아니면 false만을 가질 수 있다
- 논리 연산을 수행하는 데 사용됨
class BooleanTest{
public static void main(String args[]){
boolean b;
b= ture;
System.out.println("b : " + b);
b = (1 > 2);
System.out.println("b : " + b);
}
}
//실행결과
b : true
b : false;
※ C나 C++에서는 정수값이 논리형으로 사용된다. 0이 false에 해당하고 나머지값이 true이다. 그러나 자바에서는 정수값을 논리형으로 형변환할 수 없다.
(5) 실수형
- 부동소수점형은 실수를 나타내는 데 사용된다
- 자바는 두 가지의 부동소수점형을 가지고 있는데 float과 double은 각각 32비트와 64비트를 이용하여 실수를 표현한다
package floating_point;
//원의 면적 구하기
//double은 실수형을 나타내므로 3.141592는 부동소수점형 자료형인 실수형을 사용하여야 한다
public class AreaTest {
public static void main(String[] args) {
double radius, area;
final double PI = 3.141592;
radius = 5;
area = PI * radius * radius;
System.out.println("원의 면적은 " + area);
}
}
(6) 실수형 상수
- 실수형 상수는 double형이 기본이다 따라서 실수형 상수를 float 변수에 저장하면 오류가 난다!
- 지고 있는데 float과 double은 각각 32비트와 64비트를 이용하여 실수를 표현한다
float temperature = 25.6 //25.6은 double형이므로 오류!
- 만약 64비트 값이 필요하지 않다면 더 작은 32비트 float형을 사용할 수 있다 5.63e2f와 같이 숫자의 끝에 f나 F를 붙이면 float형 상수가 된다.
float temperature = 25.6F //오류가 나지 않는다!
- JDK 7부터 실수형 상수에도 밑줄 기호를 사용할 수 있다.
(7) 문자형
- 문자형인 char는 하나의 문자를 저장할 수 있다.
- 자바에서는 유니코드(unicode)를 지원하기 위해 문자 하나가 16비트로 표현된다.
char ch1 = '가';
char ch2 = '\uac00'; //'가'를 나타낸다
※ 자바에서의 "와 '의 차이
- 파이썬, 자바스크립트와는 달리 C++나 자바는 ''와 ""로 char와 String을 구분한다
- 자바는 문자(Character)와 문자열(String)을 구분한다.
- 문자는 한 글자(char)를 의미하고, 문자열(string)은 여러 개의 문자가 결합한 것을 의미한다. 자바에서 문자는 '(작은 따옴표)로 감싸야 한다.
System.out.println('코');
System.out.println("코드브레이커");
만약 문자열을 작은 따옴표로 감싸면 에러가 발생한다.
하나의 문자를 큰따옴표로 감싼다고 에러가 발생하지는 않는다. 한 글자도 문자열이 될 수 있기 때문!
※ 만약 문자열 안에 큰 따옴표를 넣고 싶다면 어떻게 해야 할까?
▣ 이스케이프
- \(역슬래쉬)를 " 앞에 위치시키면 " 를 문자열의 시작과 끝을 구분하는 구분자가 아니라 단순히 문자로 해석하도록 강제할 수 있다. 이러한 기법을 escape(이스케이프)라고 한다.
System.out.println("egoing said \"Welcome programming world\"");
-> 아래와 같이 쓰면 오류남!
System.out.println("egoing said "Welcome programming world"");
※ 여러 줄을 표시하고 싶은데 어떻게 해야할까?
▣ 개행문자
- 여러 줄을 표시하고 싶을 때는 아래와 같이 개행 문자(\n)를 쓰면 된다.
System.out.println("egoing said. \n Welcome programming world. \n");
(8) 문자형 상수
- 문자형 상수는 하나의 유니코드 문자를 표현하며, 단일 따옴표를 사용하여 표시한다
특수문자 표기 | 의미 |
\\ | 역슬래시 |
\ | 연결자 |
\b | 백스페이스 |
\r | 캐리지 리턴 |
\f | 폼피드 |
\t | 수평 탭 |
\n | 새 라인 |
\' | 단일 따옴표 |
\" | 이중 따옴표 |
\udddd | 16진수 dddd에 해당하는 유니코드 ㅁ누자 |
\ddd | 8진수 ddd에 해당되는 문자 |
(9) 문자열
- 자바에서 문자열은 String 클래스로 제공된다
String s = "Hello World!";
System.out.println(s);
3. 연산자
(1) 연산자와 피연산자
- 연산자는 특정한 연산을 나타내는 기호를 의미
- 피연산자는 연산의 대상이다.
(2) 연산자(operator)
- 피연산자들에 대하여 지정된 연산을 수행하고 결과를 반환한다.
- 사칙 연산자들 사이에는 우선 순위(precedence)가 존재
- 우선 순위가 같은 연산자는 대입 연산자를 제외하고는 왼쪽에서 오른쪽으로 계산된다
- 대입 연산자는 오른쪽에서 왼쪽으로 계산된다
- 연산자는 산출 방법에 따라 산술, 부호, 문자열, 대입, 증감, 비교 연산자로 구분하고, 피연산자 수에 따라 단항, 이항, 삼항 연산자로 구분
단항 연산자🍖
- 단항 연산자는 피연산자가 단 하나뿐인 연산자를 말하며, 부호 연산자(+, -), 증감 연산자(++, –), 논리 부정 연산자(!)가 존재
부호 연산자(+, -)
- 부호 연산자는 양수 및 음수를 표시하는 +, -를 말한다. boolean 타입과 char 타입을 제외한 나머지 기본 타입에 이용할 수 있다
연산식 설명 + 피연산자 피연산자의 부호 유지 - 피연산자 피연산자의 부호 변경
증감 연산자(++, --)
- 증감 연산자는 변수의 값을 1 증가(++)시키거나 1 감소(- -)시키는 연산자를 말합니다. boolean 타입을 제외한 모든 기본 타입의 피연산자에 사용할 수 있다.
연산식 설명 ++ 피연산자 다른 연산을 수행하기 전에 피연산자의 값을 1 증가시킴 -- 피연산자 다른 연산을 수행하기 전에 피연산자의 값을 1 감소시킴 피연산자 ++ 다른 연산을 수행한 후에 피연산자의 값을 1 증가시킴 피연산자 -- 다른 연산을 수행한 후에 피연산자의 값을 1 감소시킴
논리 부정 연산자(!)
- 논리 부정 연산자는 true를 false로, false를 true로 변경하기 때문에 boolean 타입에만 사용할 수 있다.
연산식 설명 ! 피연산자 피연산자가 true이면 false 값을 산출
피연산자가 false이면 true 값을 산출
이항 연산자🍖🍖
- 이항 연산자는 피연산자가 2개인 연산자를 말하며, 여기에는 산술 연산자(+, -, *, /, %), 문자열 결합 연산자(+), 비교 연산자(<, <=, >, >=, ==, !=), 논리 연산자(&&, ||, &, |, ^, !), 대입 연산자(=, +=, -=, *=, /=, %=) 등이 있습니다.
산술 연산자(+, -, *, /, %)
- 산술 연산자는 사칙연산자인 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/)과 나머지를 구하는 %까지 총 5개입니다. 산술 연산자는 boolean 타입을 제외한 모든 기본 타입에 사용할 수 있다.
연산식 설명 피연산자 + 피연산자 덧셈 연산 피연산자 - 피연산자 뺄셈 연산 피연산자 * 피연산자 곱셈 연산 피연산자 / 피연산자 왼쪽 피연산자를 오른쪽 피연산자로 나눗셈 연산 피연산자 % 피연산자 왼쪽 피연산자를 오른쪽 피연산자로 나눈 나머지를 구하는 연산
비교 연산자(<, <=, >=, ==, !=)
- 비교 연산자는 피연산자의 대소(<, <=, >, >=) 또는 동등(==, !=)을 비교해서 true/false를 산출합니다. 대소 연산자는 boolean을 제외한 기본 타입에 사용할 수 있고, 동등 연산자는 모든 타입에 사용할 수 있습니다. 비교 연산자는 흐름 제어문인 조건문(if), 반복문(for, while)에서 주로 이용되어 실행 흐름을 제어할 때 사용
구분 연산식 설명 동등 비교 피연산자 A == 피연산자 B 두 피연산자의 값이
같은지 검사피연산자 A != 피연산자 B 두 피연산자의 값이
다른지 검사크기 비교 피연산자 A > 피연산자 B 피연산자A가
큰지 검사피연산자 A >= 피연산자 B 피연산자A가
크거나 같은지 검사피연산자 A < 피연산자 B 피연산자A가
작은지 검사피연산자 A <= 피연산자 B 피연산자A가
작거나 같은지 검사
논리 연산자(&&, ||, &, |, ^, !)
- 논리 연산자는 논리곱(&&), 논리합(||), 배타적 논리합(^), 논리 부정(!) 연산을 수행합니다. 논리 연산자의 피연산자는 boolean 타입만 사용할 수 있다.
구분 연산식 결과 설명 AND(논리곱) true && 또는 & true true 피연산자 모두가 true일 경우에만 연산 결과가 true true false false false true false false false false OR(논리합) true || 또는 | true true 피연산자 중 하나만 true 이면 연산 결과는 true true false true false true true false false false
구분 연산식 결과 설명 XOR(배타적 논리합) true ^ true true 피연산자가 하나는 true이고
다른 하나가 false일 경우에만 연산 결과가 truetrue false false false true false false false false NOT(논리 부정) ! true false 피연산자의 논리값을 바꿈 false true
삼항 연산자🍖🍖🍖
- 삼항 연산자(?:)는 3개의 피연산자를 필요로 하는 연산자를 말합니다. 삼항 연산자는 ? 앞의 조건식에 따라 콜론(:) 앞뒤의 피연산자가 선택된다고 해서 조건 연산식이라고 부르기도 한다.
4. 연산자의 우선 순위와 결합 규칙
5. 비트 연산자
연산자 | 의미 | 기능 |
~ | 비트별 NOT | 단항 연산자, 피연산자의 모든 비트를 반전시킴 |
& | 비트별 AND | 두 피연산자의 값이 둘 다 1인 경우만 1 |
^ | 비트별 XOR | 두 피연산자의 값이 다른 경우 1 |
| | 비트별 OR | 두 피연산자 중 하나라도 1인 경우 1 |
<< | 비트 왼쪽 이동 | a를 b만큼 왼쪽으로 이동, 빈 공간은 0으로 채움 |
>> | 비트 오른쪽 이동 | a를 b만큼 오른쪽으로 이동, 빈 공간은 음수는 1, 양수는 0으로 채움 |
>>> | 비트 오른쪽 이동(unsigned) | a를 b만큼 오른쪽으로 이동, 빈 공간은 무조건 0으로 채움 |
6. 형변환
(1) 정의
- 어떤 자료형의 값을 다른 자료형의 값으로 바꾸어주는 연산
(새로운 자료형) 수식;
- 예를 들어서 int 형 변수 x가 가지고 있는 값을 double로 형변환하여서 y에 대입하려면 다음과 같다
y = (double) x;
(2) 자동적인 형변환
- 자바는 필요할 때마다 자동적으로 형변환을 한다. 수식에서 서로 다른 자료형이 등장하면 자바 컴파일러는 그 중에서 가장 큰 타입으로 자동적으로 변환한다
double d = 2 + 3.5; //정수 2가 2.0으로 변환된 후에 3.5와 더해져서 5.5로 계산된다
(3) 축소 변환
- 더 작은 크기의 자료형에 값을 저장하는 형변환
- 실수형 변수를 정수형 변수에 저장하는 것이 그 예이다
- 이 변환은 정밀한 숫자나 큰 숫자를 나타내는 정보를 잃을 가능성이 있다
int i = (int) 12.5; //i에는 12만 저장
(4) 확대 변환
- 축소 변환의 반대
- 더 큰 크기의 변수로 값을 이동하는 변환
- 일반적으로 확대 변환은 안전한 변환
double d = (double) 100;
'JAVA(자바)' 카테고리의 다른 글
[JAVA 기초부터 훑어보기 PART2]07. 클래스와 객체 (0) | 2023.01.18 |
---|---|
[JAVA 기초부터 훑어보기]06. 조건과 반복 (0) | 2023.01.16 |
[JAVA 기초부터 훑어보기]04. 자바 프로그래밍 기초 (0) | 2023.01.12 |
[JAVA 기초부터 훑어보기]03. Eclipse(이클립스) 다뤄보기 (0) | 2023.01.10 |
[JAVA 기초부터 훑어보기]02. 자바 개발 도구 (0) | 2023.01.09 |