일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- database
- dynamic programming
- 코딩테스트
- array
- Binary Tree
- Data Structure
- Stack
- Tree
- Counting
- Matrix
- Number Theory
- java
- simulation
- string
- 파이썬
- 코테
- implement
- bit manipulation
- Math
- geometry
- two pointers
- 자바
- Binary Search
- 구현
- Method
- Class
- sorting
- SQL
- greedy
- hash table
- Today
- Total
목록Java (109)
코린이의 소소한 공부노트
에버랜드에서 알바를 하는 상상을 해보자. "환상~의 나라↗ 에버랜드로~ 안녕하세요~ 안녕하세요~" 한 손은 열심히 흔들면서 사람들을 반기고, 다른 손으로는 카운터를 사용해 몇 명이 입장하는지 열심히 세고 있을 것이다. 그 카운터의 숫자가 올라가는 것을 살펴보면 다음과 같다. 빨간색 글씨로 된 부분을 보자. 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 집합의 부분집합이다. // 따라서 정수 리터럴을 ..
1. 변수는 하나의 값을 저장하기 위한 기억공간이다. 2021.12.03 - [Java] - 변수(variable)에 설명한 바 있다. 2. 리터럴은 그 자체로 값을 의미하는 것을 말한다. 아래는 리터럴이 무엇인지 이해하기 위한 예시 코드이다. // 우변이 리터럴인 경우 int money = 10000; char mathScore = 'A'; // 우변이 변수인 경우 int wallet = money; char sciScore = mathScore; 첫 번째, 우변이 리터럴인 경우를 먼저 본다면 - int 타입의 money라는 변수를 만들어서 그 안에 10,000을 저장했다. 여기서 money는 변수이고 10,000은 정수 리터럴이다. 10,000은 이 자체로 만을 뜻한다. - char 타입의 mathS..
자바에서는 변수를 선언할 때 타입과 변수명, 세미콜론(;)을 이용한다. 예를 들어 정수형이고 이름이 money인 변수를 만들고 싶다면, int money; 라고 선언한다면 4 byte 크기의 int타입이고 이름이 money인 공간이 만들어진다. 이렇게 만들어진 공간에 10,000을 저장하고 싶다면, money = 10000; 이렇게 입력해주면 된다. 여기서 등호는 같다는 뜻이 아닌, 오른쪽 값을 왼쪽에 대입한다는 뜻이다. 위에 쓴 두 줄을 한꺼번에 int money = 10000; 이렇게 써도 된다. 위 3줄의 코드 중 2, 3번째 코드처럼 변수에 처음으로 값을 저장하는 것을 변수 초기화라고 한다. 지금 우리가 쓰는 변수는 지역변수(local variable)인데, 지역변수는 선언 후 초기화를 해야 그 ..
변수에는 임의의 값 하나가 들어갈 수 있는데, 이 값이 무엇이냐에 따라 변수의 타입이 결정된다. 자바에서는 크게 기본형과 참조형 두 가지로 나눈다. 1. 기본형(primivtive type) - 논리형(boolean), 문자형(char), 정수형(byte, short, int, long), 실수형(float, double)의 8개 타입을 기본형으로 분류한다. - 변수에 넣을 실제 값을 저장한다. - 타입에 따라 변수의 크기가 다르다. - 자바 설계 시 정해놓은 것이기 때문에 기본형은 8개에서 추가될 수 없다. 2. 참조형(reference type) - 기본형을 제외한 나머지 타입들(String, System 등)을 참조형으로 분류한다. - 객체의 주소를 저장한다.(4 byte의 경우 0x00000000..
수학에서의 변수는 임의의 값을 가지는 문자를 뜻한다. 이와 비슷하게 프로그래밍에서의 변수는 메모리 상에서 임의의 값 하나를 저장할 수 있는 공간을 뜻한다. 메모리(RAM)는 1Byte짜리 공간이 연속적으로 붙어 있는 저장공간이고, 저장공간마다 숫자로 된 주소가 있다. 그런데 우리가 컴퓨터도 아니고, 그 주소를 외워서 써먹을 수는 없는 일! 그래서 주소 대신 우리가 만든 임의의 이름을 붙여 변수를 만들어 그 공간을 쉽게 활용할 수 있다. 예를 들어 'score'라는 변수를 만들면 메모리상에 이런 일이 벌어진다. 앞으로 변수를 그림으로 표현할 일이 생긴다면, 그림 오른쪽 아래처럼 간단하게 표시할 예정이다.