자바
-
[Java] static(정적)의 의미IT Study/컴퓨터 기초 2023. 4. 21. 17:23
자바를 사용하다 보면 static이라는 키워드를 자주 보는데요. 이러한 static이 의미하는 바를 정확히 짚고 넘어가는 것이 좋을 것 같아, 이번 블로그 글을 작성하게 되었습니다. 1. static이란? static이란 정적(고정된)이라는 의미로, static 키워드가 붙은 멤버 변수나 메서드는 클래스의 인스턴스 생성 없이 사용할 수 있습니다. 즉, 클래스 내부에 정적으로 선언되어 모든 인스턴스가 공유하는 변수나 메서드를 만들 때 사용합니다. 2. static 변수 static 키워드가 붙은 멤버 변수는 객체가 생성되지 않아도 메모리에 할당되어 초기화가 이뤄집니다. static 변수는 클래스 레벨의 변수이기 때문에 객체가 생성되기 전, 미리 메모리에 할당되어 객체의 생성 여부와 상관없이 클래스 이름을 ..
-
[Java] 스트림 (Stream)IT Study/컴퓨터 기초 2023. 4. 21. 12:11
1. 스트림이란? 스트림은 자바 8에서 새롭게 추가된 기능으로, 데이터의 흐름을 추상화합니다. 데이터 흐름을 추상화한다는 것은 어떤 데이터 구조를 다루던 같은 방식으로 다룰 수 있도록 해준다는 것입니다. 자바 8 이전에 컬렉션이나 배열과 같은 데이터 구조를 다룰 때에는 Iterator와 for문, Collectins.sort()와 Arrays.sort()를 사용했습니다. 이처럼 같은 기능의 메서드가 중복되어 정의된 것을 정리하여, 일관성 있는 방식으로 데이터 구조를 다룰 수 있게 해 줍니다. 1-1. 스트림의 특징 (1) 스트림은 일회용입니다. Iterator로 컬렉션의 요소를 모두 읽고 나면 다시 사용할 수 없는 것처럼, 스트림도 한 번 사용하면 다시 사용할 수 없습니다. 그러나 아래와 같이 스트림을 ..
-
[Java] 람다식 (Lambda)IT Study/컴퓨터 기초 2023. 4. 20. 16:07
1. 람다식이란? 람다식은 메서드를 하나의 식으로 표현할 수 있는 기능입니다. 이 기능을 통해 자바는 객체지향언어인 동시에 함수형 언어가 되었습니다. 아래와 같이 Example 클래스에 종속되고, max라는 이름이 있는 메서드는 람다식을 통해 간결하게 나타낼 수 있습니다. // 일반적으로 메서드 생성 시 new Example() { int max(int n, int m) { return n > m ? n : m; } } // 람다식으로 메서드 생성 시 (int n, int m) -> n > m ? n : m 1-1. 함수형 프로그래밍 람다식은 함수형 프로그래밍을 위한 기능입니다. 함수형 프로그래밍은 데이터를 변경하지 않고 함수에 데이터를 전달해 원하는 결과를 도출하는 프로그래밍 방식으로, 입력값이 같으면..
-
[Java] toString() (Feat. 매번 헷갈려..)IT Study/컴퓨터 기초 2023. 4. 15. 18:10
안녕하세요. 다들 편안한 주말 보내고 계신가요.. :) 이번 글에서는 toString() 메서드가 어떤 친구인지 정확하게 정의 내리고, 사용하는 방법까지 알아보도록 하겠습니다. 1. toString()이란? toString 메서드는 자바의 모든 클래스에서 사용할 수 있는 메서드 중 하나입니다. toString은 객체를 대표하는 문자열을 반환합니다. (← 이 개념으로 인해 toString의 사용법이 헷갈리게 되곤 합니다.) 아래의 1-1, 1-2 목차를 통해 정확하게 내용을 파악해보도록 하겠습니다. 1-1. String 클래스의 toString() String 클래스의 toString은 해당 String 객체의 문자열 값을 반환합니다. toString() 메서드를 호출하면, 해당 String 객체에 저장된..
-
[네이버클라우드 캠프/3주차] 최소공배수와 최대공약수 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 14. 12:37
고등수학에서 두 수의 최소공배수와 최대공약수를 구하기 위해서는 조립제법을 사용합니다. 조립제법을 통해 직관적으로 보이는 수를 곱하여 최소공배수 혹은 최대공약수를 구합니다. 이러한 최소공배수와 최대공약수를 어떻게 프로그램(알고리즘)으로 작성해야 하는지.. 참 많이 고민되었습니다. ❓ 문제 : 사용자에 두 정수를 입력받아, 최소공배수와 최대공약수를 출력하세요. 1. 생각 정리 최대공약수는 for문을 통해 사용자가 입력한 두 수에 대해 공통적으로 나눠지는 수를 구해야겠다고 생각했습니다. 그러나 사용자가 큰 수를 입력하는 경우를 대비하여 많은 횟수를 반복하지 못하도록 제한하는 것이 필요했습니다. (처음에는 어떤 기준으로 반복 횟수를 제한해야할지 감조차 오지 않았습니다.) 이를 위해 min이라는 int형 변수를 ..
-
[네이버클라우드 캠프/3주차] 소수 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 14. 10:45
소수를 구하는 문제를 풀 때.. 정말 힘들었습니다. 앞서 풀었던 과제 중 '사용자에게 10개의 정수를 입력받고, 소수의 개수를 출력하세요. (단, 입력 값은 2`30 제한)'와 같이 입력받는 수가 제한되어 있을 경우에는 비교적 수월하게 풀이했습니다. 입력받는 수의 범위가 제한되어 있을 경우와 제한되지 않을 경우로 나누어 풀이를 설명하도록 하겠습니다. ❓문제 : 사용자에게 10개의 정수를 입력받고, 소수의 개수를 출력하세요. (단, 입력 값은 2`30 제한) 1. 소수와 소수가 아닌 수의 특징을 찾았습니다. 2 3 5 7 11 13 17 19 23 29 → 공통점 : 홀수 (9, 15, 21, 25, 27 제외 : 3이나 5의 배수) 짝수 (2) 4 6 8 9 10 12 14 15 16 18 20 21 2..
-
[네이버클라우드 캠프/3주차] 두 수의 합이 유일한 값의 개수 출력하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 13. 09:46
3주 차에는 컬렉션 프레임워크를 주로 배운 만큼, 이를 활용한 과제가 많았습니다. 각 인터페이스가 아닌 List와 Map 두 가지를 모두 활용하여 주어진 문제를 풀어보도록 하겠습니다. (컬렉션 프레임워크를 활용한 과제는 모두 새롭고, 인사이트를 얻게 되는 것 같습니다.) ❓문제 : 6개의 정수를 입력받아, 두 수의 합이 유일한 값이 되는 개수를 출력하세요. 이번 문제는 앞선 3주 차 과제 2개를 활용하여 풀이한 문제였습니다. [네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기 지난 과제를 풀며, 어렵다고 느꼈던 문제 혹은 새로운 깨달음을 준 문제들에 대해 블로그 글로 정리하고 있습니다. '문제를 풀었을 때 (그때그때) 블로그 글로 작성해 두면 더 좋았을 텐데..'란 1-three.t..
-
[네이버클라우드 캠프/3주차] 연속합이 가장 큰 두 수 구하기네이버클라우드 캠프 | BE/Java 과제 2023. 4. 12. 15:38
지난 블로그 글이었던 '[네이버클라우드 캠프/3주차] 문자열 중 가장 많이 등장하는 문자 구하기' 에서도 컬렉션 프레임워크 중 하나인 Map을 사용하여 과제를 풀이했는데요. 이번 블로그 글 역시 컬렉션 프레임워크 중 하나인 List를 사용하여 과제를 풀어보도록 하겠습니다. ❓문제 : 5개의 정수를 입력 받아, 연속하는 두 수의 합이 가장 커지는 구간의 두 수를 출력하세요. 1. 5개의 정수를 입력받아 List에 저장합니다. public class Main { public static void main(String[] args) { List list = new ArrayList(); Scanner sc = new Scanner(System.in); for(int i = 0; i < 5; i++) { Sys..