꿈틀꿈틀 개발일기

20231223 / 이번 주말은 ㅈㅂ

by jeongminy

 

자바의 필요성




스프링을 이해하려면 자바를 배워야 할 필요가 있다고 느꼈다.

코틀린이 싫어서가 아니다.
스프링을 사용하는데에 있어서 코틀린이 불편하거나 부족해서도 아니다.

스프링을 공부하게 되면서 이해되지 않는 부분이 너무도 많았고,
이러한 것들을 이해하기 위해서는 다른 영상이나 참고할수있을 만한걸 찾아봐야 했다.

하지만, 스프링 자체가 자바를 기반으로 해서 만들어 진 것이라 그런지..
구글링을 하거나 어떠한 유투브를 검색해도 거의 다 자바로 설명을 하고
구글링을 하면 나는 마음속으로  "또 자바야?"를 연발했다..
코틀린이 생긴지 얼마 되지 않아서 인지
코틀린 기반의 배울 수 있는 자료가 많지 않았다....(역사가 짧..ㅎ  ㅏ.......)

물론 기본 개념은 비슷하겠지만..
이제서야 입문한 나에게 익숙하지 않은 다른 언어를 바탕으로 이해해보려고 하고 있자니...
심적으로 ㅠㅠ 너무나도 불편했고,
나에게 맞지 않는 옷을 입고 운동을 하라고 하는 느낌이 들었다.

물론 나는 코틀린 정말 편하고 좋다는걸 알고있다.
코틀린의 미래는 밝은 것 같고, 코틀린이 좋다.
나의 첫 언어이기도 하면서 애정이있다.
하지만, 다른 선배 개발자들의 말과 자료들을 알아들으려면 자바를 배워야 할 필요를 느꼈다.

이렇게 이번 주말은 자바 언어 습득이 목표가 되었다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


#변수

int a = 100; //정수
double b = 10.5; //실수
boolean c = true; //불리언(boolean) true, false 입력 가능 (1byte)
char d = 'A'; //문자 하나(2byte)
String e = "Hello Java"; //문자열

//정수
byte b = 127; //-128 ~ 127
short s = 32767; // -32,768 ~ 32,767
int i = 2147483647; //-2,147,483,648 ~ 2,147,483,647 (약 20억)
long l = 9223372036854775807L; //-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 
//실수
float f = 10.0f;
double d = 10.0;
  • 리터럴: 코드에서 개발자가 직접 적은 100 , 10.5 , true , 'A' , "Hello Java" 와 같은 고정된 값을 프로그래밍 용어로 리터럴(literal)이라 한다.
  • 변수 명명규칙은 코틀린과 비슷한 것 같다.(낙타표기법, 클래스, 상수표기법 등등)
  • 코틀린과 다른점은 자바는 변수 선언할때 초기화할 때 값을 대입하지 않아도 오류가 발생하지 않는다.
int a; //대입 하지 않아도 오류가 나지 않음

#연산자

산술 연산자: + , - , * , / , % (나머지 연산자)
증감(증가 및 감소) 연산자: ++ , --
비교 연산자: == , != , > , < , >= , <=
논리 연산자: && (AND), || (OR), ! (NOT)
대입 연산자: = , += , -= , *= , /= , %=
삼항 연산자: ? :
  • 주의) 산술 연산자시, 0으로 나누기 안됨 (오류발생)

 

  • 차이점1) 코틀린과 다른점은 문자열과의 동등 비교는 .equls() 메소드를 사용해야 한다
boolean result1 = "hello".equals("hello");
//문자열이 같은지 비교할 때는 == 이 아니라 .equals() 메서드를 사용

 

  • 차이점2) 자바에는 삼항연산자 라는 것이 있다.
//구조
(조건) ? 참_표현식 : 거짓_표현식

//예시
String status = (age >= 18) ? "성인" : "미성년자"; //age가 18이상이면 "성인"이고, 그게 아니면 "미성년자"

 

 


#조건문 (if문, else문, if-else문, else생략, switch문, 새로운switch문)

//if문
if (condition) {
 // 조건이 참일 때 실행되는 코드
}

//else문
if (condition) {
 // 조건이 참일 때 실행되는 코드
} else {
 // 만족하는 조건이 없을 때 실행되는 코드
}

//if-else문
if (condition1) {
 // 조건1이 참일 때 실행되는 코드
} else if (condition2) {
 // 조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
} else if (condition3) {
 // 조건2이 거짓이고, 조건3이 참일 때 실행되는 코드
} else {
 // 모든 조건이 거짓일 때 실행되는 코드
}

//else 생략 코드
if (condition1) {
 // 조건1이 참일 때 실행되는 코드
} else if (condition2) {
 // 조건1이 거짓이고, 조건2가 참일 때 실행되는 코드
}

//switch문
switch (조건식) {
 case value1:
 // 조건식의 결과 값이 value1일 때 실행되는 코드
 break;
 case value2:
 // 조건식의 결과 값이 value2일 때 실행되는 코드
 break;
 default:
 // 조건식의 결과 값이 위의 어떤 값에도 해당하지 않을 때 실행되는 코드
 }
 
 //새로운 switch문 예시
int grade = 2;
int coupon = switch (grade) {
case 1 -> 1000;
case 2 -> 2000;
case 3 -> 3000;
default -> 500;
 }

 

  • 차이점) 코틀린에선 when과 else를 쓰는데 → 자바에서는 switch와 default를 쓴다.

 

 


#반복문(while, do-while, break, continue, for)

//while문
while (조건식) {
 // 코드
}

//do-while문
do {
 // 코드
} while (조건식);

//break
while(조건식) {
 코드1;
 break;//즉시 while문 종료로 이동한다.
 코드2;
}
//while문 종료

//continue
while(조건식) {
 코드1;
 continue;//즉시 조건식으로 이동한다.
 코드2;
}

//for문1 예시
for (int i = 1; i <= 10; i++) {
 System.out.println(i);
}

//for문2
for (;;) {
 // 코드
}

 

#형변환

int -> long -> double
작은 범위에서 큰 범위로는 대입할 수 있다.
이것을 묵시적 형변환 또는 자동 형변환이라 한다.

큰 범위에서 작은 범위의 대입은 다음과 같은 문제가 발생할 수 있다. 이때는 명시적 형변환을 사용해야 한다.
ㄴ소수점 버림, 오버플로우

연산과 형변환
ㄴ같은 타입은 같은 결과를 낸다.
ㄴ서로 다른 타입의 계산은 큰 범위로 자동 형변환이 일어난다.

 


#배열

int[] students; //1. 배열 변수 선언
students = new int[5]; //2. 배열 생성

//배열사용
students[0] = 90; //변수 값 대입
students[1] = 80;

//배열 리펙토링
students = new int[]{90, 80, 70, 60, 50}; //배열 생성과 초기화

//간단한 배열생성
int[] students = {90, 80, 70, 60, 50};

//2차원 배열
int[][] arr = new int[2][3] // arr[행][열] , arr[row][column]

 

  • 차이점) 코틀린과 다르게 향상된 for문이 존재했다.
//향상된 for문, for-each문
for (int number : numbers) {
 System.out.println(number);
}

 


#메서드

public static int add(int a, int b) {
 System.out.println(a + "+" + b + " 연산 수행");
 int sum = a + b;
 return sum;
}

 

  • public : 접근 제어
  • static : 정적 메서드
  • int : 반환 타입
  • add : 메서드에 이름
  • (int a, int b) : 파라미터, 매개변수
  • 인자(인수) : 메서드 내부로 들어가는 값

  • 반환타입이 없는 경우 void 로 써야하고, return은 생략해도 된다. (코틀린의 Unit과 비슷)

 

 

블로그의 정보

꿈틀꿈틀 개발일기

jeongminy

활동하기