Vector vs ArrayList vs LinkedList 특징 List 컬렉션의 하위 목록으로 객체를 일렬로 나열하는 구조이다. 객체를 인덱스로 관리하기 때문에 객체를 저장하면 자동 인텍스가 부여되고 인텍스로 객체를 검색, 삭제 기능까지 가능하다. 1. Vector ArrayList와 동일한 내부구조를 가지고 있느며 선언하는 방식 또한 유사하다. Vector는 동기화된 메소드로 구성되어 있기 때문에 멀티 스레드가 동시에 이 메소드를 실핼 할 수 없고, 하나의 스레드가 완료된 후에야 다음 스레드를 작동 할 수 있다. 즉, 스레드 안정성이 보장이 되는 것이다. 2. ArrayList List 인터페이스의 구현 클래스로 인덱스로 관리한다는 점에서는 배열과 유사하지만 배열 크기가 개변적이라는 점에서 차이를 ..
public static void main(String[] args){} 모든 프로세스는 main() 명령어로부터 시작되는데 이는 main()을 선언 하는 것으로 Thread를 작동시키는 것을의미한다. 그렇다면 String[] args의 의미는 무엇일까? 1. 의미 String[] args 의 문장을 보면 마치 String 배열의 변수를 선언하는 형태와 같다. 이는 초기 도스에서 JAVA를 컴파일 할 경우 > javac HelloWorld.java // java 컴파일 생성 명령어 > java HelloWorld //java 컴파일 실행 입력하면 클래스가 작동되지만 추가적인 입력이 필요한경우 (Scanner , InputStreamReader 선언시) > java HelloWorld 안녕하세요!! hel..
자바는 클래스와 인터페이스의 메타 데이터를 java.lang 패키지에 소속된 Class 클래스로 관리한다. * 메타 데이터 : 클래스 이름, 생성자 정보, 플드 정보, 메소드 정보를 의미함 1. 클래스 객체 얻기 클래스 객체를 얻기 위해서는 Object 클래스가 가지고 있는 getClass() 메소드를 이용하면 된다. 2. 리플렉션 Class 객체를 이용하면 클래스 생성자, 필드, 메소드 의 정보를 알 수 있다. 이 과정을 리플렉션 이라고 한다. 리플렉션에서는 다음과 같은 메소드를 제공하고있다. object.getDeclaredClasses(); object.getDeclaredConstructors(); object.getDeclaredFields(); object.getDeclaredMethods()..
1. 목적 원본 객체의 필드값과 동일한 값을 가지는 새로운 객체를 생성하는 것이 목적 객체 복제의 목적은 원본 객체를 안전하게 보호하기 위해서 이다. 2. 얕은 복제 단순히 필드값을 복사해서 객체를 복제하는 것을 의미한다. 필드값만 복제하기 때문에 필드가 기본 타입일 경우 값 복 사가 일어나고, 필드가 참조타입일 경우에는 객체의 번지가 복사된다. 메소드 객체 복사를 위해서는 java.lang.Cloneable 인터페이스를 구현하고 있어야한다. 반대로 인터페이스를 구현하지 않는다면 예외 처리를 반드시 설정해주어야 한다. try{ Object obj = clone(); } catch(CloneNotSupportedException e){} 3. 깊은 복제 얕은 복제의 단점을 보완해주기 위해 사용된다. 즉, ..
🚀 다형성에서 빠질 수 없는 개념 추상화는 어떠한 객체에 대한 공통 요소를 추출하는 과정 으로 배웠다. 그러나 구체적인 행위를 구현하는 것이 아닌 메소드의 이름만 명시하고 하위 클래스에서 그 행위를 구현하도록 JAVA는 약속했다. 이렇게 행위를 구현화 하는데 필요한 절차가 오버로딩 , 오버라이딩 이라고 하는 것이다. 🌠 오버라이딩 Ride : (말, 자동차 등에) 타다 오버라이딩에 대해서는 상속과 추상화를 배웠다면 익숙한 어노테이션 일것이다. 상위 클라스의 추상메소드를 하위 클라스에서 구체화하는 과정으로 이해하면 충분하다 생각한다. abstract class Animal { void sound() {} } class Dog extends Animal { @Override public void sound(..
OOP (Object-Oriented Programming) 객체 지향적인 프로그래밍. 즉, C언어같은 절차 지향적인 프로그래밍이 아닌 객체의 관점에서 프로그래밍을 한다는 것이다. OOP는 객체를 기준으로 코드를 나누어 구현한다. 자바의 경우 그 구성 부분 단위가 클래스이다. 자세히 말하자면 클래스는 설계도고 직접일을하는 구현체는 인스턴스다. OOP는 객체의 관점에서 프로그래밍 하는 것을 의미한다. C언어는 절차 지향 프로그래밍인데, 절차 지향 프로그래밍은 프로세스가 함수 단위로 순서대로 진행되는 것을 말한다. OOP는 절차지향에 비해서 사람의 사고방식과 더 가깝다. OOP는 객체들의 유기적인 관계를 통해서 프로세스가 진행된다. 애플리케이션을 구성하는 요소들을 객체로 바라보고, 객체들을 유기적으로 연결하..
1. 프로세스와 스레드 - 프로세스 운영체제에서는 실행 중인 하나의 애플리케이션을 프로세스하고 부름 사용자가 어플리케이션을 실행하면 실행에 필요한 메모리를 할당받아 애플리케이션의 코드를 실행하는 과정을 프로세스하고 함. - 스레드 어플리케이션 내부에서의 코드 실행의 과정 혹은 흐름을 스레드 하고 하며 그 흐름이 2개 이상이라면 멀티(Multi) 스레드 라고 한다. 두가지 이상의 작업을 동시에 처리하는 과정(멀티 테스킹)에서 cpu 및 메모리 자원을 적절히 할당해 주고 병렬로 실행하는 작업이 가능하지만 멀티 테스킹이 반드시 멀티 프로레스를 뜻하지는 않는다. 하나의 프로세스 에서도 멀티 테스킹 과정이 이루어 질 수 있는데 그 과정이 가능한 것은 멀티 스레드가 가능하기 때문이다. 멀티 스레드는 하나의 파이르 ..
생성자 - new 연산자와 같이 사용되어 클래스로부터 객체를 생성할 때 호출되어 객체의 초기화를 담당 - 생성자의 이름은 클래스 이름과 통일 - 리턴 값이 없다. - 오버로딩이 가능하므로 하나으 ㅣ클래스에 여러 생성자가 있을 수 있다. - 생성자도 메서드이기 때문에 리턴값이 없다는 의미릐 void를 적어야 하지만 모든 생성자가 린턴값이 없으므로 void를 생략하도록 한것이다. new 연산제에 의해 생성자가 성공적으로 실행되면 heap영역의 개체가 생성되고 객체의 주소가 리턴됨 생성자는 매소드와 비슷한 모양을 가지고 있느나, return 타입이 없고 클래스 이름과 동일하다.
정적 멤버 static - 클래스에 고정된 멤버로서 인스턴스(객체)를 생성하지 않고 사용할 수 있는 필드와 메소드를 의미 - 인스턴스(객체)에 소속된 멤머가 아닌 클래스에 소속된 멤머이기 때문에 클래스 멤버라고도 함 - 클래스가 로딩될 때, 메모리 공간을 할당하는데 처음 설정된 메모리 공간이 변하지 않음을 의미 - 객체를 아무리 많이 만들어도 해당 변수는 하나만 존재(객체와 무관한 키워드) 1.클래스를 설계할 때, 멤버변수 중 모든 인스턴스에 공통적으로 사용해야하는 것에 static을 붙인다. - 인스턴스를 생성하면, 각 인스턴스들은 서로 독립적기 때문에 서로 다른 값을 유지한다. 경우에 따라서는 각 인스턴스들이 공통적으로 같은 값이 유지되어야 하는 경우 static을 붙인다. 2. static이 붙은 ..
배열의 크기가 동적(정해지지 않은 : 가변적인) 인 배열을 사용할때 사용되는 클라스 1. Vector - 필요에 따라 크기를 동적으로 조절할 수 있는 동적배열을 구현 - 배열과 마찬가지로 정수 인덱스를 이용하여 배열에 액세스 가능 - 동기화(Thread Safe) 되어있으며 한번에 하나의 스레드만 벡터의 메소드를 호출 할 수 있습니다. 2. ArrayList - 자바 표준 배열보다 약간 느릴수 있지만 배열에서 많은 조작이 필요로할때 유용하게 사용 - 기본 데이터 타입(int, char 등)에 대해 만들수 없기때문에 Integer, Object 등의 객체에 대해 참조해서 사용 3. 차이 - 동기화 -- Vector는 동기화가 가능한 반면 ArrayList는 동기화가 안됨 - 스레드 -- 스레드 안전이란 멀..
- Total
- Today
- Yesterday
- Spring
- 프로그래머스
- 매트랩
- Solid
- 자격증
- ajax
- Matlab
- 백준
- 그래프
- 스프링부트
- 자바
- spring-cloud
- 릿코드
- java
- springboot
- kakao
- 스프링
- JPA
- 면접
- CS
- docker
- 수학
- security
- 디자인패턴
- nginx
- interview
- OOP
- Algorithm
- 알고리즘
- C언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |