728x90
반응형

java 178

[JAVA] 자바의 스택 & 큐 (Stack & Queue)

스택 Stack 한 쪽(TOP)에서 데이터의 추가/삭제가 발생하는 구조 먼저 들어간 객체가 마지막에 나오는 구조(First In Last Out) 마지막에 들어간 객체가 먼저 나오는 구조(Last In First Out) 후입선출 구조 주로 응용프로그램의 undo/redo, 웹브라우저의 뒤로/앞으로 기능을 2개의 Stack(backward, forward)으로 구현 Stack stack = new Stack(); // push(Object o) : 데이터를 스택에 추가 stack.push("1 - www.itwillbs.co.kr"); stack.push("2 - www.naver.com"); stack.push("3 - www.oracle.com"); // Object peek() : 맨 위의 객체 리..

[JAVA] 자바 컬렉션 프레임워크 - Map 편

Map 인터페이스 계열 키(Key) 와 값(Value)을 한 쌍으로 갖는 자료 구조(해쉬테이블 구조) 키는 중복 불가, 값은 중복 가능 기존에 존재하는 키를 지정하여 값을 저장하는 경우 기존 키에 저장된 값을 제거하고 새로운 값으로 대체 대표적인 구현체 클래스 : HashMap, Properties 등 Map map = new HashMap(); // put(Object key, Object value) : key 에 해당하는 value 추가 map.put(1, "홍길동"); map.put(2, "이순신"); map.put(3, "강감찬"); System.out.println("Map 객체가 비어있는가? " + map.isEmpty()); System.out.println("Map 객체에 저장된 엔트리 ..

[JAVA] 자바 컬렉션 프레임워크 - List 편

List 인터페이스 계열 저장 순서를 유지하며, 데이터 중복을 허용하는 구조 인덱스 번호를 사용하여 요소 관리 배열과 유사한 구조 add() 메서드로 데이터 추가, get() 메서드로 데이터 리턴 대표적인 구현체 클래스 : ArrayList, Vector, LinkedList 등 List list = new ArrayList(); // add() : 데이터 추가 list.add(1); list.add(2); list.add("삼"); list.add(4); list.add(5.5); list.add(6); System.out.println("List 객체가 비어있는가? " + list.isEmpty()); System.out.println("List 객체에 저장된 요소 갯수 : " + list.size(..

[JAVA] 자바 컬렉션 프레임워크 - Set 편

Set 인터페이스 계열 저장 순서를 유지하지 않고, 데이터 중복을 허용하지 않는 구조 하나의 주머니에 무작위로 저장하는 구조와 동일함 대표적인 구현체 클래스 : HashSet, TreeSet 등 package collection_framework; import java.util.Arrays; import java.util.HashSet; import java.util.Iterator; import java.util.Set; import java.util.TreeSet; public class Ex_Set { public static void main(String[] args) { Set set = new HashSet(); System.out.println("Set 객체가 비어있는가? " + set.is..

[JAVA] 자바가 제공하는 패키지

java.lang 패키지 자바에서 기본이 되는 패키지 자주 사용되는 자바 클래스와 인터페이스가 위치함 별도의 import 없이도 접근 가능한 패키지 Object, String, Integer, System 등이 위치함 Object 클래스 자바의 모든 클래스의 최상위 슈퍼클래스 별도로 클래스를 상속받지 않으면 자동으로 상속되는 클래스 따라서, 모든 클래스는 Object 클래스의 멤버를 사용 가능 대표적인 메서드 equals() : 두 객체가 같은지 비교 후 결과값 리턴 같은 주소를 참조하는지 동등 비교(==) 수행함 일반적으로 두 객체가 같은지를 비교하는 것은두 객체의 멤버변수 값이 같은지를 비교하는 것이므로 Object 클래스의 equals() 메서드를 그대로 사용하지 않고 오버라이딩하여 객체 내의 참조..

[JAVA] 자바의 예외처리 Exception

예외 Exception 오류Error 는 시스템의 치명적인 문제로 인해 발생하는 문제이며 개발자가 코드 상에서 해결이 불가능한 문제를 말하지만 예외Exception는 코드 상에서 실수 등으로 인해 발생하는 문제이며 개발자가 코드 상에서 해결이 가능한 문제 예외가 발생할 경우 발생 시점에서 프로그램은 비정상적으로 종료됨 예외가 발생했을 때 프로그램이 비정상적으로 종료되지 않도록 추가적인 작업을 수행하여 정상적으로 종료되도록 하는 것을 예외 처리Exception Handling 라고 한다. 예외가 발생되면 해당 예외에 대한 처리를 담당하는 클래스의 객체를 생성한 뒤 예외 메세지를 포함하여 예외를 던짐(throw) 따라서, 해당 객체를 전달받아 예외를 처리해야함 try ~ catch 문을 사용하여 기본적으로 ..

[JAVA] 자바의 인터페이스 Interface

인터페이스 Interface 어떤 객체와 개발자 사이의 접점(중개) 역할 인터페이스 정의 시 class 키워드 대신 interface 키워드를 사용 인터페이스는 상수와 추상메서드만 가질 수 있음 상수 : public static final 을 사용하여 선언하며 생략도 가능 추상메서드 : public abstract 를 사용하여 정의하며 생략도 가능 추상클래스와 마찬가지로 객체 생성이 불가능하며, 상속 전용으로 사용 단, 데이터타입으로는 사용 가능하므로, 다형성 활용 가능 동일한 인터페이스를 구현하는 클래스를 사용하는 경우 하나의 인터페이스 타입으로 모든 객체를 컨트롤할 수 있다 추상클래스보다 강제성이 더 강하다 추상클래스는 일부 멤버(메서드)에 대한 강제성을 부여하지만 인터페이스는 모든 추상메서드와 상수..

[JAVA] 자바의 상수 Constant

상수 Constant 항상 같은 값을 갖는 데이터(불변데이터) = Literal(리터럴) 변수 중에서도 값이 변하지 않는 변수를 상수라고 함 (= 상수형 변수) 보통 변수에 static final 을 붙여서 표현 static : 클래스 내의 유일한 데이터이며, 클래스명으로 접근 final : 값 변경 금지 상수로 선언되는 변수는 이름을 대문자로 선언하며 단어 사이의 구분 기호로 언더스코어(_) 기호 사용) class Car2 { // 상수(static final)를 사용하여 데이터를 관리하는 경우 private String company; private String model; private int color; // 데이터 저장에 필요한 값들을 상수로 미리 선언해둠 // => 이 때, 상수명을 최대한 식..

[JAVA] 자바의 Static

static 정적(static) 멤버 변수 = 클래스 멤버 변수 클래스가 메모리(메서드 영역)에 로딩될 때 함께 로딩되는 멤버변수 인스턴스 생성과 상관없음 인스턴스 생성 없이 클래스명만으로 접근 가능 클래스명.정적멤버변수명 또는 클래스명.정적메서드명() 정적 멤버변수의 경우 모든 인스턴스에서 하나의 값을 공유함 공유 메모리 공간을 사용하므로 모든 인스턴스가 주소값 공유 로컬변수는 메서드 호출 및 종료와 관계있고 인스턴스변수는 인스턴스 생성 및 소멸과 관계있고, 클래스변수는 클래스 로딩(프로그램 시작) 및 클래스 제거(프로그램 종료)와 관계있다. class StaticEx { static int a = 10; // 클래스(static = 정적) 멤버변수 선언 int b = 20; // 인스턴스 멤버변수 선..

[JAVA] 자바의 추상 클래스 & 메서드

추상메서드 메서드 구현부(바디, {}) 가 없는 메서드 실행할 코드가 없는 메서드 구현부가 없기 때문에 외부에서 호출해도 실행할 코드가 없음 따라서, 추상메서드를 포함하는 클래스는 반드시 추상클래스로 선언해야한다 추상메서드 정의 시 리턴타입 앞에 abstract 키워드를 붙임 추상메서드 정의 기본 문법 [접근제한자] abstract 리턴타입 메서드명([매개변수..]); 추상클래스 인스턴스 생성이 불가능한 클래스 인스턴스 생성이 가능할 경우 추상메서드 호출이 가능하므로 인스턴스 생성을 못하도록 막아놓은 클래스 상속을 통해 서브클래스에서 추상메서드를 구현하도록 강제하는 용도의 클래스로 주로 사용 추상클래스가 가질 수 있는 멤버 생성자, 일반 멤버변수, 상수, 일반 메서드, "추상 메서드" 추상클래스 정의 시..

[JAVA] 자바의 참조형변환 (레퍼런스 형변환)

[JAVA] 참조형변환(래퍼런스 형변환) 클래스 간의 형변환(참조형 변수끼리의 형변환) 반드시 상속 관계에서만 가능한 변환 업캐스팅 Up Casting 슈퍼클래스 타입으로 서브클래스의 인스턴스를 참조하는 것 서브클래스 인스턴스를 슈퍼클래스 타입으로 변환하는 것 기본 문법 슈퍼클래스타입 변수명 = 서브클래스인스턴스; 묵시적(자동) 형변환이 일어남 참조 가능한 영역이 축소됨 (슈퍼클래스 타입에서 선언된 변수, 메서드만 접근 가능함) 하나의 슈퍼클래스 타입으로 여러 서브클래스 인스턴스의 공통된 멤버에 접근 가능하도록 해준다 일반적인 레퍼런스 형변환을 의미 자식(서브클래스) 타입에서 부모(슈퍼클래스) 타입으로 변환 시 "자동 형변환(업캐스팅)"이라고 하며, 부모(슈퍼클래스) 타입에서 자식(서브클래스) 타입으로 ..

[JAVA] 자바의 final

final 키워드 클래스, 메서드, 변수 선언 시 변경의 마지막을 표시 멤버변수에 final 사용 시 : 변수 값 변경 금지(= 상수로 취급됨) => final 키워드가 붙은 변수(상수)는 일반 변수와 구분하기 위해 대문자로 변수명을 작성함(단어 구분은 언더스코어(_) 사용) 메서드에 final 사용 시 : 메서드 변경 금지(= 오버라이딩 금지) 클래스에 final 사용 시 : 클래스 변경 금지(= 상속 금지) => 대표적인 final 클래스 : java.lang.String, java.lang.Math 등 // 1. 멤버변수에 final 키워드 사용 => 값 변경 불가(상수로 취급) class FinalVariable { int num1 = 10; // 일반 멤버변수(차후에 값 변경 가능) //fina..

[JAVA] 자바의 this & super

this this 키워드 자신의 인스턴스를 가리키는 목적으로 사용됨 객체(인스턴스) 생성 시 참조변수 this 에 자동으로 인스턴스 주소가 저장됨 레퍼런스 this 자신의 인스턴스 주소가 저장되는 참조 변수 모든 인스턴스에 자동으로 생성되는 변수이며 객체(인스턴스) 생성 시 자동으로 자신의 인스턴스 주소가 저장됨 인스턴스변수와 로컬변수의 이름이 같을 때, 로컬변수가 선언된 메서드 내에서 인스턴스변수를 가리키는 용도 메서드 내에서 인스턴스변수와 이름이 중복되는 변수가 없으면 레퍼런스 this 를 생략할 수 있다. 기본 사용 문법 this.인스턴스변수 또는 this.인스턴스메서드() class Person3 { String name; int age; public Person3(String name, int ..

[JAVA] 자바의 상속 Inheritance

[JAVA] 상속 Inheritance 슈퍼클래스(부모클래스, 상위클래스)가 가진 멤버(변수, 메서드)를 서브클래스(자식클래스, 하위클래스)가 물려받아 선언없이 사용할 수 있도록 하는 것 서브클래스를 정의할 때 물려받을 슈퍼클래스를 지정하여 표현 is-a 관계라고도 함 상속을 통해 슈퍼클래스의 멤버를 물려받기 때문에 직접 메서드 또는 변수를 생성할 필요가 없어서 코드 중복 최소화됨 또한, 슈퍼클래스의 멤버를 수정하면 서브클래스에는 슈퍼클래스에서 수정된 내용이 그대로 적용되므로 유지보수가 용이 상속 적용 기본 문법 class 서브클래스명 extends 슈퍼클래스명 {} // 슈퍼(부모) 클래스 정의 public class Parent { public void parentPrn() { System.out.p..

[JAVA] 자바의 패키지 Package

패키지(Package) 및 package 문 클래스 파일이 위치하는 물리적 폴더 구조 패키지가 다르면 같은 이름의 클래스도 각각 별도로 관리가 가능함 패키지명은 상위패키지와 하위패키지로 구분하여 패키지 내에 또 다른 패키지를 생성할 수 있음 각 패키지 단계를 마침표(.)로 구분하여 지정 패키지명은 보통 각 회사의 도메인 이름을 사용하며 도메인 이름을 상위도메인부터 역순으로 나열하여 지정 ex. samsung.com 일 경우 com.samsung 으로 지정 특정 패키지에 소속된 클래스의 소스코드 최상단에는 반드시 package 키워드를 사용하여 소속 패키지의 이름을 명시해야함 단, 하나의 클래스는 하나의 패키지에 소속되므로 package 문은 소스 코드 최상단에서 단 한 번만 선언됨 특정 클래스의 이름을 ..

[JAVA] 자바의 생성자 Constructor

생성자 Constructor 객체를 생성할 때 new 연산자 뒤에 붙어서 호출되며, 객체 초기화를 담당하는 메서드의 일종 객체 생성 시 단 한 번만 호출 가능(임의로 호출 불가능) 메서드와 다른 점 생성자의 이름은 반드시 클래스명과 동일해야한다 리턴타입을 기술하지 않는다 (void 도 사용하지 않음) 클래스 정의 시 생성자를 하나도 정의하지 않을 경우 컴파일러에 의해 기본 생성자 Default Constructor가 자동으로 생성됨 매개변수가 없고, 중괄호 블록 내에 코드가 없는 빈 생성자 생성자 정의 기본 문법 [접근제한자] 클래스명([매개변수...]) { // 생성자 호출(객체 생성) 시 수행할 코드들... } 기본 생성자 형태 public 클래스명() {} /* * Person 클래스 정의 * 멤버..

[JAVA] 자바의 접근제한자 Access Modifier

접근제한자 Access Modifier 클래스 또는 인터페이스의 멤버에 접근을 제한하는 키워드 4가지(public, protected, (default), private) 로 구성되며 default 접근제한자는 별도의 키워드 없이 변수 또는 메서드 선언 public : 외부의 모든 클래스에서 접근 가능하도록 지정 private : 자신의 클래스에서만 접근 가능하도록 지정 (다른 클래스에서 접근 불가능하도록 지정) default(package) - 같은 패키지 내의 클래스에서 접근 가능 패키지 선행학습후 공부하기 private - 자신의 클래스에서만 접근 가능 (다른 클래스에서 접근 불가) 주로, 클래스 내의 멤버변수는 private 접근제한자를 사용하여 외부에서 접근할 수 없도록(내부에서만 접근 가능하도..

[JAVA] 자바의 클래스 Class

클래스 class 클래스를 정의한 뒤 반드시 인스턴스를 생성하여야만 해당 클래스에 대한 실체화가 되고, 실체화 된 인스턴스를 통해 변수에 데이터를 저장하거나 메서드를 호출하여 동작을 수행 가능 객체 사용 순서 클래스타입(참조형) 변수 선언 new 연산자를 사용하여 클래스의 인스턴스 생성 => 생성된 인스턴스의 주소를 참조 변수에 저장 주소가 저장된 참조 변수를 통해 인스턴스에 접근하여 사용 클래스타입(참조형) 변수 선언 기본 문법 클래스명 변수명; 클래스 인스턴스 생성 및 주소 저장 기본 문법 변수명 = new 클래스명(); 클래스 변수 선언 및 인스턴스 생성을 동시에 수행하는 문법 클래스명 변수명 = new 클래스명(); 생성된 인스턴스 접근 방법 변수명.멤버변수명 또는 변수명.메서드명() /* * 분..

[JAVA] 자바의 메서드 Method

메서드 Method 객체의 동작(기능)을 담당하는 요소 반드시 호출되어야만 사용 가능(호출당해서 작업을 수행하는 메서드 : Worker 메서드) (특정 메서드를 호출하는 메서드 : Caller 메서드) 메서드 구현부(바디) 내에서 작업을 수행하는 도중 작업을 중지하고 호출한 곳으로 되돌아가려면 return 문을 사용 단, 리턴타입에 따라 return 문 뒤에 데이터를 명시할 수도 있고 return 문 자체를 생략할 수도 있음 매개변수는 1개 이상의 변수를 선언할 수 있지만 리턴값은 1개만 리턴 가능(동시에 2개 이상 리턴 불가) 메서드 정의 기본 문법 [제어자] 리턴타입 메서드명([매개변수선언]...) { // 메서드가 호출되면 실행될 코드들... [return [값];] } 제어자 : 생략이 가능하며,..

[JAVA] 자바의 배열 Array

배열(Array) 같은 타입의 여러 데이터를 하나의 묶음으로 다루는 것 동일한 데이터타입 변수들의 집합 배열은 메모리 상의 연속된 공간에 생성됨 따라서, 한 번 생성한 배열의 크기를 변경할 수 없다 기본 데이터타입과 참조 데이터타입 모두를 배열로 생성 가능 저장된 데이터들은 **배열명(변수명)**을 사용하여 관리 배열의 크기는 배열명.length 속성을 사용하여 알아낼 수 있다 배열 생성 시 각 데이터 저장공간에는 **인덱스(첨자)**라는 번호가 붙는다 따라서, 배열의 인덱스 범위는 0 ~ 배열크기-1 까지 자동 부여됨 배열을 사용하려면 배열 선언 -> 생성 -> 초기화 단계를 거쳐야한다.기본값 : byte&short&int = 0, long = 0L, float = 0.0f, double = 0.0 b..

[JAVA] 자바의 반복문 for & while

반복(loop) 문 특정 조건에 따라 문장 또는 블록을 반복 실행하는 문 for문, while문으로 구분됨 for문은 주로 반복 횟수가 정해져 있는 반복문에 사용되며, while문은 주로 반복횟수가 정해져 있지 않은 반복문에 사용됨 초기식, 조건식, 증감식, 실행문(블록)으로 구성됨 for문 초기식, 조건식, 증감식의 위치가 정해져 있는 반복문 (초심자에게 유리) 초기식으로 제어 변수를 초기화 한 후, 조건식을 통해 반복 여부를 결정한 뒤 결과가 true 이면 반복할 문장을 실행하고 증감식을 통해 제어변수를 증감시킴 이후 조건식 -> 실행문 -> 증감식 순으로 반복 수행하다 조건식 결과가 false 가 되면 반복문을 종료하고 빠져나감 기본 문법 for(초기식(1); 조건식(2); 증감식(4)) { // ..

[JAVA] 조건문 if & switch

조건문 특정 조건에 따라 문장의 실행 여부를 결정하는 문 단일 if문 조건식에 따라 특정 문장 실행 여부를 결정하는 기본적인 조건문 조건식 판별 결과가 true 이면 블록( { } ) 문 내의 문장들을 실행하고 조건식 판별 결과가 false 이면 블록 문을 생략함 기본 문법 문장1; if(조건식) { 문장2; // 조건식 판별 결과가 true 일 때 실행할 문장들... } 문장3; 조건식 판별 결과가 true 일 때 : 문장1 -> 문장2 -> 문장3 조건식 판별 결과가 false 일 때 : 문장1 -> 문장3 if ~ else 문 조건식 판별 결과에 따라 서로 다른 문장을 실행하는 if문 조건식 판별 결과가 true 이면 if 문의 중괄호 블록문{} 을 실행하고 false 이면 else 문의 블록문{}..

[JAVA] 자바의 비교&논리 연산자

비교(관계) 연산자 두 피연산자 간의 대소 관계 비교를 수행하는 연산자 연산 수행 결과는 true 또는 false 값으로 나타냄 => 연산 결과를 출력문에서 출력하거나, boolean 타입 변수에 저장 == (동등 비교 연산자) : 두 피연산자가 같은지 비교 != (Not Equal) : 두 피연산자가 같지 않은지(다른지) 비교 >, >=, a 와 b 는 다르므로(같지 않으므로) true 가 리턴되어 출력됨 System.out.println(a > b); // a 가 b 보다 큰지 판별 // => a 가 b 보다 크므로 true 가 리턴되어 출력됨 System.out.println(a >= b); // a 가 b 보다 크거나 같은지 판별 // => a 가 b 보다 크거나 같으므로 true 가 리턴되어 출..

[JAVA] 자바의 연산자

산술 연산자(+, -, *, /, %) *기본 사칙연산(+, -, , /) 과 나머지 연산자로 구성 나눗셈 연산자(/)는 나눗셈 결과 중 몫만 계산하고, 나머지 연산자(%)는 나눗셈 결과 중 나머지만 계산 덧셈연산자의 경우 일반적인 덧셈 기능 외에 문자열에 사용 시 문자열 결합 연산자로 동작함ex) "문자열" + 정수 = "문자열정수" 실수 + "문자열" = "실수문자열" (문자열과 특정 데이터타입간에 덧셈연산시 두 데이터를 결합하여 하나의 문자열로 만들어준다) int a = 10, b = 3, c; c = a + b; System.out.println(a + " + " + b + " = " + c); c = a - b; System.out.println(a + " - " + b + " = " + c);..

[JAVA] 자바의 형변환 Type Casting

형변환 Type Casting 어떤 데이터 타입을 다른 데이터 타입으로 변환하는 것 기본 형변환 기본 데이터 타입 8가지 중 boolean을 제외한 나머지 7가지 타입끼리의 형변환 작은 타입에서 큰 타입으로 변환 시 자동 형변환 묵시적(암시적) 형 변환 = 자동 형변환 작은 데이터 타입 데이터를 큰 데이터 타입으로 변환하는 것 별다른 추가 작업 없이 그대로 전달하면 컴파일러에 의해 자동으로 변환됨 변환된 후에도 데이터의 변형이 없음 큰 타입에서 작은 타입으로 변환 시 강제 형변환 명시적 형변환 = 강제 형변환 큰 데이터 타입 데이터를 작은 데이터 타입으로 변환하는 것 값의 손실(= 넘침(Overflow))이 발생할 가능성이 있으므로 컴파일러에 의해 자동으로 형변환 되지 않는다. 형변환 연산자를 사용하여 ..

728x90
반응형