java 55

Java StringBuilder 사용하는 이유와 사용법

String 타입의 문자열에 새로운 값을 추가하고 싶으면 String str = "고양이"; str+="귀여워"; System.out.println(str); >>고양이귀여워 이런식으로 문자열에 바로 '+'를 통해 원하는 바를 얻을 수 있는데 우리는 왜 StringBuilder 클래스를 사용할까? 일단 StringBuilder는 문자열을 버퍼에 담아 그 안에서 추가 수정 삭제 작업을 할 수 있도록 도와주는 클래스이다. 이는 String 문자열의 존재를 유지한체 그 문자열을 수정해주는 반면 '+' 를 통해 String 타입에 추가를 해주는 건 기존의 객체를 수정하는 게 아닌, 새로운 객체를 생성하는 거여서 메모리 할당과 해제를 발생시켜 프래그램의 성능을 저하시키게 된다. 그렇기에 StringBuilder ..

Java/Java 2023.01.21

Java List 에 add() 했을 때 오류 UnsupportedOperationException

오류원인 Arrays.asList() 메소드는 고정길이의 원배열의 list view를 리턴합니다. 즉, 고정길이인 원래 배열의 list view를 리턴하기 때문에 Arrays.asList()를 사용해서 배열을 List로 변환한 후, 길이를 List에 값을 추가하는 것이 불가능하고, 원래 배열의 값을 변경하면 List의 값도 같이 변경됩니다. public class anything { public static void main(String[] args) { Integer[] arr = {1,2,3,4,5}; List list = Arrays.asList(arr); System.out.println(list); list.add(1); } } //출력 [1, 2, 3, 4, 5] Exception in thr..

error , solution 2023.01.20

Java 객체지향 프로그래밍 static (class 변수, instance변수)

우리는 객체를 생성할 클래스 내의 필드에 변수들, 그리고 메서드를 지정해 줄 수 있는데 그 변수를 어떤식으로 활용하게 만들지를 static이라는 키워드를 통해 정할 수 있습니다. 그렇다면 static은 어떤 역할을 하는 키워드일까요? 먼저 static은 클래스의 멤버(필드,메서드,이너 클래스)에 사용하는 키워드입니다. 필드에는 클래스의 속성을 나타내는 변수들을 지정하는데 static을 붙이지 않은 변수인 경우 instance 변수라고 부르고, 그 변수를 사용하기 위해서는 객체를 생성해서 참조변수를 통해 이용해야 합니다(참조변수 이름. 필드변수이름). 반면에 static을 붙인 변수 , 즉 class 변수는 객체를 생성하지 않고 바로 (클래스의 이름.필드변수이름)를 통해 이용할 수 있습니다. # class..

Java/Java 2023.01.15

Java 문자열 나누는 방법, 문자열 자르기 ( substring(), split())

substring() public class CordJgSubString { public static void main(String[] args) { String str = "ABCDEFG"; String result = str.substring(3); System.out.println(result); //출력 DEFG result = str.substring(3,6); System.out.println(result); //출력 DEF } } substring 메서드는 두 가지 활용법이 있다. 첫 번째는 substring(int index)를 이용해서 index 이후의 문자열만 자르는 것이고 두 번째는 substring(int index, int index)를 이용해 첫 번째 index

Java/Java 2023.01.15

Java 컬렉션 프레임워크 Map(HashMap) #로그인 코드 만들기

컬렉션 프레임워크에 속하는 Map 인터페이스는 무엇일까요? Map 인터페이스는 List, Set과 다르게 {key와 value} 쌍으로 데이터를 저장하는 컬렉션을 구현하는 데에 사용됩니다. 키와 값으로 구성된 객체는 Entry 객체라고 하며 Entry 객체를 활용하여 또 다른 메서드를 사용할 수도 있습니다. Map에서 키는 List에서 index 역할과 같이 주로 식별하는 역할을 하며 이러한 특징 때문에 중복 저장될 수 없고, 반면에 값은 중복 저장이 가능합니다. List의 (int index, object o )= Map (Key, value) 라고 생각하면 이해하기 쉬울 것 같네요 Map 인터페이스는 HashMap, HashTable, SortedMap, TreeMap 등의 클래스에서 구현되며 키를 ..

Java/Java 2023.01.14

Java 컬렉션 프레임워크 Iterator

Iterator 란 무엇일까요? Iterator란 자바의 컬렉션(Collection)에 저장되어 있는 요소들을 순회하는 인터페이스입니다. 즉, Collection을 상속받는 List와 Set 인터페이스에서도 사용가능하다는 얘기입니다. Iterator 에는 아래와 같이 총 세 가지 메서드가 있습니다. 다음 요소가 있는지 판단하는 boolean 타입의 hasNext() 다음 요소를 가져오는 next(), 가져온 요소를 삭제하는 remove() next() 메서드와 remove()는 단독으로 사용할 수 없으며 꼭 hasNext() -> next() -> remove() 단계로 사용해야 사용할 수 있습니다. ArrayList list = new ArrayList(); for (int i = 1; i list 요..

Java/Java 2023.01.14

Java 컬렉션 프레임워크 LinkedList vs ArrayList

ArrayList와 LinkedList 의 차이는 무엇일까요? ArrayList는 List안에 갹 엘리먼트들이 순차적으로 저장되어져 있는 구조입니다. 따라서, ArrayList를 읽는다는 것은 붙어 있는 것들을 순차적으로 읽는 것이기에 굉장히 빠르게 읽으 수 있습니다. 반대로 LinkedList는 각 엘리먼트들이 순차적으로 저장되어져 있는 것이 아닌 상태에서 각 각의 엘리먼트들을 연결해서 저장되어져 있는 구조입니다. 따라서, LinkedList를 읽기 위해서는 각 각 연결되어져 있는 노드들을 읽어야하는 과정이 필요하기에 ArrayList에 비해서 읽는 속도가 느릴 수밖에 없습니다. LinkedList linkList = new LinkedList(10); -> 오류 ArrayList arrayList =..

Java 2023.01.14

Java 컬렉션 프레임워크_List_ArrayList (Collection framework)

컬렉션 프레임워크 뭘까요? 컬레션 프레임워크는 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합을 의미합니다. 이러한 컬렉션 프레임 워크에는 List와 Set 인터페이스를 상속하는 Collection 인터페이스와 (key,value)의 값을 가지는 Map 인터페이스가 존재하는데 이 중 먼저 Collection의 상속을 받는 List에 대해서 알아보겠습니다. Collection 은 위에서 말한 것처럼 List와 Set을 상속하는 인터페이스인데요 순서가 있거나, 집합적인 저장공간을 나타내는 특징이 있으며 이 각각의 특징은 나뉘어 List -> 순서가 있는 저장 공간 Set -> 집합적인 저장 공간 으로 나뉘게 됩니다. List는 데이터의 순서가 유지가 되며, 중복 저장이..

Java/Java 2023.01.14

Java 재귀를 이용하여 홀수 구하기, 홀수 판별하기,홀수 짝수 판별하기

public class isOdd { public static boolean f(int num) { if (num == 0) return false; if (num == 1) return true; if (num 0) { return f(num - 2); } return true; } public static void main(String[] args) { System.out.println(f(100)); } } //출력 false 재귀함수를 이용하여 홀수를 구할 수 있다. if(num>0) 인 경우 f (100) 이 들어가면 다시 f(98)이 되고 f(96)->f(94).....->f(2)->f(0) 이라는 흐름을 가지게 된다 num이 0이 되는 순간 재..

Java/Simple code 2023.01.13