반응형

Language 62

그래프(Graph) 과 DFS, BFS 구현

그래프란? 그래프는 노드와 그 노드를 연결하는 간선을 하나로 모아 놓은 것 그래프에는 방향성이 있을수도 있고 없을수도 있다. 트리는 그래프의 한 종류이다. 모든 그래프가 트리는 아니다. 트리는 사이클이 없는 하나의 연결 그래프 그래프 종류 무방향 그래프 방향 그래프 완전 그래프 그래프에서 사용하는 용어 정점(vertice) : 노드(node)라고도 하며 정점에는 데이터가 저장된다. (0, 1, 2, 3) 간선(edge): 링크(arcs)라고도 하며 노드간의 관계를 나타낸다.. 인접 정점(adjacent vertex) : 간선에 의해 연결된 정점으로 위에서 (정점0과 정점1은 인접 정점) 단순 경로(simple-path): 경로 중 반복되는 정점이 없는것, 같은 간선을 자나가지 않는 경로 차수(degree..

[주말 스터디]toString과 valueOf 차이

두 메소드 모두 Object의 값을 String으로 변환하지만 변경하고자 하는Object가 null인 경우 다르다. toString()과 같은 경우 Null PointerException(NPE)을 발생시키지만 valueOf는 "null"이라는 문자열로 처리한다. 즉 비교해서 정리하자면 String.valueOf() - 파라미터가 null이면 문자열 "null"을 만들어서 반환한다. toString() - 대상 값이 null이면 NPE를 발생시키고 Object에 담긴 값이 String이 아니여도 출력한다. toString 메서드는 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드 indexOf indexOf() 는 특정 문자나 문자열이 앞에서부터 처음 발견되는 인덱스를 반환하며 만약 찾지..

Language/Java 2021.11.06

직렬화 역직렬화

직렬화(Serizlization) 자바의 객체를 바이트의 배열로 변환을 해서 파일이나, 메모리, 데이터베이스등이 저장을 하는 과정을 말한다. 직렬화는 인터페이스를 구현해야 한다 보통 클래스의 멤버변수 전부 직렬화 대상에 해당되나, 보안상의 문제나 기타 이유로 멤버변수의 일부를 제외하고 싶다면 transient를 통해 지정할 수있다. 역직렬화(Deserialization) 직렬화된 파일 등을 역으로 직렬화하여 다시 객체의 형태로 만드는 것을 의미한다. 저장된 파일을 읽거나 전송된 스트림 데이터를 읽어 원래 객체의 형태로 복원한다.

Language/Java 2021.11.01

List, Set, Map

List List 에는 ArrayList, Vector, LinkedList, Stack, Queue가 있다. 데이터가 순서대로 저장 되며 찾기가 수월하다. 검색 및 삭제가 가능하며 중복이 가능하다 Set HashSet, TreeSet 이 있으며 TreeSet는 이진 트리 구조로 되어있다. 저장 순서가 유지되지 않습니다. 중복이 안되며 null 도 저장이 가능하다 Map HashMap, HashTable, TreeMap, Properties key와 value로 구성된 객체를 저장하고 있다. key는 중복이 안되고 value는 중복이 가능하다. 만약 key에 중복이 발생하면 기존에 있던 key는 없어지고 새로운 key값이 저장된다. ArrayList ArrayList는 데이터가 인덱스에 순서대로 저장이 ..

Language/Java 2021.10.10

StringBuffer클래스

StringBuffer란? String처럼 문자열 배열(char[])을 내부적으로 가지고 있다 그러나 String과 달리 내용을 변경할 수 있다.(mutable) public final class StringBuffer implements java.io.Serializable { private char[] value; ... } 편집할 문자열의 길이를 고려하여 버퍼의 길이를 충분히 잡아주는 것이 좋다. 편집 중인 문자열이 버퍼의 길이를 넘어서게 되면 버퍼의 길이를 늘려주는 작업이 추가로 수행되어야하기 때문에 작업효율이 떨어진다. StringBuffer의 생성자 배열의 길이 변경불가. 공간이 부족하면 새로운 배열 생성해야한다 StringBuffer는 저장할 문자열의 길이를 고려해서 적절한 크기로 생성해야한..

Language/Java 2021.10.03

java.lang패키지와 유용한 클래스

Object클래스 모든 클래스의 최고 조상. 오직 11개의 메서드만을 가지고 있다 equals(Object obj) 객체 자신(this)과 주어진 객체(obj)를 비교한다. 같으면 true, 다르면 false Object클래스의 equals()는 객체의 주소를 비교 (참조변수 값 비교) class EqualsEx1 { public static void main(String[]args) { Value v1 = new Value(10); Value v2 = new Value(10); if ( v1.equals(v2)) { System.out.println("v1과 v2는 같습니다."); } esle { System.out.println("v1과 v2는 다릅니다."); } v2 = v1; if (v1.equa..

Language/Java 2021.10.03

예외 처리

프로그램 오류 프로그램이 실행 중 어떤 원인에 의해서 오작동을 하거나 비정상적으로 종료되는 경우가 있다. 이러한 결과를 초래하는 원인을 프로그램 에러 또는 오류라고 한다. 이를 발생시점에 따라 컴파일 에러와 런타임 에러로 나눌 수 있는데 컴파일 할 때 발생하는 에러를 컴파일 에러이고, 프로그램의 실행도중에 발생하는 에러를 런타임 에러라고 한다. 이 외에도 논리적 에러가 있는데, 컴파일도 잘되고 실행도 잘되지만 의도한 것과 다르게 동작하는 것을 말한다 컴파일 에러 : 컴파일 시에 발생하는 에러 런타임 에러 : 실행 시에 발생하는 에러 논리적 에러 : 실행은 되지만, 의도와 다르게 동작하는 것 소스코드를 컴파일 하면 컴파일러가 소스코드에 대해 오타나 잘못된 구문, 자료형 체크 등의 기본적인 검사를 수행하여 ..

Language/Java 2021.09.27

인터페이스

인터페이스란? 인터페이스는 일종이 추상클래스다 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높아서 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 가질수 없다 모든 멤버변수는 public static final이어야 하며,이를 생략할수 있다 모든 메서드는 public abstract 이어야 하며, 이를 생략할수 있다. 인터페이스는 인터페이스로부터 상속받을 수 있으며, 클래스와는 달리 다중상속,즉 여러개의 인터페이스로부터 상속받을수 있다 다중 상속 단점 두 조상으로부터 상속받는 자손클래스는 어느 조상의 것을 상속받게 되는 것인지 알 수 없다. 어느 한 쪽으로부터의 상속을 포기하던가 이름이 충돌하지 않도록 조상클래스르 변경하는 수 밖에없다 인터페이스는 static상수만 정의할 수 있으므로 클래..

Language/Java 2021.09.26

내부 클래스

내부클래스란? 클래스내에서 선언된 클래스를 말한다 내부클래스의 장점 내부 클래스에서 외부 클래스의 멤버들을 쉽게 접근할 수 있다 코드의 복잡성을 줄일 수 있다(캡슐화) 내부 클래스 사용 목적 내부 클래스를 사용하게 되면 비슷한 형태의 클래스들을 묶을 수 있어서 코드의 캡슐화를 증가시킬 수 있다. 또한, 내부클래스에서 외부 클래스의 멤버에 손쉽게 접근 할 수 있게 된다. 내부클래스의 종류와 특징 내부 클래스의 선언 class Outer{ class InstanceIneer{} //인스턴스클래스 static class StaticInner{} 스태틱 클래스 void method1(){ class LocalInner{} //지역클래스 } } instance 멤버 내부 클래스 instance 멤버 내부 클래스는..

Language/Java 2021.09.25

싱글톤

싱글톤이란? 생성자가 여러차례 호출되어도 실제로 생성되는 객체는 하나고 최초 생성 이후에 호출된 생성자는 최초에 생성한 객체를 리턴한다. 클래스의 인스턴스가 오직 1개만 생성되는 것을 보장하는 디자인 패턴이다. 싱글톤 구현 싱글톤 구현에서 주의 깊게 보여야 될 부분은 생성자를 Private로 생성하여, 다른 외부 클래스에서 싱글톤 클래스를 new로 구성하지 못하게 하는 부분이다. public class SingletonSErvice{ //1. static 영역에 객체를 딱 1개만 생성해둔다. private static final SingletonService instance = new SingletonService(); //2. public으로 열어서 객체 이스턴스가 필요하면 이 static 메서드를 통..

Language/Java 2021.09.19
반응형