Language/Java 50

생성자

생성자 인스턴스 초기화 메소드이다. 생성자는 객체가 생성될 떄 자동으로 호출(new 명령어를 만났을 때)되며 객체를 초기화한다. 클래스명과 같은 함수명이며, 리턴 타입이 없고 인스턴스 변수의 초기화 담당이다. 생성자는 기본적으로 생성되지만 여러개의 생성자를 만들시 매개변수갯수와 타입이 달라야한다. 만약 생성자를 직접 만들게 되면 기본적으로 생성되는 생성자를 같이 구현해줘야 사용이 가능하다. class Car { String color; String gearType; int door; Car(){} Car(String c,String g, int d){ color =c; gearType = g; door = d; } } class CarTest{ public static void main(String[] ..

Language/Java 2021.11.27

Java String Pool

String String을 만드는데 2가지 방법이 있다. String a = "aa"; String b = "aa"; String c = new String("aa"); String d = new STring("aa"); 첫번째 방법으로는 가장 많이 알고있는 String 변수를 만들어서 사용하는것이다. 두번째 방법으로는 new 연산자를 사용하여 만드는 방법이다. String은 불변성(Immutable)이라는 성질을 가지고 있으며 같은 값의 문자열에 대해서는 단 하나의 문자열 객체만을 생성하도록 설계 되어있다. String은 Heap 메모리에 저장된다. Java String Pool new 연산자로 String 객체를 생성하지 않는 것이 좋다라는 말을 볼 수 있다. Heap 영역 내 "String Cons..

Language/Java 2021.11.20

[주말 스터디]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