본문 바로가기

분류 전체보기213

String은 참조 타입인가요? 안녕하세요! 🐥 오늘은 잠깐 String에 대해 이야기 해보려고 합니다. 정확히는 제가 공부를 하며 헷갈렸던 부분에 대해 이야기 해보겠습니다. Java를 배우면 primitive type(int, long, double, ...)과 String에 대해 가장 먼저 배우게 됩니다. 데이터 활용에 기본이 되는 형태이기 때문입니다. 그런데 String은 primitive type(기본 타입)과는 다르게 class라는 사실도 알고 계셨나요? String은 기본 타입은 아니지만 굉장히 사용 빈도가 높기 때문에 특별히 class로 제작되어 사용되는 타입입니다. Class는 reference type이기 때문에 인스턴스를 만들면 변수에는 데이터 자체가 저장되는 것이 아니라 데이터가 저장된 주소를 담게 된다는 것입니다... 2022. 5. 8.
Interface(인터페이스) 알아보기(1) Class에 대해 배우면서 Class가 object(객체)를 만들기 위한 템플릿이라는 것을 알 수 있었습니다. 그런데 이러한 class를 만들기 위해 존재하는 템플릿도 있는데요, 그것이 바로 interface(인터페이스)입니다. 사실 interface는 inheritacne(상속)의 한계를 극복하고자 등장한 개념이라고 합니다. 상속의 한계에는 뭐가 있었을까요? 바로 하나의 class만 상속이 가능하다는 점이 있었습니다! (그런 한계 때문에 composition 사용을 장려한다고도 했었죠.) 하지만 사람들은 그래도 여러 클래스의 기능들을 불러와서 사용하고 싶었나 봅니다. 아마도 동일한 코드를 반복하여 작성하지 않기 위해서겠죠? 그래서 interface라는 개념이 등장하게 되었습니다. Class를 상속할 때.. 2022. 5. 7.
Autoboxing & Unboxing 지난번에 알아보았던 ArrayList 기억나시나요? ㅎㅎ ArrayList를 생성하기 위해서는 안에 type을 명시해주어야 했습니다. ArrayList 이런 식으로 말이죠. 만약에 integer type을 담는 ArrayList를 만들고 싶다면 어떻게 해야할까요? ArrayList 아닐까요? 하지만 안에는 class type이 들어가야 하기 때문에 위에 처럼 표시를 하게되면 에러가 발생합니다. 변수를 선언할 때 사용하던 int가 아닌 'Integer' 라는 class를 사용해주어야 합니다. double, boolean, byte 등 primitive type에는 모두 "wrapper class"가 있습니다. (Class 여서 그런지 맨 앞 레터를 대문자로 표시하고 있습니다.) 이렇게 primitive t.. 2022. 5. 5.
ArrayList Array는 생성 시에 그 크기를 정해야 합니다. 물론 크기를 늘릴 방법이 있기는 하지만 데이터 양이 많을 수록 작업이 쉽지 않게 됩니다. 배열과 유사하면서도 크기를 자동으로 조절해 주는 도구가 바로 ArrayList입니다. 자동으로 크기가 조절되기 때문에 배열 생성 시의 크기를 정하지 않아도 됩니다. private ArrayList myArrayList = new ArrayList(); ArrayList는 다른 타입의 변수들 선언과 모양이 살짝 다른데요, 안에 type of Object를 명시해주면 됩니다. 맨 뒤에 ()는 empty constructor인데, ArrayList가 class 이기 때문에 자신만의 constructor를 가지고 있는 것이라고 합니다. 보시다시피 안에 들어갈 데이터 .. 2022. 5. 3.
Array-배열 배열은 동일한 타입의 변수들을 하나의 묶음으로 다룰 수 있도록 해주는 도구입니다. 일일이 변수를 만들지 않고도 많은 양의 데이터를 다룰 수 있기 때문에 상당히 편리하죠! 배열의 선언과 생성 배열을 선언하고 생성하는 방법은 다양한데, 많이 사용되는 몇가지 방법들은 다음과 같습니다. 1 2 3 4 //배열 선언 int[] arr; //배열 생성 arr = new int[5]; cs 하지만 보통은 생성과 배열을 한 번에 진행합니다. 1 2 //배열 선언과 생성을 한번에 int[] arr = new int[5]; cs 아래와 같이 생성 시에 데이터를 같이 생성할 수도 있습니다. (이 방법은 배열 변수를 선언할 당시에만 가능한 방법입니다.) 1 2 int[] arr = {1,2,3,4,5}; cs 또 많이 사용되.. 2022. 5. 2.
Class(7)-Up-casting & Down-casting (형변환 업캐스팅, 다운캐스팅) 지난번 ploymorphism에 대해 이야기 했을 때 up-casting이라는 용어가 나왔습니다. Up-casting은 자손 타입을 조상 타입으로 형변환하는 것을 의미합니다. 반대로 down-casting은 조상 타입에서 자손 타입으로의 형변환을 의미합니다. 한 번 도표로 살표보면 이렇게 나타낼 수 있습니다. (도표 추가) Class 간의 casting은 서로 상속관계에 있는 클래스 사이에서만 가능합니다. 그렇지만 Up-casting(자손->조상)은 항상 가능하지만 down-casting(조상->자손)은 문제를 일으킬 수 있습니다. 그 이유는 조상 클래스와 자손 클래스가 가지고 있는 인스턴스의 수* 때문입니다. 자손 클래스는 조상 클래스를 상속하였기 때문에 조상 클래스의 인스턴스를 모두 상속받게 되죠? .. 2022. 5. 1.
반응형