Back-End

[JAVA] 기초 공부(연산자, if)

Minch13r 2024. 12. 26. 16:27

2024-12-26 크리스마스 지난 다음날부터 공부 시작

목표 - 기초부터 튼튼히

단축키 

  • psvm 치고 enter 하면 public static void main 나옴
  • sout 은 system.out.println()

주석은 필수! 왜냐하면 개발자들끼리 소통하기 위해서 필요하기 때문.

주석

이 외에도 코딩을 할 때마다 한줄 코드 -> 주석 이런 식으로 습관을 들여놓는게 중요.

메서드 및 클래스명은 명시적으로 다른사람이 봐도 이런 역할을 하는구나 싶을 때 사용하면 좋음


메서드나 클래스를 만들 때 이름을 예약어로 사용하면 안 됨. 예약어 말고 다른 단어 사용

ex) public은 안되고 public1은 가능

JAVA의 예약어를 확인하고 싶으면 아래 사이트를 이용하면 된다.

 

https://velog.io/@jsj3282/%EC%9E%90%EB%B0%94%EC%9D%98-%EC%98%88%EC%95%BD%EC%96%B4%EB%93%A4

 

자바의 예약어들

자바에는 총 51개의 예약어가 있다. 자바에 있는 모든 예약어를 전부 사용할 일은 절대 없다. 몇몇 예약어는 이제 사용을 안하기 때문이다. 더 이상 사용하지 않는 예약어는 const와 goto 두 개다. 51

velog.io

 


파일을 실행시키기 위해서는 main 함수가 필요하다

    public static void main(String[] args){
    
    }

 

함수에는 input, output, 기능 이렇게 세 가지 종류가 있다.

input - 입력값, 매개변수, 인자, 인수, 파라미터

output - 출력값, return, 리턴값, 반환값, 결과값


변수

 

변수는 값을 저장할 수 있는 공간으로 예시를 들자면 int a = 1; 이런 식이 될 수 있다. 이 외에도 String, char 등 다양하게 있다. 

JAVA 언어를 개발한 개발자들의 의도는 메모리에 대한 이해도가 없어도 사용가능하게 하자 이것. C언어는 개발자가 메모리를 공간과 주소를 직접 선택하는 번거로움이 있기 때문이다. (JAVA는 C언어 기반임)

 

데이터에는 정수, 실수, 문자, 문자열 등과 같은 종류가 존재한다

ex) 정수 : 1, 3, 1002   → 4byte

      실수 : 3.14, -2.2, 0.01 → 8byte

      문자 : 'a', 'B', '!' 

      문자열 : "apple", "Banana"

      Boolean : True(1), False(0)

 

데이터에는 종류도 다양하고 각각 메모리의 크기도 다 다르다.

이외에 더 다양한 자료형, 데이터 타입을 확인하고 싶으면 아래 링크로 들어가면 된다.

 

https://inpa.tistory.com/entry/JAVA-%E2%98%95-%EA%B8%B0%EB%B3%B8-%EC%9E%90%EB%A3%8C%ED%98%95-%EC%A2%85%EB%A5%98-%EC%B4%9D%EC%A0%95%EB%A6%AC-int-double-char-String

 

☕ JAVA 기본 자료형 & 데이터 타입 - 한눈에 정리

정수 자료형 자바의 정수를 표현하기 위한 자료형은 대표적으로 int, long 이 있다. (byte, short 도 있지만 잘 사용하지 않는다.) 정수형 타입 할당되는 메모리의 크기 데이터의 표현 범위 byte 1바이트

inpa.tistory.com

변수 선언의 차이점

 

변수 선언 오류

변수에 저장한 값 출력할 때 변수를 한 번 초기화 하고 System.out.println(변수); 하는게 정석이다.

오류 확인하고 디버깅 하는거 추천. 어떤 오류인지 모를 떄 생성형AI에게 물어보면 친절하게 알려주고 올바른 답안까지 알려준다. 혼자 공부할 때 적절하게 쓰는거를 추천한다.


연산자 우선순위

괄호 → 증감 연산자 → 곱셈 / 나눗셈 연산자 → 덧셈 / 뺄셈 연산자 → Shift 연산자 → 관계 연산자 → 논리연산자 → 논리곱 연산자 → 논리합 연산자 → 조건 연산자 → 대입 / 할당 연산자

연산자 순서

 


문제 풀이

전공생이라고 자만했다. 나는 a, b, c, d가 계속 덮어씌워지는거를 간과했다. 다시 이해했고 안 까먹을 것 같다.

자가진단

다시 혼자 문제 내보고 풀어봤다. 자가진단 하니까 아직 녹슬지는 않았다 다행이다.

복합대입 연산자
비교 연산자
결과
논리연산자

이 논리연산자 사진은 문장을 코드로 녹여내는 작업(난이도 최하) 

연산자 종합

 

마지막 a>1 || b!=3 ? 10:20 여기서 a=1이고 b=5이므로 false or true => true로 연산 되어서 d의 결과값은 10이 된다.


제어문은 크게 두가지, 조건문과 반복문으로 나뉘는데 문장을 잘 파악하고 어떤걸로 접근할지 잘 결정해야 한다.

조건문 : 일회성, "만약"

반복문 : 다회성, "특정 조건이 만족할 때까지", 범위(a부터 b까지)

 

조건문 예시

// 1. 나이에 따른 영화 관람 등급
if (나이 < 12) {
    System.out.println("관람 불가");
} else if (나이 < 15) {
    System.out.println("12세 이상 관람가");
} else {
    System.out.println("15세 이상 관람가");
}

// 2. 성적에 따른 학점 부여
if (점수 >= 90) {
    학점 = "A";
} else if (점수 >= 80) {
    학점 = "B";
} else {
    학점 = "C";
}

// 3. 날씨에 따른 준비물
if (비가온다) {
    준비물 = "우산";
} else if (눈이온다) {
    준비물 = "장갑";
} else {
    준비물 = "선글라스";
}

 

반복문 예시

// 1. for문 - 정해진 횟수만큼 반복
// 출석부 호명하기
for (int 번호 = 1; 번호 <= 30; 번호++) {
    System.out.println(번호 + "번 학생");
}

// 2. while문 - 조건이 참인 동안 반복
// 배터리가 없을 때까지 휴대폰 사용
while (배터리 > 0) {
    휴대폰사용하기();
    배터리--;
}

// 3. do-while문 - 최소 한번은 실행 후 반복
// 비밀번호 맞을때까지 입력받기
do {
    비밀번호 = 비밀번호입력받기();
} while (비밀번호가틀림);

// 4. for-each문 - 컬렉션의 모든 요소 반복
// 장바구니의 모든 물건 계산하기
for (물건 item : 장바구니) {
    총금액 += item.가격;
}

 

제어문 중에서 "조건문" 이라는 것이 존재하는데 일회성, 특히 "만약" 이라는 단어가 들어갔을 때 조건문에 해당할 확률이 높다. 잘 알고 코드 작성하자. AI에서  Regression과 Classification도 똑같다. 코드 접근을 잘해야 한다. 항상.

조건문 예시(기초)

예시를 위한 코드이고 else {}로 처리해버리면 메모리 누수도 없고 훨씬 좋다. 코드는 간단히, 메모리 누수 없이.

누수 방지

분포도를 찾아보고 가장 많이 위치한 구간을 첫번째에 위치하면 1,2,3번 돌지 않아 메모리 누수 걱정을 안 해도 됨. 간단한 예시. 다른곳에 활용하면 좋을 듯. 코드 적을 때 냅다 적는거 말고 조금 공부하고 생각하고 해보자.

 


코드업 문제 풀기

 

세 정수가 주어지면 그 중 가장 작은 수를 출력한다.

public class Main {
    public static void main(String[] args){
        int a = 3;
        int b = 5;
        int c = 2;
        
        int min = a;
        if(b < min){
            min = b;
        }
        if(c < min){
            min = c;
        }
        
        System.out.println(min);
    }
}

오잉 결과가 이상하다..? 인텔리제이에서 재실행

결과는 다행히 잘 나왔다 이상한 코드업..