Program Language/Java8 자바에서의 다양한 문자열 포맷팅 방법(feat. MessageFormat) 복잡한 거 아니니깐 빠르게 알아보자!1. String 더하기단순하지만 강력한 방법이다다만.. 복잡시럽게 보일 수 있다는 단점 존재2. printfC언어를 배웠다면 익숙한 그 printf문법당연히 패딩넣기도 된다.다만 %p, %x등의 메모리 관련 포맷형식을 사용하면 UnknownFormatConversion 예외가 발생한다자바만의 특이점으로는 %h를 통해 메모리해시값을 얻을 수 있다. 슬프지만 당연하게도 Primitive type은 메모리주소를 알 수 없다3. String.format()printf와 비슷하게 형식을 지정할 수 있다그럼 차이점이 뭐야? 할 수 있는데, printf는 포맷팅 동시에 출력이 되는 방식이고, String.format은 반환형인 String으로 만들어서 재사용한다던지, 좀 더 가공.. 2024. 8. 29. Mutable/Immutable Object의 Value를 계속 변경하면 무슨 일이 발생할까? (feat. VisualVM, GC) 이번 포스팅으로 Immutable 객체의 상태(값)을 반복해서 변경하면 무슨 일이 발생하는지 알아보자 관찰점: 힙 메모리가 어떻게 변하는지, 힙 메모리에 올라온 객체를 재사용하는지, GC가 몇 번 발생하는지Visual VMHeap 메모리를 관찰하는 Tool로 VisualVM을 사용할 것이다 이 프로그램은 몇몇 플러그인을 설치할 수 있는데, 나는 GC를 보기 위해 Visual GC 플러그인을 설치했다 예제 코드Immutable(Integer)실행결과를 예상해보자이전 포스팅 글들을 봤다면 Integer를 이런 식으로 더하다보면 새로운 힙 메모리가 할당된다고 예상할 수 있을 것이다x += 10; // 이 코드는 아래 코드로 변환되어서 실행x = Integer.valueOf(x.intValue() + 10); .. 2024. 8. 27. 자바에서 두 변수 값 바꾸기(Swap, Generic, Wrapper) 앞의 글들을 보고 왔다면 자바에서의 Call By Value때문에 특정 메서드 내에서 지지고 볶아도 값이 바뀌지 않는다는 것을 알 수 있을 것이다Call by Value with primitive type - 잘못된 사용- 실행결과두 값이 바뀔 수 있도록 해보자!! Custom Wrapper Class 사용(Call by Value with mutable reference type)임시로 값을 담을(Wrapping) 클래스를 정의하자잘 바꼈다!!근데 뭔가 좀 아쉽다.. 더 개선할 수 있는 부분이 없을까?? IntegerWrapper를 GenericWrapper로 변환자바의 Generic을 활용해 어떤것이든 담을 수 있게 해보자Generic으로 담았기 때문에 Integer, Long타입 둘 다 값이 바뀌는.. 2024. 8. 24. Reference type(Mutable Object)의 Call By Value 살펴보기 2 이전 글에서는 Reference Type 인자로 전달될때 Call By Value의 동작에 관해서 JNI로 살펴보면서 Integer, AtomicInterger를 통해 객체 타입이 불변/가변으로 나뉠 수 있다는 것을 배웠다 이번 글에서는 Reference Type으로 전달 가능한 가변 객체에는 어떤 것들이 있는지 살펴본다 Call By Value와 가변 객체를 활용해서 객체를 넘기고 외부의 메서드에서 객체의 상태(값)을 변경하는 예시코드를 더 살펴보자 - Array- List- Map- Set - Custom Object(Custom Wrapper Class)이건 내부 구현 로직에 따라 가변or불변으로 구현할 수 있다. 여기서는 가변객체로 만들어본다 > 가변 Custom Object값이 변한 것을 볼 수.. 2024. 8. 23. Reference type의 Call By Value 살펴보기(feat. JNI, Immutable/Mutable) 저번 Primitive type글에 이어서 작성한다저번 글을 못봤다면, 여기 Java 카테고리에 있는 이전 글을 살펴보면 된다 이전 글의 서두를 옮겨와봤다최근에 다시 자바공부를 하다가 이런 면접 질문이 있는 것을 봤다Java는 Call by Value 일까요? 아님 Call by Reference 일까요?사실 이 질문 자체로는 틀린 질문이라 생각한다일단 맞는 질문으로 변환해보면Call by Value 와 Call by Reference 의 차이점에 대해서 말해주세요그럼, Java는 Call by Reference 방식을 지원할까요?라는 꼬리질문식 질의문이 되어야 맞는다고 생각한다 자, 그럼 왜 저런 질문을 하는걸까?일단 질문의 의도는 2가지이다1. 헷갈리게 만들기2. Java의 기본 동작과정을 잘 이.. 2024. 8. 21. Primitive type의 Call By Value 살펴보기(feat. JNI) 최근에 다시 자바공부를 하다가 이런 면접 질문이 있는 것을 봤다 Java는 Call by Value 일까요? 아님 Call by Reference 일까요?사실 이 질문 자체로는 틀린 질문이라 생각한다일단 맞는 질문으로 변환해보면Call by Value 와 Call by Reference 의 차이점에 대해서 말해주세요그럼, Java는 Call by Reference 방식을 지원할까요?라는 꼬리질문식 질의문이 되어야 맞는다고 생각한다 다른 글에서 쓴 내용이긴 하지만 영어 자체를 하나하나 짤라서 해석해보자 Call 이란 무엇일까?내가 vba다음으로 배운 언어인.. C언어를 예로 들어본다C언어를 배울때 나오는 것은 함수의 선언/호출/정의부 용어가 나온다영어로는 Declaration/Call/Definition라.. 2024. 8. 20. Whitespace Characters 제거하기 + 여러가지 Whitespace Characters는 공백문자 그리고 이 WhiteSpace Character의 종류에는 1. 가로 크기를 차지하는 공백 문자(눈에 보임) 2. 세로 크기를 차지하는 공백 문자(눈에 보임) 3. 1 또는 2지만 눈에 보이지 않는 공백 문자가 있다 특히 3번의 경우는 일부러 사용하는 경우도 있고(화면에 보여줄 때), 일부러 제거하는 경우도 있다(서버에서 받을 때) 아니 3번같은게 어디 있어~? 라고 말씀하시는 분들은 아래에 더블클릭으로 보라돌이 뚜비 나나 뽀를 선택해보자 NORMAL의 경우는 전체가 블록으로 지정되고, SPACE의 경우는 공백마다 블록 지정, ZERO_WIDTH_SPACE의 경우에는 눈에는 NORMAL이랑 비슷하지만 [보라돌이]를 누르면 보라돌이만 선택되고 [뚜비]쪽을 .. 2022. 11. 26. 폰으로 쓰는 짧글 DTO 클래스를 Map으로 변환해보면 LinkedHashMap이 된다- 순서를 보장하며 해시의 시간복잡도를 가지는 맵이다 나중에 인터페이스 자료형. 구현체의 차이 해시테이블 해시맵 멀티스레드에 안전한 형태 자바에서는 해시충돌을 이중함수로 해결하는데 어떻게 해결하는지.. 사이즈별 리스트는 어떻게 변하는지 등 자료구조에 대한 재밌는 글도 쓰려한다 2022. 5. 17. 이전 1 다음