java 24

생성자

생성자 인스턴스 초기화 메소드이다. 생성자는 객체가 생성될 떄 자동으로 호출(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

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

오버로딩 vs 오버라이딩

오버로딩(Overloading) 같은 클래스 내에 여러개의 메소드 이름을 같이 쓸수가 있지만, 매개변수갯수가 달라야하고 타입이 달라야한다. public class OverloadingTest { public static void main(String[] args) { MyMath3 mm = new MyMath3(); System.out.println ("mm.add(3, 3) 결과:" + mm.add(3,3)); System.out.println ("mm.add(3L, 3) 결과:" + mm.add(3L,3)); System.out.println ("mm.add(3, 3L) 결과:" + mm.add(3,3L)); System.out.println ("mm.add(3L, 3L) 결과:" + mm.add(3..

Language/Java 2021.09.19