Java 기초 다시 공부하기 5주차 - Java, 변수와 자료형, 연산자, 조건문, 반복문, 다차원 배열
1. Java
- 독립적인 플랫폼: 운영체제에 따라 코드를 재작성하는 과정이 필요없음
- 객체 지향 언어: 절차 지향적 언어에 비해 생산성과 보안성이 높음
- 자바 프로그램 작성/실행 과정
- 활용: 웹/모바일/엔터프라이즈 애플리케이션, 웹/앱 서버
- 플랫폼: Java SE(Standard Edition/기본 개발 환경), Java EE(Enterprice Edition/서버 기반 프로그램 개발 환경),
Java ME(Micro Edition/모바일, 임베디드 시스템 개발 환경)
2. 변수와 자료형
1) 변수(Variable)
- 데이터를 저장하는 메모리 공간에 붙여준 이름
int age = 20;
String country = "Korea";
- 이름 규칙: 문자와 숫자, _(underscore, underbar), $ 사용 가능, 숫자로 시작 x, 대소문자 구분, 공백 사용 x,
예약어(true, false, if, continue 등) 사용 x
- 표기법
카멜 표기법(camelCase) | 파스칼 표기법(PascalCase) | |
설명 | 가장 앞의 문자는 소문자, 나머지 단어의 첫 문자는 대문자 | 각 문자의 첫 문자를 대문자로 |
예시 | myName, iPhone, powerPoint | MyName, IPhone, PowerPoint |
2) 자료형(Data Type)
- 변수의 종류, 단위
- 변수 종류에 따라 담을 수 있는 데이터의 타입과 크기가 다름
(1) 숫자(Number) - 숫자 형태의 자료형
종류 | 예시 |
정수 | int intNum = 10; long longNum = 2147483648L; |
실수 | float floatNum = 0.1f; double doubleNum = 3.4028236E38; |
2진수, 8진수, 16진수 | // 10진수 12를 다른 진수로 표현 시 int number2 = 0b1100; int number8 = 014; int number16 = 0xC; |
(2) 부울(Boolean) - 참과 거짓을 나타내는 자료형
boolean isPass = true;
boolean isOk = false;
(3) 문자(Character) - 한 개의 문자 표현에 사용하는 자료형
char keyFirst = 'a';
char keySecond = 'b';
(4) 문자열(String) - 문자들로 이루어진 집합
* 문자열 메서드: equals, indexOf, replace, substring, toUpperCase(대문자로 변환)
String s1 = "Hello World!";
String s2 = "01234";
(5) StringBuffer - 문자열을 자주 추가하거나 변경할 때 사용
*스트링버퍼 메서드: append, insert, substring
StringBuffer sb1 = new StringBuffer("Hello World!");
(6) 배열(Array) - 많은 수의 데이터를 담을 수 있는 자료형
int[] array1 = {1, 2, 3, 4, 5};
char[] array2 = {'a', 'b', 'c', 'd', 'e'};
(7) 리스트(List) - 배열과 같이 여러 데이터를 담을 수 있는 자료형(추가로 여러 메서드 제공)
* 리스트 메서드: add, get, size, remove, clear, sort, contains
ArrayList list = new ArrayList();
list.add(1);
(8) 맵(Map) - key:value 형태로 데이터 저장
* 맵 메서드: put, get, size, remove, containsKey
HashMap<String, String> map = new HashMap<String, String>();
map.put("product", "kiwi");
map.put("price", "9000");
(9) 제너릭스(Generics) - 자료형 명시적으로 지정, 제한적으로 안정성을 높여주고 형변환을 줄여줌
ArrayList<String> al = new ArrayList<String>();
HashMap<String Integer> hash = new HashMap<String, Integer>();
3. 연산자
1) 기본 연산자
(1) 항과 연산자
- 단항 연산자: 항이 한 개(ex: num++)
- 이항 연산자: 항이 두 개(ex: 1+1)
- 삼항 연산자: 항이 세 개(ex: (3>1) ? 1:0)
(2) 대입 연산자(=)
- 우측 데이터를 좌측 변수에 대입(ex: int num = 100;)
(3) 부호 연산자(+, -)
- 부호를 나타내는 연산자(ex: +10, -10)
(4) 산술 연산자(+, -, *, /, %)
- 덧셈(+), 뺄셈(-), 곱셈(*), 나눗셈(/), 나머지(%)
-> ex: 10 % 3 == 1
(5) 증가/감소 연산자(++, - -)
- 값을 1만큼 늘리거나 1만큼 줄임
-> ex: num++, ++num, num--, --num
(6) 관계 연산자(>, <, >=, <=, ==, !=)
- 두 항의 값 크기 비교 (결과 값은 비교 결과에 따라 true 또는 false)
-> ex: 10>9, 5!=3
(7) 논리 연산자(&&, ||, !)
- 논리식에 대해 참 거짓 판단 (결과 값은 true 또는 false)
-> ex: (10 > 9) && (1 == 0) (10 > 9) || (1 == 0)
(8) 복합 대입 연산자
- 대입 연산자와 다른 연산자를 조합한 연산으로, 코드를 간결하게 작성할 때 사용
-> ex: num1 += num2;
num1 %= num2;
2) 비트 연산자
(1) 2진법
- 컴퓨터에서 데이터 표현에 사용하는, 2를 기반으로 하는 숫자 체계
(2) 2의 보수
- 2의 제곱수에서 빼서 얻은 이진수
-> ex: 2진수 3의 2의 보수: 11 → 01
(3) 비트 연산자
- 비트 단위로 연산
- 기본 연산자와 비교
(4) 비트 논리 연산자 (&, |, ^, ~)
- AND 연산자(&): 두 개의 비트 값이 모두 1인 경우에만 결과 1
(5) 비트 이동 연산자 (<<, >>, >>>)
- << 연산자: 비트를 왼쪽으로 이동
- >> 연산자: 비트를 오른쪽으로 이동
- >>> 연산자: 비트를 오른쪽으로 이동(부호비트 상관 없이 0으로 채움)
4. 조건문
1) if - 조건에 따라 무엇을 실행할지 판단하는 분기 구조
if (조건문 1) {
조건문 1을 만족할 때 실행할 내용;
} else if (조건문 2) {
조건문 2를 만족할 때 실행할 내용;
} else {
그 외의 상황에서 실행할 내용;
}
2) switch - 입력 값에 따라 어떤 case를 실행할 지 판단하는 분기 구조
switch (입력 값) {
case 입력 값 1:
실행할 내용;
break;
case 입력 값 2:
실행할 내용;
break;
...
default:
실행할 내용;
break;
}
5. 반복문
1) for - 주어진 횟수만큼 반복하여 실행
for (초기치; 조건문; 증가치;) {
반복하여 실행할 내용;
}
2) while - 조건문이 만족하는 동안 반복하여 실행하는 구조
- while과 do-while이 있음
while (조건문) {
반복하여 실행할 내용;
}
do {
반복하여 실행할 내용;
} while (조건문);
6. 다차원 배열
1) 일차원 배열
int[] array1 = {1, 2, 3, 4, 5};
char[] array2 = {'a', 'b', 'c', 'd', 'e'};
2) 이차원 배열
자료형 변수명 초기화 자료
int[][] array3 = {{1,2,3}, {4,5,6}};
행 열
int[][] array4 = new int[1][2];
3) 다차원 배열
int[][][] array5 = {{{1,2}, {3,4}}, {{5,6}, {7,8}}};