Language/Java (12) 썸네일형 리스트형 [Java] 재네릭(Generic)이란? 재네릭(Generic) 재네릭은 다양한 타입의 객체들을 다루는 메서드나 컬렉션 클래스에 컴파일 시의 타입체크를 해주는 기능이다. 객체의 타입을 컴파일 시에 체크하기 때문에 객체의 타입 안정성을 높이고 형변환의 번거로움을 줄일 수 있다. 타입 안정성을 높인다는 것은 의도하지 않은 타입의 객체가 저장되는 것을 막고, 저장된 객체를 꺼내올 때 원래의 타입과 다른 타입으로 잘못 형변환되어 발생할 수 있는 오류를 줄여준다는 뜻이다. 재네릭의 장점 1. 타입 안정성을 제공한다. 2. 타입체크와 형변환을 생략할 수 있어 코드가 간결해 진다. 재네릭 이전의 코드 재네릭 이전의 코드에 대해서 살펴보자. 먼저 무엇이든 저장하고 꺼낼 수 있는 상자를 준비해 준다. class Apple{ public String toStri.. [Java] 객체지향프로그래밍(OOP)란? OOP(Object Oriented Programming) 이란? 문제를 여러 개의 객체 단위로 나눠 작업하는 방식으로, 객체들이 서로 유기적으로 상호작용하는 프로그래밍 이론이다. OOP는 코드의 재사용성을 증가시키고, 생산성을 향상시키다는 장점이 있다. OOP의 특성은 크게 캡슐화(encapsulation), 상속(inheritance), 다형성(polymorphism), 추상화(abstraction) 로 나뉜다. 1.캡슐화(Encapsulation) 캡슐화는 관련 있는 변수와 함수들을 하나의 클래스로 묶고 외부에서 쉽게 접근하지 못하도록 정보를 은닉하는 것이다.. 객채에 직접적인 접근을 막고 외부에서 내부의 정보를 변경할 수 없고 객체가 제공하는 필드와 메소드를 통해서만 접근이 가능하다. 정보은닉을 .. [Java] 형변환(캐스팅, casting) 형변환이란? 모든 변수와 리터럴에는 타입이 있다. 프로그램을 작성하다 보면 서로 다른 타입간의 연산을 수행해야하는 경우가 있는데 이럴 때 연산을 수행하기 전에 타입을 일치시켜야 하는데, 변수나 리터럴 타입을 변환시키는 것을 형변환이라고 한다. 변수 또는 상수의 타입을 다른 타입으로 변환하는 것 형변환 방법 형변환 방법은 간단하다. 형변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여기주만 하면된다. 이때 사용되는 괄호()는 "캐스트 연산자" 또는 "형변환 연산자" 라고 하며 형변환을 "캐스팅" 이라고도 한다. 예를 들어 다음과 같은 코드가 있다. double d = 90.5; int score = (int)d; //double형 타입의 변수 d를 int타입으로 형변환 위의 결과.. [Java] 자바의 명명규칙 공통 명명 규칙 1. 대소문자가 구분되어 길이에 제한이 없다. -True 와 true 는 서로 다른 것으로 간주된다. 2. 예약어를 사용해서는 안 된다. - true 는 예약어라서 사용할 수 없지만 True는 가능하다. 3. 숫자로 시작해서는 안 된다. -top10은 허용하지만, 7up은 허용되지 않는다. 4. 특수문자는 '-' 와 '$' 만을 허용한다. -$harp은 허용되지만, $#arp은 허용되지 않는다. 패키지 이름 패키지명은 소문자 사용을 권장한다. 가급적 한 단어 사용을 권장한다. 표준 패턴: com.회사이름(혹은 개인이름).프로젝트명.상위패키지.하위패키지.클래스 com.java.example 클래스 이름 파스칼 표기법을 따르며 클래스 이름의 첫 글자는 항상 대문자로 한다. 여러 단어로 이루어.. [Java] JVM 메모리 구조 JVM이란? JVM은 "Java Virtual Machine"을 줄인 것으로 "자바를 실행하기 위한 가상 기계"라고 할 수 있으며 자바 가상 머신이라고 부른다. 그리고 자바와 운영체제 사이에서 중개자 역할을 수행하며 자바가 운영채제에 구애 받지 않고 프로그램을 실행할 수 있도록 도와준다. 자바 프로그램 실행 단계 그렇다면 이제는 JVM이 어떻게 동작하는지와 구조에 대해 알아보자. JVM의 구조는 크게 Class Loader, Exceution Engine, Runntume Data Area, Garbage Collector로 4가지로 나눌 수 있다. 밑에 그림은 JVM의 메모리 구조이다. JVM의 메모리 구조 Class Loader JVM 내로 클래스 파일을 로드하고, 링크를 통해 배치하는 작업을 수행하.. [Java] Queue(큐) 클래스 정리 큐(Stack) 란? 큐는 처음에 저장한 데이터를 가장 먼저 꺼내게 되는 FIFO(First In First Out)구조로 되어 있다. 쉽게 말해 큐는 양 옆만 막혀 있고 위아래로 뚫려 있어서 한 방향으로는 넣고 한 방향으로는 빼는 파이프와 같은 구조로 되어 있다. add(): 큐(Queue)에 데이터를 넣는다. offer(): 큐(Queue)에 데이터를 저장한다, 성공하면 true, 실패하면 false를 반환한다. poll() : 큐(Queue)에 첫번째 데이터를 꺼내서 반환하고 제거한다. 비어있으면 null을 반환한다. remove(): 큐(Queue)에 첫번째 데이터를 제거한다. peek(): 삭제없이 첫번째 요소를 읽어온다. 비어있으면 null을 반환한다. 큐(Stack) 구현 1) 큐(Queue.. [Java] 자바 Static 이란? Static 이란? static은 '클래스의' 또는 '공통적인'의 의미를 가지고 있다. 인스턴스변수는 하나의 클래스로부터 생성되었더라도 각기 다른 값을 유지하지만, 클래스변수(static변수)는 인스턴스에 상관없이 같은 값을 갖는다. 그 이유는 하나의 변수를 모든 인스턴스가 공유하기 때문이다. static이 붙은 멤버변수와 메서드, 초기화 블럭은 인스턴스가 아닌 클래스에 관계된 것이기 때문에 인스턴스를 생성하지 않고도 사용할 수 있다. Static 키워드를 통해 생성된 정적멤버들은 Heap영역이 아닌 Static영역에 할당된다. Static 영역에 할당된 메모리는 모든 객체가 공유하여 하나의 멤버를 어디서든지 참조할 수 있는 장점을 가지지만 Garbage Collector의 관리 영역 밖에 존재하기에 S.. [Java] 오버로딩(Overloading)과 오버라이딩(Overriding)의 차이점 1. 오버로딩(Overloading) 1-1. 오버로딩(Overloading)이란? 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버로딩(method overloading)' 또는 간단히 '오버로딩(overloading)'이라 한다. 1-2. 오버로딩(Overloading)의 조건 같은 이름의 메서드를 정의한다고 해서 무조건 오버로딩인 것은 아니다. 오버로딩이 성립하기 위해서는 다음과 같은 조건을 만족해야한다. 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. 비록 메서드의 이름이 같다 하더라도 매개변수가 다르면 서로 구별될 수 있기 때문에 오버로딩이 가느한 것이다. 위의 조건을 만족시키지 못하는 메서드는 중복 정의로 간주되어 컴파일 시에 에러가 .. 이전 1 2 다음