study

(230425) Java / Codeup 1037까지

hjkeeeem 2024. 7. 25. 20:22

2진수 - Binary / 0과 1

8진수 - Octax / 1 ~ 8

10진수 - Decimal / 1 ~ 10

16진수 - Hexadecimal / 1 ~ 16

 

Q. 10진수 대신 16 진수를 쓰는 이유

A. 컴퓨터는 2진수 기반이라 16진수가 더 익숙하기 때문. 인간에게는 10진수가 익숙하듯

 

 

문자열 포맷팅

- String.format을 이용해 더 간편하게 사용 (값이 두 개 들어가야 할 때 유용함)

public class StringFormatting {
    public static void main(String[] args) {
        String name="backend";
        int balance = 10000;
        String result = String.format("%s님의 통장 잔고는 %d원 입니다.", name, balance);

        System.out.println(result);
    }
}

 

문자열 자르기

- .substring() 사용하기

public class StringSub {
    public static void main(String[] args) {
        String str ="Hello";
        System.out.println(str.substring(0,1)); // h
        System.out.println(str.substring(0,2)); // he
        System.out.println(str.substring(1,3)); // el
    }
}

- 문자열 자르고 붙이기 ( 주민번호 - 제외하고 출력하기 )

import java.util.Scanner;

public class Codeup1020 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String number = sc.nextLine();
        String frontNum = number.substring(0,6);
        String backNum = number.substring(7,14);

        System.out.println(frontNum+backNum);
    }
}

문자열 자르기 - .split()

public class StringSplit {
    public static void main(String[] args) {
        String str = "10 3 19 28 7 488";
        String[] strArr = str.split(" ");
        System.out.println(strArr[0]); //10
        System.out.println(strArr[1]); // 3
        System.out.println(strArr[2]); //19
        System.out.println(strArr[3]); //28
        System.out.println(strArr[4]); // 7
        System.out.println(strArr[5]); //488
    }
}

 

 

문자열을 비교할 때는 == 연산자가 아닌 equals 를 사용해서 비교해야 한다.

new를 할 때 새로 생성을 하지 않기 때문에 String을 쓰면 메모리 효율적이다.

 

public class StudentMathScore {
    public static void main(String[] args) {
        int[] iArr = new int[5];

        System.out.println(iArr[0]);
    }
}

Q. 값을 넣은 적이 없는데 왜 0이 나오나요?

A. 배열 선언 시 new를 할 때 기본값으로 0이 들어감.

 

+ 배열은 참조타입이지만 구성하고 있는 것들은 원시타입

 

 

 

 

 

 

 

 

 

 

 

codeup 19번 문제

 

Codeup1033 문제

import java.util.Scanner;
public class Codeup1033 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int hexadecimal = sc.nextInt();

        System.out.printf("%X",hexadecimal); //대문자로 출력 시 x도 대문자로 입력
    }
}

 

Codeup1034 문제

import java.util.Scanner;

public class Codeup1034 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String octax = sc.next(); //int가 아닌 String으로 입력 받기
        int decimal = Integer.valueOf(octax, 8); //Integer.valueOf 사용하여 변경

        System.out.printf("%d",decimal);
    }
}

 

Codeup1036 문제 - 입력받은 값 아스키코드로 변경 후 10진수로 출력

import java.util.Scanner;
public class Codeup1036 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);

        char ascii = sc.next().charAt(0); //charAt을 이용해 아스키코드로 변경
        System.out.println((int)ascii); // 강제형변환으로 아스키코드 -> 10진수
    }
}

 

Codeup1037문제 - 10진수로 입력받아 아스키코드 값으로 출력하기

import java.util.Scanner;

public class Codeup1037 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int decimal = sc.nextInt(); //10진수로 입력받은 값
        System.out.println((char)decimal); // char 형변환을 통해 아스키코드값으로 변경
    }
}

+ 8진수로 출력 시 souf + %o

+ 16진수로 출력 시 souf + %x

+ 대문자로 출력 시 souf + %[대문자]