본문 바로가기

java

(10)
제네릭이란 무엇인가? ( Generics ) 동적 타이핑이 가능한 Javascript 나 python 을 사용하다보면 항상 하는 생각이 있다. 이 값이 문자인가? 아니면 이 값이 숫자 인가? 정말 헷갈릴 때는 결국 타입 체크를 통해서 해당 타입을 추론하며 코드를 작성했었다. 동적이기 때문에 타입 지정을 하지 않고 막 쓸 수 있어서 편한 점은 있지만, 사용이 편하기 때문에 타입 에러나 런타임 에러 등 다른 문제가 발생하게 된다. ( 세상 이치 인 것 같다 ) 아무튼 이번에 자바를 공부하면서 제네릭이 나오는데 JS 를 많이 하다 보니 타입 스크립트를 공부할 때 도움이 많이 될 것 같다. 보다 보니 언어가 굉장히 많은 부분 비슷하다고 느껴 지고 확실히 좋은 점은 서로 닮아가려는 점 때문에 비슷해지는 것 같다. ( 예를 들면 자바 최신 문법 중 var 동..
문자열 다루기? 객체지향 언어에서는 클래스 타입을 사용할 수 있습니다. 문자열 역시 별도의 클래스 타입으로 만들어 사용할 수 있습니다. 자바의 경우 String 클래스가 문자열 타입이라고 할 수 있습니다. 자바에서는 문자열 처리가 매우 쉽지만 기본적인 구조와 특징들을 잘 이해하고 사용하지 않으면 생각하지 못한 문제가 발생하거나 성능상에 문제가 발생할 수 있습니다. String 클래스는 불변(immutable)클래스 생성된 String 인스턴스가 갖고 있는 문자열값은 읽어올 수만 있고, 변경할 수는 없다. ’+’ 연산자를 이용해서 문자열을 결합하는 경우 인스턴스내의 문자열이 바뀌는 것이 아니라 새로운 문자열이 담긴 String 인스턴스가 생성됨. 문자열간의 결합등의 작업은 문자열 + 보다는 StringBuffer클래스를 ..
java 예외 처리 예외적인 상황을 대비 한 코드를 미리 만들어 두어서 문제 발생시 좀 더 안정적인 구조를 제공하여 문제 해결에 필요한 정보를 제공 받을 수 있다. 일반적으로 프로그램에서 발생하는 에러는 컴파일 과정 중 발생하는 컴파일 에러와 실행 중 발생하는 런타임 에러로 구분된다. 컴파일 에러는 소스 작성과정 중에 대부분 발견된다. 런타임 에러는 프로그램 로직 상에 문제나 실행 중 부적절한 데이터 혹은 자료구조 객체 참조 등으로 발생된다. try~catch 블럭 자바에서 기본적인 예외 처리 방법은 try ~ catch 블럭을 사용하는 것이다. 그렇다면 언제 사용해야할까? 예외상황은 이럴 때 생겨난다고 볼 수 있다. 1. 특정 파일을 로딩하려고 하는 해당 경로에 파일이 없는 경우 2. 네트워크 서버에 접속하는 경우 서버에..
제어자? 제어자는 클래스, 변수, 메서드의 선언부에 사용되어 부가적인 의미를 부여한다. public , static 같은 키워드들이 여기에 해당된다. 이러한 제어자에는 클래스의 접근 범위와 관련된 접근 제어자 (access modifier) 와 일반 제어자가 있다. - 접근 제어자 : public, protected, default, private - 일반 제어자 : static, final, abstract, native, transient, synchronized, volatile, strictfp 이들 제어자는 상황에 따라 클래스, 메서드, 변수 등에 사용하며 하나의 대상에 여러 개의 제어자를 조합해서 사용할 수 있으나, 접근 제어자는 단 하나만 사용 할 수 있다. static 클래스 혹은 공통적인 이라는 ..
오버로딩과 오버라이딩 overloading ? 이름이 같은 메서드지만, 매개 변수 ( arguments ) 의 유형과 개수를 다르게 하여 다양한 유형의 메서드를 만드는 것을 overloading 한다라고 한다. public class OverloadingClass { void method () { System.out.println("매개변수 없음"); } void method (int a, int b) { System.out.printf("매개변수 %d %d 있음\n", a , b); } void method (double d) { System.out.println("매개변수 " + d); } public static void main(String[] args) { OverloadingClass overload = new O..
자바 메모리 관리 ? JVM 은 시스템 ( 운영 체제 ) 로 부터 프로그램을 실행하는 데 필요한 메모리를 할당 받고 JVM 은 할당 받은 메모리를 용도에 따라 세 영역으로 나누어 관리한다. 자바는 C언어와 같이 직접적인 메모리 주소에 접근할 수 없으며, 개발자가 메모리를 할당 받거나 반환하지 않아도 되는 구조이기 때문에 일반적인 응용 프로그래머의 경우, 구체적인 메모리 관리에 대해서 자세히 알 필요가 없다.. 다만 프로그램 동작 구조를 보다 정확히 이해하기 위해서 다음 내용은 알아둘 필요가 있다. 메서드 영역 ( Method area ) 프로그램 실행 중 특정 클래스가 사용되면, JVM 은 해당 클래스의 클래스 파일 (.class)을 읽어서 분석한 다음 클래스에 대한 정보를 이곳에 저장한다. 이때, 클래스 변수 나 메서드 (..
4주차 제어문 목표 자바가 제공하는 제어문을 학습하세요. 학습할 것 선택문 반복문 제어문 제어문: 코드의 실행 흐름(순서)를 제어하는 구문 ( cf. 순차문 : 코드가 작성된 순서대로 실행되는 구문) if 문 간단한 의사 결정 문이다. 명령문이나 명령문 블록의 실행 여부를 결정하는데 사용된다. 주어진 조건이 참이면 명령문 블록이 실행된다. 그렇지 않으면 블록을 건너 뛴다. 조건을 실행하는 동안 조건이 참이면, 해당 명령문이 실행되고 나머지는 건너 뛴다. 어떤 조건도 참이 아니면 마지막 else 문이 실행된다. if(condition) { // If condition is true then this block of statements will be executed } else if(condition) { // If co..
3주차 과제 연산자 목표 자바가 제공하는 다양한 연산자를 학습하세요. 학습할 것 산술 연산자 비트 연산자 관계 연산자 논리 연산자 instanceof assignment(=) operator 화살표(->) 연산자 3항 연산자 연산자 우선 순위 (optional) Java 13. switch 연산자 산술 연산자 수학적 계산 ( 사칙 연산 ) 에 사용되는 연산자이다. 연산자 기능 설명 에러 + 이항 더하기 연산자 하나의 숫자를 다른 숫자에 더한다. null 단항 플러스 연산자 숫자 프로모션을 트리거하는 것과 별개로 기능을 수행 null 문자열 연결을 수행 두개의 문자열을 조인하여 세번째 문자열을 제공 null - 이항 더하기 연산자 다른 숫자에서 하나의 숫자를 뺀다. null 단항 플러스 연산자 ( -1 ) 피 연산자를 0에서..