본문 바로가기

04번. IT 힌트얻기/▶ 자바

[Java] Collection, Map 계열의 클래스 예제 ▶ Stack : Stack 클래스는 데이터의 삽입과 추출이 후입선출(Last-In First-Out)구조로 되어 있는 자료구조이다. 즉, 마지막에 들어간 데이터가 제일 먼저 나오는 자료구조를 클래스화한 것이다. ▶ ArrayList : ArrayList는 그 이름에서 알 수 있듯이 배열의 성격도 가지고 있으며, List 자료 구조적인 성격을 가지고 있는 클래스이다. ▶ HashSet : Set의 성격을 가지고 있으면서 내부에는 해시의 기법을 사용하는 클래스가 바로 HashSet이다. HashSet은 중복을 허용하지 않는 집합적인 성격을 가지고 있으며 내부에 해시 기법을 사용하고 있기 때문에 Set이지만 HashSet이라는 이름이 붙은 것이다. ▶ Vector1 : Vector는 순서의 개념을 가지고 있.. 더보기
[Java] Sorted 계열 클래스 (TreeSet, TreeMap, Comparator) ◆ HashSet 이나 HashMap을 사용하던 도중 정렬기능이 필요할 때 정렬 기능을 지원해주는 TreeSet이나 TreeMap으로 변환해서 사용이 가능하다. 1. HashSet을 TreeSet으로 변환하기 2. HashMap을 TreeMap으로 변환하기 ◆ TreeMap과 TreeSet의 Comparator 구현을 통한 정렬하기 TreeSet에 데이터를 집어 넣으면 기본적으로 오름차순(Ascending) 정렬이 되지만 그것도 문자열이나 기본 데이터 타입과 같은 단순한 것에만 해당된다. 만약 사용자가 직접 만든 클래스의 형이라면 어떻게 정렬을 할까? 이것은 사용자가 직접 비교법을 넣어 주어야 한다. TreeSet의 경우에는 Comparator 인터페이스를 이용해서 구현한다. Comparator 인터페이.. 더보기
[Java] 저장소 관련(배열, Collection, Map) 1. 기본 데이터 타입은 변수를 선언할 때 메모리가 생성된다. 2. 자바 언어 스펙 (Java Language Specification)을 보면 배열을 객체(Object)로 보고 있다. 그렇기 때문에 배열도 Object 클래스의 메서드를 모두 이용할 수 있다. 배열은 좀 특수한 경우의 객체라고 보면 된다. 모든 것을 종합해 볼 때 배열의 이름은 참조값 즉 참조 변수가 되는 것이다. 3. 제너릭(Generic)이란 클래스에 사용할 타입을 클래스를 디자인할 때 지정하는 것이 아니라 클래스를 사용할 때 지정한 후 사용하는 기술을 말한다. /** 컬렉션의 제너릭의 사용 여부 **/ import java.util.*; public class CollectionGenericMain{ public static voi.. 더보기
[Java] Static vs. Non-Static static 메소드와 non-static 메소드의 차이는 무엇일까? non- static 변수는 class로 부터 반드시 객체를 만들어야만 호출할 수 있다. String s = "abcd"; s.substring(1,3); String.substring(1,3); 더이상 설명안해도 두번째 예제는 말도 안된다는 것을 아시겠죠? static 메소드는 객체를 만들지 않고 class로 부터 직접 호출해야 합니다.물론 객체를 만들어 객체로부터 호출해도 에러는 없지만, 이것은 메소드의 올바른 사용법이 아닙니다. 그렇다면 당연히 static 변수와 method는 객체의 생성과는 아무런 연관이 없게됩니다. 따라서 static 변수와 메소드는 객체가 생성되기 이전에 먼저 메모리에 로드됩니다. 즉 static 메소드와 변.. 더보기
스레드 만들고 시작하기(thread, runnable) 스레드를 만드는 방법과 그에 우선하여 왜 멀티 스레드가 필요한지 알아보자. 이를 가장 잘 설명할 수 있는 것이 바로 문서작성소프트웨어의 경우 인쇄를 하면서 동시에 문서 수정도 가능하다. 이런 것들은 모두 멀티 스레드로 돌려지기 때문에 가능한 것이다. 자바에서 스레드를 이용하려면, Tread 클래스의 객체를 인스턴스화(instantiate) 해야 하고, 이 때 스레드에서 실행되어야 하는 코드를 작성해 주어야 한다. 두 가지 방식이 있다. (1) Runnable 인터페이스를 구현 자바에서 인터페이스는 클래스 보다 좀 더 추상적인 개념이다. 가령, 로봇에 대한 속성이나 동작 등을 클래스로 정의한다면, 어떻게 동작해야 하는 지 까지 세부 소스 코드를 작성해야 한다. 그러나, 인터페이스의 경우 어떠한 동작을 한다.. 더보기
객체지향 기본 개념 1. 캡슐화 (Encapsulation) 1.1 캡슐화란? ▶ 객체지향에서 캡슐화라는 개념은 클래스 내부에 여러 속성과 여러 오퍼레이션을 함께 묶음을 의미한다. 그리고 캡슐화는 클래스 내부의 속성이나 오퍼레이션을 외부에 노출하지 않고 보호하는 것을 의미한다. 이렇게 캡슐화는 묶는 것과 보호하는 것을 생각할 수 있다. 좀 더 상세하게 생각해 보면, 여러 속성과 여러 오퍼레이션을 함께 묶어 클래스로 취급하는 것과 클래스 내부를 외부에서 접근하지 못하도록 보호하는 것이 바로 캡슐화이다. 즉, 속성과 오퍼레이션을 하나의 클래스로 패킹한 것이 바로 캡슐화라는 개념이다. 외부로 부터 내부를 감싸 숨기는 것을 캡슐화라고 한다. 1.2 캡슐화는 왜 해야 할까? ▶ 캡슐화를 통해 묶고 숨김을 생각해 보았다. 그런데 왜 .. 더보기
자바실습1) 5명의 점수 입력받아 총점,평균 구하기 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Test{ public static void main(String []args) throws IOException{ BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); int a[][] = new int[5][3]; int sum[] = new int[5]; double avg[] = new double[5]; String t[] = {"국어","영어","수학"}; for(int i=0; i 더보기
자바란 무엇인가 Java는 1990년대 전반에 Sun Microsystems사가 개발한 프로그램 언어의 하나이다. 원래는 디지털 가전 전용으로 개발된 컴팩트한 언어였는데, 인터넷의 보급에 따라 Java도 인터넷과 궁합이 좋은 언어로 발전한 것이 계기가 되어서 급속히 퍼져나갔다. ◆ 자바의 특징 1. 범용 프로그램이다. 2. 간단하다. 3. 객체 지향 언어이다. 4. 프로그램을 안전하게 실행할 수 있다. 5. 플랫폼에 의존하지 않는다. 6. 네트워크 관련 기능이 충실하다. ◆ Write Once, Run Anywhere !! Java 언어로 만들어진 프로그램은 특정의 OS나 CPU에 의존하는 일 없이 어떤 플랫폼에서라도 동작될 수 있도록 설계되었다. 통상 프로그램을 실행할 때에는, 최종적으로 각 플랫폼에 대응한 목적코드(.. 더보기
J2SE, J2EE, J2ME 기본적인 Java의 개발/실행 환경으로 Java언어를 이용하여 어플리케이션(Application), 애플릿(Applet) 그리고 컴포넌트(Component) 등을 개발하고 실행할 수 있는 환경을 제공하는 플랫폼이다. 어떠한 Java 프로그램을 개발하더라도 J2SE 설치는 필수이며 SDK, RE, Plugin 기술등으로 구성된다. - J2SE의 SDK는 기존으 JDK와 동일한 기술로서 Java 프로그래밍의 개발환경이다. SDK에는 RE가 포함되어 있다. - J2SE의 RE는 Java 프로그램의 수행환경이다. - J2SE의 Plugin은 Web 브라우저의 동적 모듈 프로그램으로서 Java Applet 프로그램의 수.. 더보기
JVM 메모리 구조(메서드 영역, 힙, 호출스택) 응용프로그램이 실행되면, JVM은 시스템으로부터 프로그램을 수행하는데 필요한 메모리를 할당받고 JVM은 이 메모리를 용도에 따라 여러 영역으로 나누어 관리한다. 그중 3가지 주요영역(메소드 영역, 호출 스택, 힙)에 대해서 알아보자. 1. 메서드 영역 - 프로그램 실행 중 어떤 클래스가 사용되면, JVM은 해당 클래스의 클래스 파일(*.class)을 읽어서 분석하여 클래스에 대한 정보(클래스 데이터)를 이곳에 저장한다. 이 때, 클래스의 클래스 변수도 이 영역에 함께 생성된다. 2. 힙 - 인스턴스가 생성되는 공간, 프로그램 실행 중 생성되는 인스턴스는 모두 이곳에서 생성된다. 즉, 인스턴스 변수들이 생성되는 공간이다. 3. 호출 스택 - 호출 스택은 메서드의 작업에 필요한 메모리 공간을 제공한다. 메서.. 더보기