Programming/JAVA

[2023.01.05] 문자열 형변환/length/parseInt/substring/Math

녱녱 2023. 1. 5.

프로그래머스에서 문제를 풀면서 모르지는 않지만 한번에 떠오르지 않거나 헷갈리는 부분들을 정리해 보려고 한다!

 

문자열 형변환 [String.valueOf()/Object.toString()/Casting]

형변환 시 사용하는 메소드로, Object 값을 String 형으로 변환할 때 주로 사용하는 메소드이다.

Casting (String)

  • 파라미터가 null -> NullPointerException
  • Object 값이 String이 아니면 ClassCastException

Object.toString()

  • Object(Wrapper Class)의 데이터를 String 문자열로 변환
  • 기본 toString 메소드 -> "클래스이름@16진수로 표시된 해시코드" 형태의 문자열 반환
  • 파라미터가 null -> NullPointerException
  • Object 값이 String이 아니어도 출력
  • 주로 디버깅 시 사용
  • 오버라이딩 하여 사용하는 것을 추천

String.valueOf()

  • 어떤 값을 넣어도 String 문자열로 변환해 줌
  • 파라미터가 null -> 문자열 "null"

 

크기 관련 length/length()/size

length를 사용하다 안되면 length(),  length()를 썼다 안되면 length를 생각 없이 쓰고 있는 내 모습을 보고 한번 정리할 필요가 있겠다고 생각했다.

 

length

배열의 길이를 구할 때 사용한다.※ int[], double[], String[]

 

length()

문자열의 길이를 구할 때 사용한다.

※ String, StringBuilder ...

 

size()

컬렉션프레임워크 타입의 길이를 구할 때 사용한다.

※ List, Set, Map...

 

Integer.ParseInt(String s)

숫자형의 문자열 값을 파라미터로 받았을 때 해당 값을 10진수의 Integer 형으로 변환해준다

String num1 = new String("1111");
String num2 = new String("2222");
System.out.println(num1 + num2);

위와 같은 경우 num1, num2는 String 타입이기 때문에 "11112222"라는 결과값을 얻게 된다.

만약 두 문자열을 더해 "3333"이라는 결과를 얻고 싶다면? 이럴 때 필요한 것이 바로 parseInt()!

String num1 = new String("1111");
String num2 = new String("2222");

int realNum1 = Integer.parseInt(num1);
int realNum2 = Integer.parseInt(num2);
System.out.println(realNum1 + realNum2);

이렇게 하면 원하던 결과값 "3333"을 얻을 수 있다.

※ 파라미터로 오는 문자열이 반드시 모두 숫자로 이루어져 있어야 한다※

 

문자열 자르기(substring)

종종 문자열을 원하는 위치에서 잘라야 할 때가 있는데, 이 때 사용하는 메소드가 바로 substring()이다.

substring(int index)

파라미터로 받아온 index 값 이후의 문자열을 리턴한다

String str = "뚝딱뚝딱공부하기";
System.out.println(str.substring(4));

// 0 = 뚝 1 = 딱 2 = 뚝 3= 딱 4 = 공 5 = 부 6 = 하 7 = 기

위와 같은 코드의 리턴값은 "공부하기"가 되는 것이다.

 

substring(int start, int end)

start가 자르길 시작하고자 하는 위치, end가 자르기를 끝내고자 하는 위치이다.즉 start 위치에서 시작하여 end 전까지의 값을 리턴한다.

String str = "123456789"
System.out.println(str.substring(2, 6));

위와 같은 코드의 결과 값은 "3456"이 될 것이다.

 

Math 클래스

pow(double a, double b)

전달된 두 개의 double 형을 가지고 제곱 연산을 수행한다. a^b 반환

 

sqrt(double a)

전달된 double형 값의 제곱근 값을 반환

 

max(a, b)

전달된 두 값을 비교해 큰 값을 반환double, float, long, int 자료형이 올 수 있음

 

min(a, b)

전달된 두 값을 비교해 작은 값을 반환

double, float, long, int 자료형이 올 수 있음

 

 

※ Casting(형변환)이란?

특정 변수 또는 상수의 타입을 다른 타입으로 변형시키는 것. 타입이 동등해야 연산 및 비교 수행이 가능하기 때문에 사용한다.

 

※ Wrapper Class

자바의 자료형은 기본타입과 참조타입으로 나뉘게 되는데, 기본 타입의 데이터를 객체로 표현해야 하는 경우가 종종 생긴다. 이럴때 기본 자료타입을 객체로 다루기 위해 사용하는 클래스를 래퍼 클래스(wrapper class)라고 한다. 예를 들어 int가 기본 타입 Integer가 래퍼클래스이다. 박싱/언박싱 등의 개념도 존재한다. 추후 자세히 포스팅 해야겠다!


프로그래머스 레벨1부터 뿌시기를 시작했다. 아주 어렵지 않아서 오늘 10문제를 풀었다.

풀이를 비교해 봤을 때 내가 생각지 못한 메소드들을 사용하는 풀이들이 있었다.모르는 건 아니지만 한번에 바로 팍! 생각하지 못한 메소드들이나 정확히 알지 못하고 냅다 사용하는 메소드들을 정리해봤는데 너무 기본적인 것들이라 꽤 놀랐다...확실히 자료구조를 더 열심히 공부해야겠다는 생각을 했댜...엉엉 나 너무 감자같아

 

📕Reference

https://stackoverflow.com/questions/44132918/is-it-ok-to-add-tostring-to-ease-debugging

https://sundrystore.tistory.com/17

https://m.blog.naver.com/PostView.nhn?blogId=yysvip&logNo=220105002997&proxyReferer=https:%2F%2Fwww.google.com%2F 

https://docs.oracle.com/javase/7/docs/api/

https://coding-factory.tistory.com/547

'Programming > JAVA' 카테고리의 다른 글

[자료구조] Stack  (0) 2023.01.15
[2023.01.12] charAt()  (0) 2023.01.12
[2023.01.11] StringBuilder  (0) 2023.01.11
[2023.01.06]reverseOrder()/toCharArray()  (0) 2023.01.06
JAVA Collection Framework(JCF)  (0) 2022.11.16

댓글