생활코딩 - Java(Collection framework)
·
Java & Spring/Java
□ Collection framework 구성  - set : 중복을 허용하지 않음(순서가 보장되지 않음)- list : 중복 허용(순서 보장)□ ArrayList배열은 크기를 한번 지정하면 크기를 초과할 수 없지만ArrayList는 크기를 미리 지정하지 않기 때문에 얼마든지 많은 값을 저장할 수 있다.구분배열ArrayList값의 개수.length.size출력[인덱스번호].get(인덱스번호) ※ ArrayList의 메소드 add의 입장에서는 인자로 어떤 형태의 값이 올지 알 수 없다.    그렇기 때문에 모든 데이터 타입의 조상인 Object 형식으로 데이터를 받고 있다.   따라서 ArrayList 내에서 add를 통해서 입력된 값은 Object의 데이터 타입을 가지고 있고, get을 이용해서 이를 꺼..
생활코딩 - Java(참조)
·
Java & Spring/Java
□ 복제 □ 참조 ex) 메모장으로 예를 들었을 때 '복사본'의 경우 서로 복제된 상태로 더이상 연관이 없지만 '바로가기'의 경우 원본 '메모장'을 참조한 상태이므로 상호작용이 발생함 또한 복사의 경우 용량이 2배가 되는 것 이지만 바로가기는 훨씬 작은용량을 차지하게 됨 ex2) 아래 코드로 다시한번 참조에 대해 정리해보면 1) runValue 메소드부터 확인해보면 기본변수 a에 1이라는 값이 들어있다. 그다음 _value라는 메소드를 호출 하는데 해당 메소드의 매개변수 b에 a를 넣는 상황이다(int b = a;). 그 후 변수 b의 값을 2로 바꾸더라도 a에 영향을 주지 않는다. → runValue, 1 2) A a = new A(1); : id 값이 1인 새로운 A 객체를 생성하고, a 변수가 이 ..
생활코딩 - Java(상수와 enum)
·
Java & Spring/Java
□ enum enum은 열거형(enumerated type)이라고 부른다. 열거형은 서로 연관된 상수들의 집합이라고 할 수 있다. 위의 예제에서는 Fruit가 말하자면 열거인 셈이다. - enum의 특징 코드가 단순해진다. 인스턴스 생성과 상속을 방지한다. 키워드 enum을 사용하기 때문에 구현의 의도가 열거임을 분명하게 나타낼 수 있다. □ enum 생성자 위 코드에서 APPLE("red")에서 ( )는 생성자를 호출 그 생성자를 Fruit(String color)의 매개변수 color에 들어감 this.color = color에서 color으로 들어감 this.color은 다시 전역변수 public String color으로 들어감 출처 : 생활코딩 유튜브 : https://www.youtube.co..
생활코딩 - Java(Object 클래스)
·
Java & Spring/Java
□ Object 자바에서 모든 클래스는 사실 Object를 암시적으로 상속받고 있는 것이다. 그런 점에서 Object는 모든 클래스의 상위 클래스라고 할 수 있다. 그 이유는 모든 클래스가 공통으로 포함하고 있어야 하는 기능을 제공하기 위해서다. □ to String 객체를 문자로 표현하는 메소드 클래스 Calculator에 toString을 재정의(overiding)했다. 그리고 인스턴스를 System.out.println의 인자로 전달하니까 toString을 명시적으로 호출하지 않았음에도 동일한 효과가 나고 있다. toString을 직접 호출하지 않아도 어떤 객체를 System.out.print로 호출하면 자동으로 toString이 호출되도록 약속되어 있다. □ equals equals는 객체와 객체..
생활코딩 - Java(예외 Exception)
·
Java & Spring/Java
□ 예외란? 예외(Exception)란 프로그램을 만든 프로그래머가 상정한 정상적인 처리에서 벗어나는 경우에 이를 처리하기 위한 방법 □ try - catch ex) 0으로는 나눌 수 없기 때문에 오류가 발생하게 되는데 try - catch를 통해 오류 내용을 출력함 ※ e.메소드 e.getMessage(); → by zero 오류에 대한 기본적인 내용을 출력해준다. 상세하지 않다. e.toString() → java.lang.ArithmeticException: / by zero e.toString()은 e.getMessage()보다 더 자세한 예외 정보를 제공한다. e.printStackTrace() 메소드 getMessage, toString과는 다르게 printStackTrace는 리턴값이 없다...
생활코딩 - Java(다형성)
·
Java & Spring/Java
□ 메소드와 다형성 다형성이란 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것을 의미한다. 같은 메소드 명 'a'지만 매개변수 타입이 int와 String차이로 아래 o.a(1);와 o.a("one");가 오류없이 작동한다. □ 클래스와 다형성 위 코드에서 obj.y();은 오류가 발생한다. 그이유는 A obj = new B(); 에서 클래스 B를 new를 통해 인스턴스화 하여 변수 obj에 담을 때 타입을 클래스 A로 정의했기 때문이다. 클래스 A에는 메소드 y가 정의되지 않았기 때문에 오류가 발생한다. 그러나 하위 클래스에서 메소드를 오버라이딩 하게되면 해당 메소드가 호출이된다. 위 예제에서 System.out.println(obj.x()); , System.out.printl..
생활코딩 - Java(abstract,final,interface)
·
Java & Spring/Java
□ abstract(추상 메소드) 추상 클래스는 상속을 강제하기 위한 것이다. 즉 상위 클래스에는 메소드의 시그니처만 정의해놓고 그 메소드의 실제 동작 방법은 이 메소드를 상속 받은 하위 클래스의 책임으로 위임하고 있다. abstract class A{ public abstract int b(); public void d(){ System.out.println("world"); } } 메소드 b의 선언 부분에는 abstract라는 키워드가 등장하고 있다. 이 키워드는 메소드 b는 메소드의 시그니처만 정의 되어 있고 이 메소드의 구체적인 구현은 하위 클래스에서 오버라이딩 해야 한다는 의미다. 이렇게 내용이 비어있는 메소드를 추상 메소드라고 부른다. 추상 메소드를 하나라도 포함하고 있는 클래스는 추상 클래스..
생활코딩 - Java(접근 제어자)
·
Java & Spring/Java
□ 접근 제어자 1. 사용자가 객체 내부적으로 사용하는 변수나 메소드에 접근함으로서 개발자가 의도하지 못한 오동작을 일으키게 되는 문제로부터 객체의 로직을 보호하기 위해서는 맴버에 따라서 외부의 접근을 허용하거나 차단해야 할 필요가 생긴다. 2. 사용자에게 객체를 조작 할 수 있는 수단만을 제공함으로서 결과적으로 객체의 사용에 집중 할 수 있도록 돕기 위함이다. 구분 같은클래스 같은패키지 다른패키지 서브클래스 관계없음 public O O O O protected O O O X default O O X X private O X X X
생활코딩 - Java(상속과 생성자, 오버라이딩과 오버로딩)
·
카테고리 없음
□ 상속 상속(Inheritance)이란 물려준다는 의미로 어떤 객체가 있을 때 그 객체의 필드(변수)와 메소드를 다른 객체가 물려 받을 수 있는 기능을 말한다. 위 코드에서 Calculator클래스의 메소드를 사용 할 수 있는 이유는 하위 클래스인 SubstrationableCalculator가 extends를 통해 Calculator을 상속받았기 때문이다. □ 상속과 생성자 - 객체를 생성할 때 자동으로 생성자를 만들어준다. - 매개변수가있는 생성자를 정의해놓은 상태이면 생성자를 자동으로 만들어주지 않는다. - 생성자를 통해서 left, right의 값을 설정해준다. □ super() : 하위 클래스에서 상위 클래스 생성자를 호출 ※ 하위 클래스의 초기화 코드는 super()보다 앞에 와서는 안된다 ..
생활코딩 - Java(초기화와 생성자)
·
카테고리 없음
ㅁ 생성자(Constructor)의 필요성 위의 예에서 메소드 setOprands의 값으로 10과 20을 지정했다. 이 값들은 객체 내부에서 인스턴스 변수 left와 right의 값으로 설정되어서 유지된다. 객체 Calculator를 사용하기 위해서 사용자는 메소드 sum을 호출하기 전에 setOprands를 호출해야 한다는 것을 기억하고 있어야 한다는 것을 의미한다. 이러한 절차를 기억해야 한다는 것은 사용자 입장에서는 불편할 뿐 아니라 잘못된 사용으로 오류가 발생할 확률을 높이는 결과를 초래 할 수 있다. 그래서 사용하는 것이 생성자(Constructor)이다. → 생성자는 클래스안에서 가장 먼저 작동하는 메소드이다. 아래와 같이 인스턴스가 생성될 때 left, right의 값을 입력하도록 강제한다면..