이론 정리/java 56

JAVA에서 ArrayList와 LinkedList에 관해, 그리고 vector

JAVA에서 ArrayList와 LinkedList에 관해, 그리고 vector ArrayList클래스 java의 Collection중 하나이다. ArrayList는 기존 자바 List와 달리 동적으로 크기가 할당된다. ArrayList는 java 메모리의 주소를 사용하여 데이터를 저장시킨다. 실질 ArrayList의 내부는 배열의 형태를 갖고 있기 때문이다. 그렇기 때문에 데이터를 검색할 때에도 바로 검색할 수 있다. 알아보기 쉽게 표현하자면 다음과 같다. 이런 식으로 각각의 data들이 하나씩 존재한다. 그럼 여기서 값을 추가하려면 어떻게 될까? 이런 식으로 새로운 값을 넣어주려면, 저 노란 색의 데이터가 들어가기 위해 뒤의 값들을 하나하나 옮겨주어야 할 것이다. 해당 위치를 찾아가서 값을 넣어준 뒤..

이론 정리/java 2022.02.26

java에서 String & StringBuffer & StringBuilder에 관해

java에서 String & StringBuffer & StringBuilder에 관해 String 먼저 java에서 String을 쪼개어 보면 이렇게 나온다. String -> final char[] 이걸 보면 자바에서 string은 final인 char의 배열로 선언되어 있다. 즉, String의 경우는 문자를 선언하게 되면 이것이 final형식으로 불변객체로 선언되게 된다. String에서 +연산자를 사용해 본 적은 있어도, -연산자롤 사용해 본 사람은 없을 것이다. 이는 String의 경우는 String pool영역에 있는 불변 객체이기 때문이다. 그렇다면 +연산자는 된다면.. String에 어떠한 값을 더하면 어떻게 될까? String str = "hell"; str += "o"; str += ..

이론 정리/java 2022.02.25

java HashMap의 Thread-Safe이슈와 HashTable, ConcurrentHashMap

HashMap의 Thread-Safe이슈와 HashTable, ConcurrentHashMap Thread-Safe란? Thread-Safe란, 멀티 스레드 프로그램에서 어떤 객체나 함수 등이 여러 스레드로부터 동시에 접근이 이루어져도 문제 없이 실행이 가능한 것이다. 동기화(Synchronize)라고도 표현하며, 여러 쓰레드에서 작업이 이루어져도 데이터의 정합성이 유지되는 것이다. 멀티 스레드가 뭔데?? 먼저 스레드란 프로세스 내에서 일을 처리하는 세부실행 단위를 뜻한다. 그렇다면 멀티 스레드란, 하나의 프로세스를 여러 개의 스레드로 나누어 수행해주는 것이다. 즉, 하나의 프로그램이 여러 작업을 동시에 수행할 수 있도록 해주는 것이며 이를 통해 수행 능력을 향상시켜 주는 개념이다. HashMap에서 T..

이론 정리/java 2022.02.25

java배열 다중 정렬하기

2차원 배열의 정렬의 경우 int arr[] = {{1,1}, {1,4}, {3,4}, {1,2}}; 이렇게 되어있는 배열 arr을 [1,1][1,2][1,4][3,4] 이렇게 배열하려면 Arrays.sort(arr, (o1, o2) -> { if(o1[0] == o2[0]){ return Integer.compare(o2[1], o1[1]); }else{ return Integer.compare(o2[0], o1[0]); } }); 이런 식으로 해 주면 된다. 그러면 만약에 2번, 3번, 4번....이렇게 더 비교하려면 어떻게 할까? Arrays.sort(arr, (o1, o2) -> { if(o1[0] == o2[0]){ if(o1[1]==o2[1]{ return Integer.compare(o2[2..

이론 정리/java 2021.09.06

패캠 - java/spring 웹 개발 강의 수업 정리(2)

객체지향의 4대 특징 1. 캡슐화 객체의 속성을 보호하기 위해 사용 ex) 컴퓨터 본체 안에 부품이 많이 있는데, 실제로 해당 부품에 전기를 공급할 필요 없이 컴퓨터 전원을 누르면 켜짐. method설계 - 속성이 선언되었으나, 이의 상태를 변경하는 method가 없다면 잘못 선언된 속성이다. 즉 자신이 가지고 있는 속성에 대해서는 해당 상태를 변경하는 기능을 제공해야 한다. - 실물 객체가 가진 기능을 모두 제공해야 한다. - 각각의 Method는 서로 관련이 있어야 한다. - 객체 안의 Method는 객체 안의 속성을 처리해야 하며, 다른 객체를 전달받아 해당 다른 객체에 정의된 속성을 직접 처리하면 안된다. 즉 자신의 속성만을 처리해야 한다. (혹시 외부에서 가져온다면 객체의 형태가 아니라 매개변수..

이론 정리/java 2021.06.28

패캠 - java/spring 웹 개발 강의 수업 정리(1)

객체 지향 예전에는 C언어와 같은 절차 지향 언어가 주를 이루었다. '절차 지향'이란, 실행하고자 하는 순서대로 명령어를 입력하여 실행하는 방법이다. 과거에는 프로그램의 단위가 크지 않았고, 간단한 logic을 순차적으로 처리했기 때문에 절차지향을 사용했는데, 이후 컴퓨터가 발전하면서 프로그램이 복잡해져 유지보수, 개발기간 등 부분에서 비효율이 발생하였다. 이 어려움을 해결하기 위해 객체지향이 도입되었다. '객체지향'이란, 현실에 존재하는 사물을 있는 그대로 모델링하여, 이들의 행위와 속성을 정의하고 절차적이 아닌 객체가 중심이 되어 실제 사물이 동작하는 방식으로 설계한 것이다. 사물(객체), 행위(Method), 사물의 속성(변수-variable)을 사용하였다. 자바와 C++의 차이 java는 시스템 ..

이론 정리/java 2021.06.28