HashMap 출력하기
.mapToInt(Integer::intValue)를 보고 왜 같은 타입으로 바꿔주는거지? 생각이 들어서 검색해보았다.Integer 는 'int'의 래퍼클래스이므로, Integer 객체는 'null' 값을 가질 수 있으며, 객체로써 다양한 메소드를 사용할 수 있다.in
문제가 주어졌을 때, for문/ Stream/ 향상된 for문 3가지 방법을 각각 사용하여 풀이하는 연습을 해보았다.
Collectors.toMap 메서드는 새로운 맵을 만들 때 사용할 맵의 타입을 지정하는 인수를 필요로 한다.
타입을 지정하지 않으면 'Object' 타입으로 처리되기 때문에 'get()' 메서드로 가져올 때 강제 타입 캐스팅이 필요하게 된다.
대신 해당 메서드 내부에서 필요한 작업을 수행할 수 있다.
메서드 내에서 로컬 변수로 선언되어 있는 변수는 해당 메서드가 끝나면 스택에서 제거된다.
재귀함수란 ?
JavaScript Object Notation 의 약자로, JS 에서 데이터를 전달하기 위해 만들어졌다.
(1) 직관적 X => 코딩적 O 기계가 이해할 수 있도록 접근하기
재귀함수를 사용하면 메모리 사용량을 많이 차지할 수도 있지만, 언제나 적은 메모리의 코드를 작성해야만 하는 것은 아니다. 메모리 사용량 차지를 줄이는 것보다 좋은 코드를 작성하는 데에 초점을 둔다면, 재귀 함수를 사용해야 할 필요가 있다.
split() 메서드와 join() 메서드가 함께 작용할 때 문자열의 공백 갯수가 그대로 반환되는 것에 미치는 영향
조건식 이후에 continue; 를 작성해주면, 해당 로테이션만 종료하고 다음 반복 회차로 넘어간다. break; 를 작성해주면, 포함하고 있는 해당 반복문을 빠져나온다.
Arrays.copyOfRange(shortArr, 1, 6); => shortArr 라는 배열을 복사할 것이며, 인덱스 1번 이상부터 6번 미만까지의 구간을 복사해올 것 이라는 의미이다.
(1) String literal로 생성한 객체끼리는 내용이 같다면 같은 객체, 즉 동일한 메모리 주소를 가리키고 있다. (2) new 연산자로 생성한 String 객체는 내용이 같더라도 개별적인 객체이다.
📝 생활코딩 Linked list의 개념📝 자바의 정석 ch11-15~18 Stack과 Queuewhile(!st.empty())while(!q.isEmpty())똑같이 확인하지만,스택은 st.pop() -> 0,1,2 순차적으로 나오고큐는 q.poll() -> 2
⁉️⁉️❓💡✅🌟❓나의 궁금try-catch 블록에서 catch(Exception e) 와 같이 처음부터 모든 예외를 처리하는 방법을 사용하지 않고, 다른 예외 처리를 먼저 하고 마지막에 Exception을 선언하는가?✅ 찾은 답변1\. 모든 예외를 한꺼번에 처리하는
원래는 작은 타입에서 큰 타입으로만 자동 형변환이 가능한데, 큰 허용 범위 타입에서 작은 허용 범위 타입으로 변환하고싶을 때 사용하는 방법입니다.작은 허용 범위 타입 = (작은 허용 범위 타입) 큰 허용 범위 타입위와 같은 형식으로 사용합니다.데이터의 손실이 발생할 수
자바에서 값은 기본 타입/ 참조 타입으로 나뉜 변수에 저장을 합니다.객체의 번지를 참조한다는 의미로, 기본 타입처럼 직접 값을 저장하는 것이 아니라 힙 영역에 저장된 객체의 번지 주솟값을 알아내어 스택 영역의 변수에 저장하는 원리입니다.참조 타입인 String 변수에
new 연산자는 힙 영역에 새로운 객체를 만들 때 사용하는 연산자 입니다. (객체 생성 연산자)문자열 리터럴로 생성한다면, 같은 주솟값을 참조하기 때문에 == 연산의 결과가 true 입니다.new 연산자로 생성한다면, 서로 다른 객체를 만들기 때문에 저장된 객체의 번지
실행해보니 인덱스 범위를 벗어나는 오류가 발생했습니다.실제로 직접 0번부터 대입해보며 계산해보니 구한 max가 유지되지 않고 비교 대상 두 값 모두 인덱스를 이동한다는 문제를 발견했습니다.인덱스가 증가함에 따라 비교대상은 변경되지만, 매 비교마다 찾은 최댓값은 유지할
매개 변수를 배열 타입으로 선언하면 됩니다.sum1 메서드는 배열을 받아서 합계를 계산하는 메서드입니다. 매개변수로 명시적으로 배열을 전달해야 합니다.예시 호출: int result = sum1(new int\[]{1, 2, 3, 4, 5});sum2 메서드는 가변 인
프로그래머스> P120876: 겹치는 선분의 길이중첩 for문을 사용하여 초기화식, 조건식을 작성하는 과정에서 어떤 것을 변수로 두어야할지, 범위를 어떻게 잡아야할지 헷갈렸습니다.구해야하는 것은 겹치는 점의 개수가 아니라 선분의 길이이기 때문에 주어진 x좌표로 알 수
🤲 toString() 메서드는 int타입의 숫자를 매개변수로 받아서 문자열로 반환해주는 함수입니다. 고로 Integer.toString() 은 정수값을 매개변수로 사용하는 정적 메서드이며 Integer 클래스 내부에 있는 메서드 입니다.🤲 valueOf() 메서드
위와 같은 경우를 보면, + 연산자를 기준으로 좌항과 우항은 매개변수가 다릅니다. 두 형태 모두 사용 가능하며 다르게 해석할 수 있습니다.먼저 2개가 입력되면, 0번 인덱스부터 index번 인덱스 전까지 값을 가져오도록 동작합니다.1개가 입력되면, index + 1 번
indexOf() 메서드는 String 클래스의 메서드로, 문자열에서 특정 문자나 문자열이 등장하는 위치를 찾는 데 사용됩니다.여러 개의 오버로드된 형태가 있지만, 해당 문제에서는 지정된 문자가 처음 나타나는 인덱스를 반환할 때 사용했습니다.자바의 indexOf(int
Overloading메소드 오버로딩은 같은 이름의 메소드를 여러 개 정의하는 것을 의미합니다.메소드 오버로딩을 통해 동일한 기능을 수행하지만 매개변수의 타입, 개수, 순서 등이 다른 여러 메소드를 정의할 수 있습니다.메소드 오버로딩은 메소드 이름은 같지만 매개변수의 타
과일의 종류에 따라 다른 kcal가 출력되어야 하는 프로그램이 설계되어야할 때, 위와 같이 숫자에 따른 과일의 종류가 적힌 표가 있어야만 int type = ? 에 직접 번호를 변경해야 하는 문제가 있습니다.주석으로 작성되어있는 표를 관리하는 방법은 아래와 같습니다.1
열거형의 특성열거형은 연관된 값들을 저장합니다. (서로 연관된 상수들의 집합)그 값들이 변경되지 않도록 보장합니다.열거형 자체가 클래스이기 때문에 열거형 내부에 생성자, 필드, 메소드를 가질 수 있어서 단순히 상수가 아니라 더 많은 역할을 할 수 있습니다.enum 변수
클래스를 선언할 때 extends 키워드로 다른 클래스를 상속하지 안더라도 암시적으로 java.lang.Object 클래스를 상속하게 됩니다.자바의 모든 클래스는 Object 클래스의 자식 클래스 입니다.equals()hashCode()toString()equals()
System 클래스를 이용하면 운영체제의 일부 기능을 이용할 수 있습니다.(프로그램 종료, 키보드로부터 입력, 모니터로 출력, 현재 시간 읽기 등)System 클래스의 모든 필드와 메소드는 static(정적)으로 구성되어 있습니다.exit()currentTimeMill
기본 타입의 값을 갖는 객체외부에서 값을 변경할 수 없습니다.Boxing(박싱): 기본 타입의 값을 포장 객체로 만드는 것UnBoxing(언박싱): 포장 객체로부터 기본 타입의 값을 얻는 것포장 값 비교포장 객체에 정확히 어떤 값이 저장될지 모르는 상황이라면 == 와
Collections Framework (컬렉션 프레임워크)java.util 패키지에서 제공하는 자료구조를 사용해서 추가/삭제/검색 할 수 있도록 인터페이스와 구현 클래스 모음 입니다.가장 큰 카테고리인 Collection과 Map 으로 나뉩니다.ListArrayLis
java.lang.Thread 클래스로부터 작업 스레드 객체를 직접 생성하려면 Runnable을 매개값으로 갖는 생성자를 호출해야 합니다.작업 스레드가 실행할 수 있는 코드를 가지고 있는 객체입니다.인터페이스 타입이기 때문에 구현 객체를 만들어 대입해야 합니다.Runn
가비지 컬렉션은 어디에서 언제 나타나는 것인지 등에 대한 구체적인 동작 원리를 알아보고자 합니다.
java.lang 패키지를 T 메모리의 스태틱 영역에 배치합니다.import된 패키지를 T 메모리의 스태틱 영역에 배치합니다.프로그램 상의 모든 클래스를 T 메모리의 스태틱 영역에 배치합니다.객체 지향 프로그램에서는 데이터 저장 영역을 세 개의 영역으로 분할해서 사용합
탈출조건 없이 재귀함수를 호출하면 스택 영역에서 어떤 일이 일어날까요?먼저 메소드 호출과 스택 영역의 관계를 이해해야 합니다.스택은 후입선출 방식 임을 기억하기!메모리의 스택(stack) 영역은 함수의 호출과 관계되는 지역 변수와 매개변수가 저장되는 영역입니다.스택 영
상속을 통한 추상화, 구체화인터펭스를 통한 추상화다형성을 통한 추상화를 이해하기 전에 객체 지향 프로그래밍을 시작하며 가장 먼저 생성하는 클래스(class)에서부터 추상화가 시작됩니다.클레스 설계 시에 추상화 (= 모델링)가 사용되기 때문입니다.개발자는 클래스를 설계하
final 키워드 자바에서 키워드는 '최종의', '마지막의' 라는 뜻을 가지고 있으며, 즉 변경 불가능함을 나타냅니다. final 클래스 변경 또는 확장 불가능한 클래스, 상속 불가 final 필드 값 변경이 불가한 상수 final 메소드 오버라이딩 불가
증가하는 for문에서는 반복 변수를 증가시키면서 특정 범위까지 반복을 수행합니다. 이 때 조건식은 반복 변수가 특정 값보다 작을 때까지 반복하도록 i < n 과 같은 형태로 작성됩니다.결론적으로 for (int i = 0; i < n; i++) 와 같은 형태
위 코드를 디버깅해보면 3일 때 걸려서 print 찍히지 않고 즉시 for문이 종료됩니다.위 코드를 디버깅해보면 i가 3일 때 continue; 가 실행되면서 다음 줄로 넘어가지 않고 다음 순회로 넘어갑니다.break; 를 만나면 순회가 남았어도 for문 자체를 탈출합
Comparator기본 정렬기준 외에 다른 기준으로 정렬하고 싶을 때 메소드를 제공하는 인터페이스Comparable기본 정렬기준을 구현할 때 사용하는 메소드를 제공하는 인터페이스Comparable을 구현하고 있는 Integer 클래스v1 - v2 이 아닌 삼항연산자 사
네 좌표가 담긴 이차원 배열이 주어졌다면 연산을 위해 가장 먼저 각 x,y 값을 정수형 변수에 담아준다.이미 알려져 있는 기울기 구하는 공식은 y1 - y2 / x1 - x2 이다.자바에서는 / 연산자를 사용하면 나머지 값이 버려지기 때문에 따로 실수형 타입의 기울기
문자열.split(" "): 공백 한 칸을 기준으로 분리한다.문자열.split("o"): 문자열 "o"를 기준으로 분리한다.첫 번째 "o": "b"와 "o:and:foo"로 분리된다.두 번째 "o": ""와 ":and:foo"로 분리된다.세 번째 "o": ":and:f
두 정수 사이의 합long 타입을 반환해야하는 함수이기 때문에 반환할 변수를 long 타입으로 선언했습니다.하지만, 연산 과정에서 int형 변수 i를 long 타입의 변수에 누적하여 더하고 있습니다.이 때, int 타입 변수를 long 타입 변수에 더할 수 있는 이유는
해당 함수는 int 타입의 매개변수 2개를 입력받지만, long 타입을 반환하도록 정해져 있습니다.int형의 두 수 사이의 모든 값을 합산하는 과정에서 발생할 수 있는 오버플로우를 방지하기 위해 long 타입을 사용하여 반환하는 이유인 것 같습니다.IntStream.r