오늘 학습한 내용
- Java : 내일배움캠프 Java 종합반 1, 2주차 내용 수강
- 좋은 개발자란?
학습한 내용 중 새로 알게된 내용
비트 연산자 (<<, >>)
Bit는 0,1 둘 중 하나의 값만을 저장한느 컴퓨터가 저장가능한 가장 작은 단위이다.
그렇기 때문에 Bit 연산은 가장 빠른 연산이다.
비트 연산자는 Bit의 자리수를 옮기는 것이다. <<는 왼쪽으로 자리수를 옮기기, >>는 오른쪽으로 자리수를 옮기는 것이다.
예를 들어 ,
0101을 <<로 연산하면 1010이 되는 것이다.
0, 1은 2진수 값이기 때문에,
- << : 자리수를 왼쪽으로 옮기는 횟수만큼 2의 배수로 곱셈이 연산되는 것
- >> : 자리수를 오른쪽으로 옮기는 횟수만큼 2의 배수로 나눗셈이 연산되는 것
비트 연산 예제는 다음과 같다.
System.out.println(3 << 2); // 왼쪽으로 2번 이동, 결과 : 12
System.out.println(3 >> 1); // 오른쪽으로 1번 이동, 결과 : 1
배열에서의 복사
얕은 복사
배열은 참조형 변수이며 실제값이 아닌 실제값의 주소값을 가진다.
때문에 배열 변수간 대입연산자(=)를 사용하여 배열을 복사하게 된다면 배열의 주소값이 복사가 되는 것이다.
이렇게 되면 변수명은 서로 다르지만 같은 값을 나타낸다는 뜻이 되고,
만약 배열의 인덱스를 바꾸게 된다면 두 배열 모두 바뀌게 되는 것이다.
int[] arr = {a, b, c}
int[] arr2 = arr; // 얕은 복사 (주소값을 복사함)
arr2[0] = d; // arr2의 0번째 인덱스 값을 d로 수정함
System.out.println(arr2[0]); //d
System.out.println(arr[0]); //d arr2[0]의 값을 바꿨는데 영향을 받음
깊은 복사
얕은 복사에서 처럼 주소값을 복사하는 것이 아니라 새로운 배열을 똑같이 만들고 싶을 때에는 깊은 복사를 해야한다.
깊은 복사를 하는 방법에는 반복문을 이용하거나 clone()을 이용하는 방법, Arrays.copyOf() 메소드를 이용하는 방법이 있다.
반복문을 이용
int[] arr = {a, b, c}
int[] arr2 = new int[arr.length];
for (int i=0; i<arr.length; i++) {
arr2[i] = arr[i];
}
clone() 메소드를 이용
int[] arr = {a, b, c}
int[] arr2 = arr.clone();
clone() 메소드를 사용하면 간단하게 깊은 복사를 할 수 있다.
하지만, clone 메소드는 2차원 이상 배열에서 사용하면 얕은 복사가 되므로 2차원 이상에서는 3번을 이용하자.
Arrays.copyOf(원본 배열, 복사할 길이) 메소드를 이용
우선 Arrays.copyOf 메소드를 이용하려면 java.util.Arrays를 import해야한다.
import java.util.Arrays;
public class Arr {
public static void main(String[] args) {
int[] arr = {a, b, c}
int[] arr2 = Arrays.copyOf(arr, arr.length)
}
}
좋은 개발자
궁금한 부분이 생겼을 때
궁금한 부분은 정확하게 정리하고 질문하기 !
"상대방의 시간은 내 시간만큼 귀하다..!"
좋은 글을 많이 읽기
공유 잘되는 문화권의 글을 많이 읽기, 표현과 사고를 흡수한다.
좋은 개발자는
- 당면한 문제를 두려워하지 않고 도전하고 끈기를 갖고 결국 구현해낸다
- 소통을 잘한다. (알맞는 언어 선택을 잘하자.)
- 겸손함을 가지고, 분위기 메이커가 되려고 노력하자.
- 아는 척을 하지말자.
TIL
오늘 만난 에러 > 어떤 식으로 접근 > 해결 실마리 찾음 > 해결
사소한 에러를 만나도 작성하도록 노력하자 !!
'TIL&WIL' 카테고리의 다른 글
| 2023-05-24 TIL (Java, 프로그래머스 문제풀이) (1) | 2023.05.24 |
|---|---|
| 2023-05-23 TIL (Java : Collections Framework, 프로그래머스 문풀) (0) | 2023.05.23 |
| 2023-05 3주차 WIL (0) | 2023.05.19 |
| 2023-05-19 TIL (Java : Replace, ReplaceAll, ReplaceFirst) (0) | 2023.05.19 |
| 2023-05-18 TIL (0) | 2023.05.18 |