728x90

Java 9

[Java] Boolean.valueOf()와 Boolean.parseBoolean()의 차이

boolean boolValue; this.boolValue = Boolean.valueOf(boolValueStr); 위 코드를 사용하자 Redundant boxing inside 'Boolean.valueOf(boolValueStr)' IntelliJ에서는 불필요한 박싱이라며 Boolean.parseBoolean(boolValueStr);으로 수정하도록 권하고 있었다. Boolean.valueOf(String)과 Boolean.parseBoolean(String)은 모두 대소문자 구분 없이 "true", "True", "TRUE" 등의 String일 경우 true를 반환하고, 그 외의 경우 false를 반환하는 함수이다. 다만 차이점은 valueOf()는 래퍼 클래스인 java.lang.Boolean..

Java 2022.07.20

[Java] char[]에서 byte[]로, byte[]에서 char[]로 변환하기

지난번 글에서 char array에서 byte array로 변환하는 법을 대충 stack overflow에서 찾아 사용했다고 글을 썼는데, 해당 내용을 블로그에 정리한 뒤 다음에 ByteBuffer와 CharBuffer에 대해서 제대로 정리해 봐야겠다는 생각이 들었다. char[]에서 byte[]로 변환하기 // Buffer를 사용하여 변환하기 private static byte[] toBytesUseBuffer(char[] chars) { if (chars == null) return null; CharBuffer charBuffer = CharBuffer.wrap(chars); ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(charBuffer); by..

Java 2022.05.12

[Java] Java 코드 실행시간 측정하기

가끔 코드를 작성하다 보면 "이 코드가 실행되는 데는 얼마나 시간이 걸릴까?"라는 생각이 든다. 최근 회사에서 어떤 코드가 테스트할 때 1, 2개 정도를 대상으로는 문제가 없었는데 실제로 사용할 때 그 대상이 늘어나니 파이썬이 처리를 하는데 엄청나게 오래 걸렸다 라는 일이 있었다. 그래서 갑자기 Java와 Python의 코드 실행시간을 측정하는 방법은 어떻게 되는지 궁금해져 찾아보고 정리하게 되었다. 1. System.currentTimeMillis() 이용하기 System.currentTimeMillis()은 현재 시간을 ms 단위로 가져오는 함수다. UTC 시간인 1970년 1월 1일 자정부터 현재까지 흐른 시간을 ms 단위로 반환하는 것이다. long startTime = System.current..

Java 2021.11.12

[Java] Maven 라이브러리 Dependency 충돌 해결하기

dependency에서 exclusions에 해당 라이브러리 추가하기 웬만해서는 dependency가 충돌하는 일은 거의 없지만 종종 충돌이 발생할 수 있다. 이럴 경우 pom.xml에서 dependency를 추가하는 부분에 exclusions를 주면 해당 의존 라이브러리는 불러오지 않게 된다. net.jsign jsign-core 4.0 org.bouncycastle bcprov-jdk15on 해당 라이브러리가 불러오는 의존성 라이브러리의 경우 https://mvnrepository.com/ 에서 해당 라이브러리를 검색한 후 사용하는 버전을 선택하면 "Compile Dependencies" 란에서 확인할 수 있다. 사실 이 포스팅에는 슬픈 사연이 있다. 회사에서 사용하는 프로젝트를 조금 더 사용하기 쉽..

Java 2021.11.04

[Java] 메서드 참조(Method Reference)

👓 Overview 메서드 참조(Method Reference)를 사용하면 불필요한 매개변수를 제거하고 :: 기호를 사용하여 해당 메서드를 표현할 수 있다. 클래스명::메서드명 또는 객체명::메서드명 💡 How to use? 메서드 표현식은 람다 표현식에 대응된다. ✔ 클래스명::인스턴스메서드 - 첫 번째 파라미터가 메서드의 수신자가 되고, 나머지 파라미터는 해당 메서드의 인자로 전달된다. (x, y) -> x.compareToIgnoreCase(y) // lambda expression String::compareToIgnoreCase // method reference ✔ 클래스명::정적메서드 - 모든 파라미터가 정적 메서드의 인자로 전달된다. x -> Object.isNull(x) // lambda..

Java 2021.05.21

[Java] javadoc 정리

JDK에는 javadoc이라는 도구가 포함되어 있다. javadoc은 소스 파일로 HTML 문서를 만든다. Java API 문서는 표준 자바 라이브러리의 소수 코드로 javadoc을 실행한 결과다. 소스 코드에 구분자 /**로 시작하는 주석을 추가하면 javadoc을 이용하여 전문가 수준의 문서를 손쉽게 만들 수 있다. 1. 문서화 주석 1.1 주석 넣기 ▷ javadoc 추출 정보 javadoc 유틸리티는 패키지, 공개 클래스와 인터페이스, 공개/보호 변수, 공개/보호 생성자와 메서드 정보를 추출한다. 기능 각각에 주석을 달 수 있고, 주석은 설명할 기능 바로 위에 /** 로 시작하고 */ 마쳐 작성할 수 있다. 문서화 주석(/*_ ... _/)에는 자유 형식 텍스트와 태그들을 적는다. 태그는 @aut..

Java 2021.05.04

[Java] 와일드 카드가 들어간 IP 검사하기!

문자열로 입력된 "123.45.67.89"와 같은 IP를 "123.45.67.*"과 같은 와일드 카드가 들어간 IP 형식과 비교하는 기능을 만들어야 했다. ​ 처음 딱 든 생각은 3번째 자리까지 잘라서 비교하면 되겠네~ 하는 생각이었다. 비교 할 아이피들을 String 타입에서 지원하는 메서드인 substring 메서드를 이용해서 잘라낸 뒤 비교하면 어차피 마지막 자리의 *이 모든 범위를 뜻하므로 해결되는 일이었다. public class IpValidTest { public static void main(String[] args) { String ip = "158.23.1.39"; String validIp = "158.23.1.*"; boolean check = ip.substring(0, ip.la..

Java 2020.07.13

[Java] StringBuffer / StringBuilder

Java에서 문자열을 다룰 때 String을 주로 사용하게 된다. 하지만 String은 새로운 값을 할당할 때마다 새로운 주소 값이 생성되어 할당된다. 이 때문에 String 값이 계속해서 변하게 되면 새로운 String의 주소 값들이 Stack에 쌓이게 되고 이는 Garbage Collector가 돌기 전까지 메모리에 쌓이게 되기 된다. 따라서 계속해서 문자열을 변경하는 경우에는 값을 메모리에 append 하는 방식인 StringBuffer와 StringBuilder를 사용하는 것이 좋다. 1. StringBuffer, StringBuilder 기본적으로 StringBuffer와 StringBuilder의 사용법은 동일하다. 둘의 가장 큰 차이점은 StringBuilder는 멀티 스레드 환경에서 안전하..

Java 2020.06.02

[Java] BufferedReader / BufferedWriter 사용법

코딩 테스트 문제를 풀어보기 위해 Beakjoon Online Judge에서 기초부터 문제를 풀고 있는데 15552번 "빠른 A+B" 문제에서 BufferedReader, Writer에 대해 알게 되었다. 아마 대학에서 배웠을 테지만 쓰지 않다 보니 잊은 것 같다. 1. Buffer BufferedReader와 BufferedWriter는 버퍼를 이용해서 읽고 쓰는 클래스로, 버퍼를 사용하기 이용하기 때문에 이 함수를 이용하면 입출력의 효율이 좋아진다. 키보드나 모니터와 같은 외부 장치와의 데이터 입출력은 CPU의 성능 차이가 크기 때문에 버퍼를 두고 모아두었다 한 번에 전송하는 것이 효율적이다. 2. BufferedReader BufferedReader는 개행 문자를 경계로 인식하고 받은 데이터가 St..

Java 2020.06.01
728x90