자바
기본 데이터 타입과 표현식
- int : 산술 연산이 가능한 정수 (232개의 서로 다른 값을 표현할 수 있다. 32비트 기계어 단어 하나로 표현 할 수 있다.)
- double : 산술 연산이 가능한 유리수 (64비트)
- boolean : 논리 연산이 가능한 [참,거짓]으로 구성된 집합
- char : 알파벳, 숫자, 기타 심볼들로 구성된 키보드로 입력 가능한 문자
타입 | 값의 집합 (범위) | 연산자 | 표현식 | 값 |
int | -2^31 ~+ -2^31 -1 사이의 값 (32비트 2의 보수) |
+ 덧셈 - 뺄셈 * 곱셈 / 나눗셈 % 나머지 |
5 + 3 5 - 3 5 * 3 5 / 3 5 % 3 |
8 12 15 1 2 |
double | 배정도 실수 (IEEE 754 표준에 정해진 64비트 값) |
+ 덧셈 - 뺄셈 * 곱셈 / 나눗셈 % 나머지 |
3.141 - .03 2.0 - 2.0e-7 100 * .015 6.02e23 / 2.0 |
3.111 1.9999998 1.5 3.01e23 |
boolean | true or false | && (and 논리곱) || (or 논리합) ! (not 논리부정) ^(xor 배타 논리합) |
true && false false || true !false treu ^ true |
false true true false |
char | 문자(16~비트) | 산술연산은 거의 사용되지 않음 |
기타 기본 데이터 타입
- long : 산술 연산이 지원되는 64비트 정수
- short : 산술 연산이 지원되는 16비트 정수
- char : 산술 연산이 지원되는 16비트 정수
- byte : 산술 연산이 지원되는 8비트 정수
- float : 산술 연산이 지원되는 32비트 부동소수점 실수
연산의 결과가 그 연산의 대상이 되는 데이터 타입과 동일한 데이터 타입을 가진다.
배열
- 에일리어싱 : 배열의 이름은 배열 전체를 대표한다. 배열 변수를 다른 변수에 대입하면 두 변수 모두 같은 배열을 가리키게 된다
- 에일리어싱은 찾기 힘든 미묘한 버그를 유발할 수 있다. 만약 배열의 복제본을 만드는것이 의도라면 새로운 배열을 선언, 생성, 초기화 하고 그 배열에 원본 배열의 값들을 복사해 넣어야 한다.
int[] a = new int[N];
...
a[i] = 1234;
...
int[] b = a;
...
b[i] = 5678; // a[i]도 이제 5678
static 메서드
정적 메서드는 수학의 함수와 역할이 비슷하여 다른 프로그래밍 언어들에서는 함수라 불린다.
각 정적 메서드는 실행될 명령문들의 나열로 이루어진다. 이 명령문들은 정적 메서드가 호출되었을 때 하나씩 순서대로 실행된다.
static 한정자를 통해 인스턴스에 종속된 메서드가 아닌 정적 메서드임을 표시한다.
메서드의 속성
- 인수는 값으로써 전달된다.
- 메서드의 이름은 오버로딩 될 수 있다.
- 메서드는 하나의 리턴값만 가질 수 있지만 함수 내에 리턴문이 여러개 있을 수 있다.
- 메서드는 부가 효과만 일으키고 아무것도 리턴하지 않을 수도 있다.
재귀(Recursion)
- 재귀호출은 종단 케이스를 가진다. 메서드의 첫 조건에 따른 리턴문이 들어간다.
- 재귀호출이 깊어 질수록 더 작은 문제를 다루게 된다.
- 재귀호출간에는 다루는 문제가 중첩되어서는 안된다.
숫자와 String을 상호 변환하기 위한 API
public class Integer | |
static int parseInt(String s) | s를 int 값으로 변환 |
static String toString(int i) | i를 String 타입 문자열로 변환 |
public class Double | |
static double parseDouble(String s) | s를 double 값으로 변환 |
static String toString(double x) | x를 String 타입 문자열로 변환 |
- 변수에 초깃값을 지정하지 않고 사용하면
- 컴파일 타임 에러가 발생하면서 소스 코드 안에서 초기화 되지 않은 변수를 알려준다.
- for문 과 while문 문법상 차이
- for문 : 루프 헤더가 루프 바디와 동일한 블록으로 취급된다. 따라서 루프 헤더에서 정의된 변수는 for문을 벗어나서는 유효하지 않다.
- while문 : 루프 헤더에서 정의된 변수가 while문 다음의 코드에서도 유효하다. 이러한 특성 때문에 for문 대신 while문을 사용하기도 한다.
- 자바 배열 선언방식
- int a[]; c언어에서 사용되는 방식
- int[] a; 자바에서 권장되는 형태 (변수a의 타입이 int[] 라고 더 명확하게 지정하게 된다.)
- 배열 인덱스가 0부터 시작하는 이유
- 기계어 프로그래밍에서 시작된 관례. 기계어에서 배열의 한 항목에 접근하기 위해서 배열의 시작 주소에 인덱스를 더한다. 인덱스가 1부터 시작한다면 첫 번째 항목에 해당하는 메모리를 낭비하게 된다. 낭비를 피하고자 배열 항목에 접근할 때마다 인덱스 1을 빼는 부가작업이 필요해진다.
출처 - 알고리즘(개정4판)
'알고리즘(개정4판)' 카테고리의 다른 글
1.2 데이터 추상화 (0) | 2024.01.13 |
---|