[자료구조] Stack / Queue
·
Language/Java
Stack스택이란?스택(stack)이란 쌓아 올린다는 것을 의미한다.따라서 스택 자료구조라는 것은 책을 쌓는 것처럼 차곡차곡 쌓아 올린 형태의 자료구조를 말한다.⇒ LIFO(Last Input First Output) : 스택은 시간 순서에 따라 자료가 쌓여서 가장 마지막에 삽입된 자료가 가장 먼저 삭제된다는 구조적 특징을 가지게 된다.스택의 특징같은 구조와 크기의 자료를 정해진 방향으로만 쌓을 수 있다.top으로 정한 곳을 통해서만 접근할 수 있다.top은 가장 위에 있는 자료, 최근 자료를 가리키고 있으며, 삽입되는 새 자료는 top이 가리키는 자료의 위에 쌓이게 된다.스택에서 자료를 삭제할 때도 top을 통해서만 가능하다.스택의 사용public class StackExample{ pub..
[java] Linkedlist와 Arraylist의 차이는 무엇일까?
·
Language/Java
Linkedlist와 Arraylist는 둘 다 List인터페이스를 상속받아서 구현한 클래스이다. ArrayList원소들을 인덱스로 접근하여 배열과 사용법이 매우 유사합니다.배열은 초기에 생성할 때 크기를 정해줘야 하므로 유동적인 사이즈로 초기화할 수 없는 불편함이 있지만대안으로 쓰이는 ArrayList는 저장되는 데이터의 갯수에 따라 자동적으로 크기가 변경되어 배열대신 자주 사용합니다.배열은 크기를 변경할 수 없는 인스턴스이므로, 크기를 늘리기 위해서는 새로운 배열을 생성하고 기존의 요소들을 옮겨야 하는 복잡한 과정을 거쳐야 합니다.물론 이 과정은 자동으로 수행되지만, 요소의 추가 및 삭제 작업에 걸리는 시간이 매우 길어지는 단점을 가지게 됩니다.LinkedlistArrayList와 장단점이 비교되는 ..
[java]자바 컴파일 과정
·
Language/Java
JVM은 어떤 방식으로 코드를 해석하고 실행시키는지 흐름에 맞게 설명해 주세요. (Java 실행 흐름)자바는 os에 독립적인 특징을 가지고 있다. 이게 가능한 이유는 JVM(java virtual machine)이 os와 프로그램의 사이에서 기계어로 해석해주는 역할을 하기 때문이다.자바 컴파일러에 의해 변환된 java 바이트 코드(.class)는 os에 의존하지 않고 JVM위에서 작동한다.jvm은 운영체제에 종속적이기 때문에 해당하는 os에 맞는 jvm설정을 해줘야 한다. 자바의 동작 방법hello.java -> javac.exe(자바 컴파일러) -> hello.class생성 -> java.exe(자바 인터프리터) -> "hello world"출력자바 컴파일 순서개발자가 자바 소스코드(.java)를 작성..
[java] 문자열을 리터럴(string = "abcd")로 할당하는 것과 객체(string = new String("abcd"))로 할당하는 방식의 차이가 무엇인가요?
·
Language/Java
String은 일반적인 타입이 아닌 클래스이기 때문에 call by Reference형태로 생성시 주소값이 부여된다.그렇기 때문에 String타입을 선언했을 때 같은 값을 부여하더라도 서로간의 주소값이 다를 수 있다.자바에서 문자열(String)을 선언하는 방법은 아래와 같다.String str1 = "madplay"; //문자열 리터럴 생성방식String str2 = "madplay";String str3 = new String("madplay"); //생성자인 new 연산자를 이용한 문자열 방식String str3 = new String("madplay");new연산자를 통해 문자열 객체를 생성하는경우메모리의 Heap영역에 할당문자열 리터럴 생성하는 경우String Constant Pool영역에 ..
[java] 자바의 특징
·
Language/Java
OOP(객체 지향 언어 프로그래밍)oop는 코드의 재사용성을 증가하고 유지보수를 용이하게 만듭니다.객체 지향 프로그래밍의 대표적 특징상속 (Inheritance) : 부모 클래스의 변수와 메서드를 자식 클래스가 전부 물려받는 것입니다. 캡슐화 (Encapsulation, Information Hiding) : 객체의 변수 및 메서드를 외부 객체가 함부로 건드리지 못하게 감싸는 개념입니다 . 클래스의 getter/setter 등을 통해 은닉합니다. 다형성(Polymorphism)Poly(다양한) + morphism(변형,변신) 의 합성어입니다. 하나의 객체가 여러가지 타입을 가질 수 있는 것을 의미합니다.자바에서는 한 레퍼런스 변수가 다른 형태의 객체를 참조할 수 있음을 말합니다. 오버로딩, 오버라이딩, ..
okbear3