포스코x코딩온 웹 풀스택 양성과정

[포스코x코딩온] 웹 풀스택 과정 16주차 회고 | JAVA 기본 문법

Codult 2024. 4. 5. 15:28
728x90

 

📌 기본형 데이터타입

논리 타입

  • boolean : true / false

문자 타입

  • char: 하나의 문자 (ex. 'A')

정수 타입

  • byte
  • short
  • int : 가장 많이 쓰는 정수 타입
  • long

실수 타입

  • float : 뒤에 f를 붙여 주어야 함 (float e = 3.5f)
  • double : 가장 많이 쓰는 실수 타입


📌 참조형 데이터 타입

  • 배열에 대한 레퍼런스
  • 클래스에 대한 레퍼런스 (ex. String)
  • 인터페이스에 대한 레퍼런스

 

📌 입력과 출력

입력

  • Scanner 클래스를 이용한다.
  • Scanner 클래스 내 System.in으로 키를 읽는다.
  • 읽은 값을 String, int, double, boolean, char 등 다양한 타입으로 변환하여 리턴한다.
  • 입력되는 키 값의 공백(\n, \t, )을 기준으로 아이템 단위가 구분하여 읽는다.

Scanner 클래스 주요 메서드

next() 공백 이전까지의 문자열을 읽는다.
nextLine() enter(\n) 이전까지의 문자열을 읽는다.
next자료형() 공백 이전까지의 자료형을 읽는다. (ex. nextInt(), nextDouble(), nextBoolean(), nextFloat())
close() scanner 닫는다.

출력

  • System.out.print();
  • System.out.println();
    : 마지막에 enter(\n)를 자동으로 넣어준다.
  • System.out.printf()
    : 형식지정자를 통해 특졍 변수의 타입을 지정하여 출력할 수 있다.
    <형식지정자>
    %d: 정수
    %f: 실수 (출력되는 소수점 자리 지정 가능 ex. %.2f: 소수점 둘째자리까지 출력)
    %s: 문자열
    %c: 문자
    %b: boolean
import java.util.Scanner;

public class Scan {
	public static void main (String[] args) {
    	System.out.println("이름, 나이, 키, 결혼 여부를 빈칸으로 분리하여 입력하세요.");
        // Scanner 가져오기
        Scanner scanner = new Scanner(System.in);
        
        String name = scanner.next();
        int age = scanner.nextInt();
        double height = scanner.nextDouble();
        boolean single = scanner.nextBoolean();
        
        System.out.printf("이름은 %s, 나이는 $d, 키는 %.1fcm, 결혼은 %b", name, age, height, single).println();
        
        // Scanner 닫기
        scanner.close();
    }
}


📌 BigDecimal 클래스

  • float, double과 같은 실수형 타입의 경우, 근사값을 사용하기 때문에 금융 계산과 같은 정밀도가 중요한 연산에는 적합하지 않음.
  • 이를 대체하기 위해, BigDecimal 클래스를 import 하여 사용한다.
  • 문자열 생성자를 이용하는 것이 부동소수점 오류를 피할 수 있는 가장 안전한 방법이다.
  • 기본 산술 연산자가 아닌, 클래스 내 메서드를 이용한다. (add, subtract, multiply, divide)
  • 정확한 계산으로 인해 성능이 떨어질 수 있기 때문에, 정밀한 연산이 필요한 경우에만 사용하는 것이 좋다.
import java.math.BigDecimal;

public class Basic {
	public static void main(String[] args) {
    	BigDecimal a = new BigDecimal ("0.2");
        BigDecimal b = new BigDecimal("0.5");
        
        BigDecimal sum = a.add(b); // a+b
        BigDecimal diff = a.subtract(b); // a-b
        BigDecimal multi = a.multiply(b); // a*b
        BigDecimal divi = a.divide(b); // a/b
    }
}


📌 조건문 (if, switch)

  • if 문
    ※ if 문의 조건으로 문자열 비교 시, .equals(" ")으로 비교해야 함. (문자열은 레퍼런스 자료형인 String 자료형이므로, 문자열이 저장된 메모리 주소값에 접근이 가능한 것으로, == 연산자로 비교가 불가능)
if (name.equals("홍길동")) {
	System.out.println("홍길동님 환영해요.");
} else {
	System.out.println("익명님 환영해요.");
}
  • switch 문
switch (number % 3) {
	case 0:
    	System.out.println("3의 배수입니다.");
        break;
    default:
    	System.out.println("3의 배수가 아닙니다.");
}


📌 반복문 (for, while, forEach)

  • for 문
for (int i = 0; i < 10; i++) {
	System.out.print(i);
}
  • while 문
int i = 0;
while(i<10){
	System.out.print(i);
	i++;
}
  • do-while 문
int i = 0;
do {
	System.out.print(i);
    i++;
}
while(i<10);


📌 메소드

메소드 선언

  • 반환값과 매개변수를 타입과 함께 명시한다.
  • 반환 값이 없는 경우:
public class Main {
	public static void hello() {
    	System.out.println("안녕하세요");
    }
    public static void main(String[] args) {
    	hello();
    }
}
  • 반환 값이 있는 경우:
public class Main {
	public class int sum(int num1, int num2) {
    	return num1 + num2;
    }
    public static void main(String[] args) {
    	System.out.println(sum(1,2));
    }
}

메소드 오버로딩

한 클래스 내에서, 매개변수의 타입, 갯수, 순서가 다른 경우 동일한 이름의 메소드를 여러 개 정의하는 것을 뜻한다.

public class Func {
	// 정수 두개를 더하는 메서드
    public int add (int a, int b) {
    	return a + b;
    }
    // 실수 두개를 더하는 메서드 - 매개변수 타입이 다름
    public double add (double a, double b) {
    	return a + b;
    }
    // 정수 세개를 더하는 메서드 - 매개변수 갯수가 다름
    public int add (int a, int b, int c) {
    	return a + b + c;
    }
    
    public static void main(String[] args) {
    	Func calc = new Func();
        
        System.out.println(calc.add(1, 10));
        System.out.println(calc.add(0.02, 0.03));
        System.out.println(calc.add(10, 50, 100));
    }
}
728x90