개발공부/자바 3

정적 변수, 메서드, 클래스, static static static

자바 프로젝트를 새로 만들면 항상 보이는 놈이 있다. public static void main(String[] args) { SpringApplication.run(BoardUpgradedApplication.class, args); } 이런식으로 존재하는 static 메서드가 존재한다. 근데 우리가 만드는 일반적인 클래스, 메서드, 변수들은 public class BoardUpgradedApplication 이런식으로 static이 아닌 클래스, 메서드, 변수를 쓴다. 이렇게 static이 붙은 것들을 '정적'을 앞에 붙여 부른다. 정적 클래스나 이런 것들의 특징이 무엇일까? static이 붙은 것들은 상위 객체와 수명을 같이한다. 즉, static클래스는 프로젝트와 시작과 끝을 같이하고, stati..

개발공부/자바 2023.01.02

[자바] 람다식을 쓰긴 썼는데 뭐하는 건지 모르겠어서 쓰는 정리글

스프링 스터디 프로젝트를 할 때 람다식이라는 개념이 처음 이야기되었다. "람다식을 쓰면 코드가 더 간결하고 쓰기 수월해진다. " 이런 말을 하면서, Comparator를 쓰거나 할 때 람다식을 이용했다. 그런데, 람다식이 무슨 말이고 왜 좋은지는 하나도 생각해본 적이 없다. 그래서 한번 공부할 겸 정리해보려고 한다. 람다식, 람다함수란 익명 함수로써, 함수의 단순화를 위해 사용한다. 익명 함수 => 말 그대로 이름이 없다. 정해진 것이 없어 파라미터로, 변수로 마음대로 사용 가능하다는 이야기들을 접했다. 기본적인 구조는 (연산에 사용할 변수) -> {연산 내용 ;}의 방식으로 사용되며, 단일 실행문이면서 return문이 없을 때에는 중괄호를 없앨 수 있다. 익명함수라는 말을 처음 들어보진 않았다. 자바스..

개발공부/자바 2022.11.14

[자바] stream()이 무엇일까?(1)

알고리즘을 풀다보면 HashMap을 다른 구조로 전환해야 하는 경우가 있다. 이를 위해서 for문을 돌리고, 이를 다시 List나 Array에 담아서 전환한 후에 이를 리턴해야 하는 수고스러움이 있다. 메서드를 분리함에 있어 이 때문에 새로운 for문 메서드를 만들고, 이 안에서 List에 담거나, 혹은 담는 조건이 있다면 조건문 메서드를 따로 만들어서 담는 방식을 사용했었다. 그러다가, stream()방식을 찾게 되었다. 이러한 수고스러움을 줄여주고, 조건을 하나의 문장에서 구현할 수 있고, 심지어 type을 변경시켜줄 수도 있다. (너무 편하다!) 이러한 stream()이 어떻게 되어있는지 찾아보았다. https://docs.oracle.com/javase/8/docs/api/java/util/str..

개발공부/자바 2022.11.01