사실 자바를 이미 공부했었고, 대학교 재학 시절 A+ 받은 과목이라(자랑자랑) 이번 코드프레소 자바 입문 수업은 무난히 쉬웠던 부분이였다. 그러나, 프로그래밍에 있어서 늘 겸손해야 하므로 쉬어도 꾸준히 강의를 수강했다.
앞으로 객체지향, 예외 처리 등 다음 수업을 수강하면 찍소리도 못할 수 있기에....
라이브 강의로 연습문제를 풀었는데 입문자에게 적당한 난이도라고 생각한다.
그래서 오늘은 이번 강의에서 사용된 자료형과 연산자, 조건문, 배열, 반복문 개념, 연습문제 리뷰 정도 포스팅 할려 한다.
실습 환경 구축은 구글에 " 인텔리제이 Java 설치 " 만 검색해도 많은 글이 나오고, 강의 내용과 비슷하므로 관련 리뷰는 안할 것이다.
코드프레소 Java 웹 개발 체험단 활동 중 처음 시작하는 Java 프로그래밍 강의에 대해 포스팅할 것이다.
1. 자료형(Date Type) 및 연산자(Operator)
자료형이란 문자형, 정수형, 실수형 등의 데이터의 형태이다.
프로그래밍 언어는 다양한 종류의 데이터를 저장할 수 있게 지원
- 기본 자료형: 값 자체를 저장
- 참조 자료형: 객체에 대한 참조 정보를 저장
구분 | 자료형 | 크기 (bit 기준) | 표현 값 |
정수형 | byte | 8bits | -128 ~ 127 |
short | 16bits | -32768~32767 | |
int | 32bits | -2147483648~21483647 | |
long | 64bits | -9223372036854775808~9223372036854775807 | |
실수형 | float | 32bits | 1.40239846e-45f ~3.40282347e+38f |
double | 64bits | 4.94065645841246544e-324~1.79769313486231570e+308 | |
문자형 | char | 16bits | 0~65,535 |
논리형 | boolean | - | true or false |
기본 자료형
정수 자료형
- 크기에 따라 더 큰 값을 저장 가능
- 자료형의 크기보다 더 큰 값을 저장 시 에러 발생 (overflow)
- int 범위를 넘어서는 숫자를 사용하기 위해서는 숫자 뒤에 L 접미사 필요
- 자바 컴파일러가 숫자 값을 default로 int형으로 판단
실수 자료형
- double이 float 보다 더 크고 정확한 실수를 저장 및 연산 가능
- float 값에는 접미사 f 필요
문자 자료형
- 1개의 문자를 저장
- 작은 따옴표(' ')를 사용하여 값을 표현
- 큰 따옴표(" ")는 문자열을 의미, char에 저장 불가
- 2개 이상의 연속된 문자(문자열을 저장 불가
논리 자료형
- 참(true) 또는 거짓(false)을 저장하는 자료형
참조 자료형
- String
- Array
- Collections(List, Map, Set, ....)
- 개발자가 만든 객체
문자열 자료형
- 하나 이상의 연속된 문자들의 집합을 저장
- 큰 따옴표를 사용하여 표현
- String은 객체이기 때문에 속성과 행동을 갖고 있다.
- String변수의 메소드(행동) 호출, 문자열변수명.메소드이름()
- String의 length()라는 메소드가 존재
- 문자열변수명.length() : 문자열의 길이를 가져온다.
- String의 toLowerCase(), toUpperCase() 라는 메소드가 존재
- 문자열변수명.toLowerCase() : 문자열을 소문자로 변환
- 문자열변수명.toUpperCase() : 문자열을 대문자로 변환
※ Tip: 카멜 표기법
카멜(camel)은 낙타라는 의미를 가지고 있다. 한마디로 표기법이 낙타의 혹처럼 생겼다고 해서 이런 명칭을 지었다. 카멜 표기법을 대표적으로 채택한 언어는 자바(Java)진영이며 만약 자바 언어를 개발하는데 다른 표기법을 쓰는 사람이 있어서 물어보면 십중팔구 주언어가 다른 언어인 사람인 경우가 많다.
연산자(Operator)
프로그래밍 언어에서 연산자란 특정 작업을 수행하는 기호로 연산자는 피연산자가 필요하다. 또한 연산자에 의한 연산은 결과가 존재하다.
연산자 그룹 | 설명 | 연산자 예시 |
대입 연산자 | 값을 특정한 변수에 대입하기 위한 연산자 | =, +=, -=, *=, /= |
산술 연산자 | 숫자 값을 대상으로 수학적 연산을 하기 위한 연산자 | +, -, *, /, %, ++, -- |
비교 연산자 | 두 개의 값을 비교하기 위한 연산자 | ==, !=, >, <, >=, <= |
논리 연산자 | 다양한 조건들이 결합된 논리식의 결과를 판단하기 위한 연산자 | &&, ||, ! |
비트 연산자 | 비트 단위의 연산을 하기 위한 연산자 | &, |, ^, ~ |
대입 연산자
- 값을 변수에 저장하기 위한 연산자
- 대입 연산자의 왼편에 저장 대상 변수명
- 대입 연산자의 오른편에 저장할 값 또는 식이 위치
- 변수명 = 값 또는 식
산술 연산자
수학적 연산을 위한 연산자 (덧셈, 뺄셈, 곱셈, 나눗셈...)
연산자 | 설명 | 연산자 예시 |
+ | 덧셈 연산 | x + y |
- | 뺄셈 연산 | x - y |
* | 곱셈 연산 | x * y |
/ | 나눗셈 연산, 몫을 계산 | x / y |
% | 나머지 연산, 나눗셈 연산 후 나머지를 계산 | x % y |
++ | 기존 값에서 1을 증가 | ++x, x++ |
-- | 기존 값에서 1을 감소 | y--, --y |
증감 연산자
연산자의 위치에 따라 결과가 다름
++x | x 값을 먼저 1증가 시킨 후, x를 사용 |
--x | x 값을 먼저 1감소 시킨 후, x를 사용 |
x++ | x 값을 먼저 사용한 후, x 값을 1증가 |
x-- | x 값을 먼저 사용한 후, x 값을 1감소 |
증감 연산자 같은 경우 반복문에서 많이 사용된다. 증감 연산자를 변수 앞에 쓸지, 뒤에 쓸지, 하나만 잘못써도 값이 1차이가 나서 간단한 실습이라면 몰라도, 프로젝트같은 경우 시스템 결과에 오류나지 않도록 주의해서 사용해야 한다.
학부 수업으로 C프로그래밍 실습을 수강했는데 이 순서 하나로 실습 한 문제만 여러 번 제출하고 겨우 통과했던 기억이....ㅠ
비교 연산자
- 두 개의 피연산자의 동등 여부 및 크고 작음을 비교
- 비교 연산자의 결과는 boolean 값
- 조건문이나 반복문에서 주로 적용됨
연산자 | 연산자 예시 | 설명 |
== | x == y | x와 같은가? |
!= | x != y | x와 y가 다른가? |
> | x > y | x가 y보다 큰가? |
< | x < y | x가 y보다 작은가? |
>= | x >= y | x가 y보다 크거나 같은가? |
<= | x <= y | x가 y보다 작거나 같은가? |
문자열은 new 키워드로 String 객체 생성이 가능하다.
이 점에서 String 변수와 String 객체를 비교하면
값은 false, true 순으로 나온다.
- 참조 변수는 객체에 대한 참조 값을 저장
- 동등 연산자 사용 시 참조 값에 대한 비교를 수행
- 실제 객체 간의 동등 여부를 비교하기 위해서는 equals 메서드를 사용
연산자의 우선 순위
- 각 연산자는 우선 순위가 있음
- 우선 순위를 외울 필요는 없음
- 중요한 것은 우선순위가 존재
우선순위를 외울 필요가 없는 것이 괄호를 활용하여 연산의 우선순위를 명시할 수 있으며, 명시함으로서 결과를 쉽게 알 수 있다. 또한 코드의 가독성이 향상된다.
형 변환 (Conversion / Casting)
특정 자료형의 값을 다른 자료형으로 변환하는 것
기본 자료형 간의 형 변환의 종류
- 확장 형 변환: 작은 크기의 자료형에서 더 큰 크기의 자료형으로 형 변환
- 축소 형 변환: 큰 크기의 자료형에서 더 작은 크기의 자료형으로 형 변환
확장 형 변환
- 작은 크기의 자료형에서 더 큰 크기의 자료형으로 형 변환
- byte - short - int - long - float - double
- 자동으로 형 변환이 수행된다.
축소 형 변환
- 큰 크기의 자료형에서 더 작은 크기의 자료형으로 형 변환
- double - float - long - int - short - byte
- 데이터가 손실 될 수 있다. (주의)
- 개발자가 어떤 타입으로 변환 시킬 지 명시 (명시적 형 변환)
※ 나중에 객체지향이나 스프링 부트를 하게 되면 이 명시적 형 변환이 드문드문 사용될 때가 많다. 그러니 이 개념은 중요하다고 할 수 있다. 왜냐면 변수가 아닌 객체를 형 변환해서 사용되기 때문이다.
정수형의 Overflow, Underflow
- 특정 자료형이 표현할 수 있는 값의 범위를 넘어설 때
- byte 형의 표현 범위는 -128 ~ 127
- 만약 128 또는 -129를 byte 형 변수에 형 변환하여 저장하면 Overflow나 Underflow가 발생된다.
범위를 넘어선 경우도 정말 중요하다. 코딩테스트나 알고리즘 수업 공부를 하다보면 다들 한번 쯤 겪었을 내용이다.
일반적으로 int에서 int로 형 변환하면 범위를 넘어서는 일이 거의 없겠지만 만약 축소, 확장 형 변환을 하면(char에서 int, int에서 char) Underflow, Overflow가 발생된다. C에서는 atoi(), itoa() 라는 메서드가 있지만 아마 Java는 Integer.toString(int), toInt(char) 이런 식의 메서드가 사용된 걸로 안다.
이를 주의하기 위해 영문자, 숫자의 시작 아스키 코드만 여러 번 참고하여 암기하는 것도 좋은 방법이다. (A는 65, 이런 식으로)
'Java' 카테고리의 다른 글
Java - 상속, 다형성, 메소드 오버라이딩, 컬렉션 (0) | 2022.01.25 |
---|---|
Java - 객체지향 설계, 클래스, 생성자, 메소드 오버로딩 (2) | 2022.01.21 |
Java 입문 (제어문 및 연습문제 리뷰) (2) | 2022.01.17 |