일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- dynamic programming
- Math
- simulation
- Matrix
- implement
- sorting
- 코테
- Counting
- database
- geometry
- bit manipulation
- array
- Tree
- greedy
- 자바
- Method
- 파이썬
- SQL
- two pointers
- Class
- hash table
- 코딩테스트
- Binary Tree
- Number Theory
- Stack
- 구현
- Data Structure
- string
- java
- Binary Search
- Today
- Total
목록자바 (584)
코린이의 소소한 공부노트

조건/대입 연산은 각각 조건/대입 연산자를 이용한 연산을 말한다. 이 글에서는 연산 위주로 설명하고 있으므로, 연산자에 대한 자세한 설명을 원한다면 아래 링크를 참조하면 된다. 2021.12.28 - [Java] - 연산자(operator)의 종류와 우선순위, 결합규칙 조건 연산자는 유일한 3항 연산자이다. 조건식 ? 식1 : 식2 순으로 쓰면 된다. 조건식이 참이면 식1의 결과가, 거짓이면 식2의 결과가 나온다. // x와 y중 더 큰 수를 출력 int x=9, y=5; System.out.println((x > y) ? x : y); // 9 // 괄호는 생략 가능하지만 // 가독성을 위해 쓰는 것이 좋다. 위 식은 x, y선언을 빼면 1줄이지만 if문으로 쓰면 몇 줄이 될까? if (x>y) { S..

비교/논리 연산은 각각 비교/논리 연산자를 이용한 연산을 말한다. 이 글에서는 연산 위주로 설명하고 있으므로, 연산자에 대한 자세한 설명을 원한다면 아래 링크를 참조하면 된다. 2021.12.28 - [Java] - 연산자(operator)의 종류와 우선순위, 결합규칙 비교 연산자는 총 6개이다. 기호가 2개씩 붙어있는 연산자는 순서를 바꾸면 안 된다. 1. 대소 비교 연산자 보통 크기 비교는 숫자만 한다고 생각하지만, char도 정수 리터럴을 사용할 수 있으므로 대소 비교가 가능하다. System.out.println('A' > 'B'); // false // 연산 과정 char > char -> int > int -> 65 > 66 -> false // int보다 작은 타입은 int로 변환된다. 2...

산술 연산자는 수 연산을 담당하고 있는 연산자이다. 종류와 기능은 아래 링크에 자세히 설명되어있다. 2021.12.28 - [Java] - 연산자(operator)의 종류와 우선순위, 결합규칙 해당 글의 내용 중 나눗셈 설명 부분만 보면, 빨간색 글씨 부분이 영 시원치 않다. 4) / 나누기 System.out.println(11 / 3); // 3 System.out.println(11.0 / 3); // 3.666... System.out.println(12 / 3); // 4 - 이항 연산자 - 두 피연산자의 나눗셈 결과를 반환한다. - 정수 간의 나눗셈의 경우, 나눈 몫을 반환한다. 정수와 실수, 실수와 실수 간의 나눗셈은 2번째 코드처럼 결과가 나온다. 하지만 정수 간의 나눗셈은 위에서 설명한 ..

형변환이란 값의 타입을 다른 타입으로 바꾸는 것을 말한다. 기본형 8가지 중 논리형(boolean)을 제외한 나머지 기본형은 서로 형변환이 가능하다. 왜냐면 논리형을 뺀 정수형, 실수형, 문자형은 모두 숫자 리터럴을 이용할 수 있기 때문이다. 여기서 문자형이 숫자 리터럴을 쓸 수 있는 건 이것 때문이다. 이것은 자바가 사용하는 유니코드의 일부분이다. char 타입은 문자를 그대로 저장하는 것이 아니고, 문자에 해당하는 숫자코드를 저장한다. 그래서 숫자형과 형변환이 가능하다. 형변환을 하는 방법은 간단하다. 변수나 리터럴 앞에 (바꾸고 싶은 타입)만 붙여주면 된다. // int를 float으로 형변환하기 int i = 3; float f = (float)i; // 3.0 기본적으로, 사용자가 형변환을 하지..

연산자는 우리가 익히 알고 있는 +, -같이 연산을 하는 기호를 말한다. 그리고 연산자와 함께 쓰이는 숫자, 변수 등 연산자의 연산 대상을 피연산자라고 한다. 수학 시간에 계산하고 나면 꼭 답이 나왔듯, 모든 연산자는 연산 결과를 반환한다. 연산 과정에서 쓰이는 괄호 ( ), { }, [ ] 는 연산 순서를 나타낼 뿐 결과가 나오는 것이 아니므로 연산자가 아니다. int x = 3; int y; y = 5 * x - 6; int 변수 x, y 2가지를 선언했다. 저 표현식(expression)이 당연하게 받아들여지긴 하지만 그래도 설명해본다면, 1) 메모리에 정수형 기억공간이 하나 생기고, x라는 이름이 붙고, 3이라는 값이 저장되었다. 2) 메모리에 정수형 기억공간이 하나 생기고, y라는 이름이 붙고,..

에버랜드에서 알바를 하는 상상을 해보자. "환상~의 나라↗ 에버랜드로~ 안녕하세요~ 안녕하세요~" 한 손은 열심히 흔들면서 사람들을 반기고, 다른 손으로는 카운터를 사용해 몇 명이 입장하는지 열심히 세고 있을 것이다. 그 카운터의 숫자가 올라가는 것을 살펴보면 다음과 같다. 빨간색 글씨로 된 부분을 보자. 9999에서 한번 더 누르면 10000이 돼야 정상인데, 자릿수가 4자리밖에 없으므로 1을 빼고 0000이 되는 것이다. 이것이 이번 글에서 설명할 오버플로우와 아주 깊은 관련이 있다. 우리가 일상적으로 사용하는 수는 10진수이고, 컴퓨터가 사용하는 수는 2진수이다. 자리수가 몇인지에 따라 표현 가능한 범위가 다르다. 그리고 이전 글에서 봤듯이 어떤 타입이냐에 따라서도 그 범위가 다르다. 우리는 정수 ..

지금까지 print 메서드를 쓴 것을 생각해보면 System.out.println("안녕?"); // "안녕?" String s = "안녕?"; System.out.println(s); // "안녕?" 1) 출력하고 싶은 값을 직접 넣거나 2) 변수에 값을 저장한 후 출력하는 방식을 썼다. 이렇게 코드 입력 시 출력 값을 정해주는 방법 외에도, 코드를 작성해서 실행시킨 후 입력을 받아 화면에 출력할 수 있다. 그것이 이번에 볼 Scanner라는 것이다. Scanner는 화면에서 데이터를 입력받는 기능을 제공하는 클래스이다. 이 클래스를 사용하려면 Scanner를 불러오고, Scanner 객체를 생성하는 것이다. // Scanner import - 둘 중 아무거나 써도 무방 import java.util...

자바를 처음 배울 때 가장 많이 쓰는 메서드인 println()은 ( ) 안의 내용을 화면에 출력하고 줄바꿈을 해준다. System.out.println("안녕?"); // "안녕?" System.out.println(10.0/3); // 3.3333333333333335 System.out.println(0x1A); // 26 그런데 이상한 점이 있다. 1) 3.33333..이 아니라 맨 끝이 5다. 2) 소수점 아래 몇째 자리까지 출력할지를 정할 수 없다. 3) 16진수를 넣었는데 10진수가 출력된다. 1번의 경우는 다른 글에서 설명할 예정이고, 2번과 3번은 또 다른 출력 메서드인 printf()로 해결할 수 있다! 1. 지시자의 종류와 기본 사용법 지시자는 출력 형식을 결정하는 코드이다. 자바 A..

문자는 문자형 char의 리터럴이다. char c1 = 'A'; // 작은 따옴표로 문자를 둘러싸면 된다. char c2 = 'AB'; // 에러 발생 - 문자는 1개만 저장 가능 참조형인 String도 문자 리터럴을 사용하여 선언한다. String s1 = "ABC"; // 큰 따옴표로 문자를 둘러싸면 된다. String s2 = new String("ABC"); // ?? s2 변수를 선언할 때 기존 것과 차이가 있음을 알 수 있다. String은 클래스인데, 클래스는 객체를 new 키워드를 이용해 생성한다. 그런데 특별히 String만 기본형에 값을 저장하는 것과 같은 표현을 허용한다. 원칙은 s2 변수처럼 초기화를 하는 게 맞지만, s1처럼 초기화를 하는 것이 편하기 때문에 이를 더 많이 쓴다. ..

1. 변수에 리터럴을 대입할 때 기본적으로 같은 타입의 리터럴을 대입한다. boolean boo = true; char c = 'A'; int i = 2; long l = 10_0000_0000L; // 접미사 l 생략 가능 float f = 3.14f; double d = 2.72; // 접미사 d 생략 가능 2. 변수의 범위가 리터럴의 범위보다 클 경우, 타입이 달라도 대입 가능하다. int i = 'A'; // char는 문자를 숫자 코드로 바꿔서 저장한다. // 'A'는 10진수로 표현하면 65 // 따라서 i에는 65가 저장된다. long l = 10; // long은 int보다 표현 가능한 정수의 범위가 크다. // 즉, int 집합은 long 집합의 부분집합이다. // 따라서 정수 리터럴을 ..