목록java (3)
허허의 오늘은 뭐 먹지?
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/lW7Bz/btq54oIMLhL/kpHKTPCnYegdjhMejFVEYK/img.png)
Call by Value는 함수가 호출될 때 값을 전달해주고, Call by Reference는 함수가 호출될 때 주소를 전달해준다. 그래서 Call by Value는 호출한 함수안에서 값을 어떻게 지지고 볶든 local value의 성격을 지니기 때문에 함수가 종료한 후에 값이 변화되지 않지만, Call by Reference는 주소를 바로 참조하기 때문에 호출한 함수에서의 변경이 함수가 종료된 이후에도 남는다. 그런데 JAVA는 int, float, double등 primitive type에 대해서는 Call by Value이고, array나 class instance등은 Call by Reference로 작동한다라고들 한다. 이게 무슨 이야기인지, 아래 예제를 보도록 하자. public class ..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/I5NJm/btq3098aaDK/DhwYf0K6cyFuu9GsNrIHq0/img.png)
평소에 코딩할 때 간편하다는 이유로 stream을 많이 쓰는 편인데 list와 stream하고 비교하면 어떤 것이 더 속도가 빠를지 궁금해졌다. 그래서 반복문을 사용하는 것과 stream을 이용하는 것의 비교를 해보기로 했다. public static List useFor(List integerList) { List res = new ArrayList(); for(int i : integerList) { if(i % 2 == 0 && i % 3 == 0) { res.add(i); } } return res; } public static List useStream1Filter..
이번 포스트는 JAVA의 String과 Flyweight 디자인 패턴에 대해서 알아보려고한다. JAVA에서 String은 immutable하다고 한다. 이 의미는 무엇일까..?! String a = "test"; String b = "test"; 위와 같은 선언이 있었다고 하자. Stack영역에는 변수 a, b의 value의 주소가, Heap영역에는 변수 a, b의 value가 저장된다. 그리고 그 value는 Heap영역 안에 있는 String Constant Pool 영역에 저장된다. 위 예제에서 a,b 변수값은 "test"로 동일하므로 두 변수의 값은 같은 String Constant Pool의 주소를 가르키게 되는 것이다. 만약 a의 값이 "test2"로 바뀌었다고 했을 때, String Cons..