Java #1

yeolyeol·2024년 7월 15일
0

ssafy12

목록 보기
10/32
post-thumbnail

주말을 너무 즐기고 와서 그런지 오늘따라 등원(?)길이 두려웠다. 솔직히 더 누워 있고 싶었지만, 그러면 으른이 아니니까 눈물을 머금고 역삼 멀캠에 도착했다.
근데 또 막상 오니 시원하기도 하고 오늘부터 코딩 과정이 시작되는데 거기서 오는 기대감이 점차 커져가고 있다.

집에서 남는 키보드와 작업할 때 쓰는 버티컬 마우스를 들고 왔다.
뭔가 대단히 준비한 것 같은 느낌이 들지만...그래도 코딩에 키보드와 마우스는 필수라고 생각한다!

음 사진 삐뚤어진게 불편하네


Java 기본 #1

var타입

public static void main(String[] args){
	int i = 10;
    var a = 1;
    var str = "Hello";
    var list2 = new ArrayList<>();
    var list3 = new ArrayList<String>();
}

자바 10버전부터 var 타입으로 변수를 선언할 수 있게 되었다.
즉, 선언한 값에 따라 변수의 타입이 결정되는 것.
Javascript와 비슷할 수 있지만 js와 다르게 중간에 변수의 타입을 변경할 수 없다.
var 타입의 활용도는 오버로딩 메소드를 줄일 수 있고, 타입 별 로직을 구현할 수 있다는 생각을 했다.
음... 어디까지나 내 생각이라 이 외에도 더 많이 나올 것 같지만, 지금은 쉬는 시간에 부랴부랴 적기 때문에 나중에 찾아보도록 하자.

Text Block

private static void textBlockTest() {
    String str = """
            내 이름은 %s.
            나이는 %d살이고, 사는 곳은 %s.
            """.formatted("hong gil dong", 20, "율도국");
	System.out.println(str);
}

쌍따음표(")를 앞뒤로 3번씩 넣어 여러줄 문자열 배열을 선언할 수 있다.
기존에는 줄바꿈(\n)을 넣어서 했는데, 이제는 enter키 하나로 편하게 사용할 수 있게 되었다.
하지만, Java15부터 사용할 수 있기에 java 8이나 11을 사용하는 코테에서는 사용하기 어려울 것 같다.

형 변환(Type casting) #1

// 명시적 형 변환
int i = 300;
byte b = (byte) i;
// 묵시적 형 변환
byte b = 10;
int i = (int) b;
int i2 = b;

형 변환은 기본형끼리, 참조형끼리 가능.
또한, 작은 타입에서 큰 타입은 묵시적 형 변환이 가능하지만 작은 타입에서 큰 타입으로 형 변환을 시도할 땐 명시적 형 변환이 필수

형 변환 #2

public static viod main(String[] args){
	// 1.
	byte b1 = 10;
    byte b1 = 20;
    byte b = b1 + b2;
    // -> byte b = (int) b1 + (int) b2;
    //
    // 2.
    int i1 = 10;
    int l1 = 20;
    int i2 = i1 + l1;
    // int i2 = (long) i1 + l1;
}
  • 산술 이항 연산자는 연산 전에 피연산자의 타입을 일치
  • 피연산자의 크기가 4byte 미만이면 int 로 변경 후 연산 진행
  • 두 개의 피연산자 중 큰 타입을 형 변환 후 연산 진행

for문, while문

for(int i = 0; i < n; i++){
	/// method...
}
🔻
for(변수 초기화; 반복 조건; 증감식){
	// 실행문
}
int i = 0;
while(i < n){
	// method...
    i++;
}
🔻
변수 초기화
while(반복 조건){
	// 실행문
    증감식
}

배열

동일한 타입의 데이터 0개 이상을 하나의연속된 메모리 공간에서 관리

int[] nums = {1,2,3,4,5};

에서 '배열'은 {1,2,3,4,5}를 뜻한다.
그럼 nums는?
nums는 배열{1,2,3,4,5}의 가리키는 주소이고 nums라는 이름을 붙여준 것.

다차원 배열

public class Test {
	public static void main(String[] args) {
		int[][] arr = new int[3][3];
		int[][] arr2 = new int[2][];
        //
		arr2[0] = new int[3];
		arr2[1] = arr[1];
        //
		arr[1][0] = 10;
		System.out.println(Arrays.toString(arr2[1]));
	}
}

arr라는 2차원 배열을 선언하고 arr2라는 내부 1차원을 선언하지 않은 2차원 배열을 선언해 주었다.
이때, arr는 default값으로 선언해 주었기에 arr[0]arr[1]가 가리키는 배열은 각각 {0, 0, 0}을 가리킨다.
그럼 arr2는?
arr2[0]arr2[1]는 아직 가리키는 배열이 없기 때문에 둘 다 null인 상태이다.
.
이러한 arr2배열의 arr2[0]에는 새로운 배열을 선언하고, arr2[1]에는 arr[1]를 선언해 주었다고 하자.
.
그럼 arr2[0]에는 새로운 배열 {0, 0, 0}의 주소 값을 가리킬 것이고,
arr2[1]에는 arr[1]이 가리키는 배열의 주소를 가리킬 것이다.
.
그럼 arr[1]에 변화가 생기면 arr2[1]에도 영향을 미칠까?
YES
.
서로 가리키는 배열의 주소가 같기 때문에 arr[1]에서 값을 변경해도 arr2[1]에서 확인이 가능함.


점심


오늘은 초복
닭 반마리 정도 기대했지만...
아쉬웠다..ㅎ


느낀점

자바의 기초를 배우긴 했지만, 헷갈리거나 놓쳤던 부분까지 세밀하게 복습할 수 있어서 좋았다.

profile
한 걸음씩 꾸준히

0개의 댓글

관련 채용 정보

Powered by GraphCDN, the GraphQL CDN