728x90 반응형 생활코딩/JAVA17 생활코딩 - JAVA (Colletions Framework) 배열과 컬렉션즈 프레임워크 배열은 연관된 데이터를 그룹화해서 편리하게 관리하기 위한 수단이다. 그런데 배열에는 몇가지 불편한 점이 있었는데 그 중의 하나가 한번 정해진 배열의 크기를 변경할 수 없다는 점이다. 이러한 불편함을 컬렉션즈 프래임워크를 사용하면 줄어든다. 컬렉션프레임워크라는 것은 배열이 가진 어떤 불편함 또는 배열이 가진 한계를 쉽게 극보할 수 있게 도와주는 도구이다. 배열이 가진문제점 가운데 가장 먼저 체감할 수 있는 문제는 배열은 선언할 때 몇 개의 값을 가질 수 있는지 지정하게 돼 있다는 것이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 package org.opentutorials.javatutorials.co.. 2021. 1. 15. 생활코딩 - JAVA (제네릭) 제네릭이란? 제네릭의 사용법 제네릭(Generic)은 클래스 내부에서 사용할 데이터 타입을 외부에서 지정하는 기법을 의미한다 제네릭은 마치 메솓의 매개변수와 상당히 비슷하게 동작한다고 할 수 있다. 변수에 들어갈 값과 관련돼 있는데 제네릭은 그 변수의 데이터 타입과 관련되 있다고 생각하면 된다. 인스턴스화될 때 꺾쇠 안에 String이라는 구체적인 데이터 타입을 지정하면 그것이 앞서 말한 T에 지정된다. T는 String이 되고, info는 String 데이터 타입을 갖게 된다. 이것이 제네릭이다. 이렇게 만들어진 인스턴스를 담을 수 있는 이 p1의 데이터 타입도 person이라는 데이터 타입과 똑같이 지정돼야 한다. 데이터 타입으로 인스턴스를 생성하기 때문에 이 인스턴스를 담을 변수도 이와 동일한 데이.. 2021. 1. 15. 생활코딩 - JAVA (참조) [복제란?] 복제는 뭔가를 똑같이 만든다는 뜻이다. 데이터 타입을 생성할 때 new를 통해 생성하는 것들은 기본 데이터 타입이 아니고 참조형 또는 참조 데이터 타입이라고 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 package org.opentutorials.javatutorials.reference; public class ReferenceDemo1 { public static void runValue(){ int a = 1; int b = a; b = 2; System.out.println("runValue, "+a); } public static void main(String[] args) { runValue(); } } Colored by Color Scripte.. 2021. 1. 10. 생활코딩 - JAVA (상수와 enum) enum은 자바 5.0부터 제공되기 시작했다. 상수 : 변하지 않는 값 x : 변수 [enum의 도입 배경] 2021. 1. 10. 생활코딩 - JAVA (Object 클래스) 객체(object)라는 object라는 이름을 가진 클래스를 의미한다. 이 클래스는 특별한 형태의 클래스인데, 이 클래스를 한마디로 정의하자면 시조이다. 모든 클래스의 공통된 조상으로서 Object라는 구체적인 클래스가 있다. 1 2 3 package org.opentutorials.javatutorials.progenitor; class O {} 위의 코드는 아래와 코드가 같다. 1 2 3 package org.opentutorials.javatutorials.progenitor; class O extends Object {} 어떤 클래스를 정의했을 때 그 클래스가 다른 클래스를 상속하지 않는다면 자바가 암시적으로 "extend Object"를 추가한다는 뜻이다. 이렇게 하는 이유는 자바는 수많은 클래.. 2020. 12. 31. 생활코딩 - JAVA (예외 던지기) [예외던지기] 문제를 다른 사람에게 던질 수도 있고 자기 자신이 처리할 수도 있다. *[F1]키를 누르고 [javadoc for 'java.io.FileReader.FileReader(String)'] 같은 생성자에 관한 도움말을 누르면 FileReader의 생성자에 대한 자바 API를 확인할 수 있다. 해당 도움말에서 중요한 것은 Throws 부분이다. Throws는 FileReader 생성자를 사용하는 쪽에서 반드시 FileNOtFoundException에 대한 예외 처리를 강제한다는 의미이다. [예외 사슬] 1 2 3 4 try { new FileReader("out.txt"); }catch(){ } FileReader라는 API의 사용자에게 던진 예외를 처리하기 위해 catch를 한 것이다. AP.. 2020. 12. 30. 생활코딩 - JAVA (예외 (exception)) [예외란 무엇인가] 예외란 프로그램을 제작하는 과정에서 발생하는 오류를 제어 또는 처리하는 것이다. 예외를 이해하려면 기본적으로 알고 있어야 할 것들이 많이 있다. 애플리케이션을 잘 만들고 잘 동작하게 하며, 애플리케이션을 규모 가변성 있게 구축하는 것은 예외와 상관이 없거나 적다는 것이다. 예외, 보안과 같은 주제는 실패하지 않는 법이라고 할 수 있다. 일반적으로 오류 또는 에러라는 많이 쓰는데, 자바를 비롯한 여러 프로그래밍 언어에서는 예외라는 표현을 쓴다. 오류는 예외의 일종이라고 생각하면 된다. 일반적이지 않은 상황에서 우리가 기획했던 바와 다르게 발생하는 문제를 포괄적으로 예외(exception)라고 한다. 또한 이 같은 예외 상황에서 해당 프로그램을 만든 프로그래머가 예외 상황을 처리하고 관리.. 2020. 12. 29. 생활코딩 - JAVA (다형성) [다형성] 다형성은 한 메소드나 클래스가 다양한 방식으로 동작하는 것을 의미한다. ex) a()라는 메소드가 있을 때 이 메소드가 사왕에 따라 다르게 동작한다는 것을 의미한다. 또한 A라는 클래스가 있을 때 마찬가지로 어떤 경우에는 똑같은 크래스지만 그 클래스의 메소드를 실행했을 때 상황에 따라 다양하게 동작하는 것이 바로 다형성이다. 다형성은 객체나 인터페이스, 추상화처럼 뭔가 철학적인 느낌을 자야낸다. 다형성의 가장 쉬운 예로 오버로딩을 들 수 있다. 오버로딩은 이름이 같지만 매개변수 형식에 따라 다른 베소드가 호출되는 기법이기 때문이다. 즉, 이름은 같지만 다르게 동작한다고 할 수 있기 때문에 다형성이라는 측면에서 생각해 볼 수 있다. [클래스와 다형성1] 다형성을 통해 메소드나 클래스를 바라보는 .. 2020. 12. 29. 생활코딩 - JAVA (인터페이스) [문법과 개념] 인터페이스를 abstract, final과 함께 대표적인 규제이다. 인터페이스의 역할을 한마디로 정리하자면 어떤 클래스에서 특정한 인터페이스를 사용한다면 그 클래스가 반드시 해당 인터페이스에 포함된 메소드를 구현하도록 강제하는 것이다. 인터페이스에서 강제하는 메소드를 구현하지 않으면 프로그램은 컴파일조차 되지 않는다. 특정 클래스를 특정 인터페이스와 결합하면 그 클래스를 정의할 때 인터페이스에 정의된 메소드를 반드시 구현하도록 강제할 수 있다. 그리고 이렇게 구현되 잇을 때 A 클래스는 이터페이스를 구현한다라고 이야기 한다. [인터페이스를 사용하는 이유] 인터페이스는 어떤 클래스가 어떤 멤버(메소드)를 가지고 잇는가에 대한 명세서와 같은 역할을 한다. 구현하는 클래스는 해당 명세서에 정의.. 2020. 12. 19. 생활코딩 - JAVA (final) Abstract가 상속을 가제하는 일종의 규제라고 한다면 final은 abstract와는 정반대되는 의미를 가지고 있다. 상속이나 변경을 금지하는 규제이기 때문이다. [PI 멤버에 final을 지정] pakage org.opentutorials.javatutorials.finals; Class calculator{ static final double PI = 3.14; int left, right; public void setOperands(int left, int right){ this.left = left; this.right = right; //Calculator.PI = 6; } public void sum(){ System.out.println(this.left + this.right); } p.. 2020. 12. 19. 이전 1 2 다음 728x90 반응형