본문 바로가기
728x90

Programming/Java49

[자바/Java] 문자열2 - StringBuilder, StringTokenizer StringBuilder StringBuilder는 자바5부터 생긴 클래스로 String과 같이 문자열을 다루는 클래스이다. 쓰레드에 안전하지 않지만(thread-unsafe) 속도가 빠르다는 장점이 있다. 또한 저번 글에서 배운 String 클래스와는 다르게 mutable 클래스이기 때문에 메소드를 수행시 원본의 값이 변경된다. 자바 ver 1.0부터 존재했던 클래스인 StringBuffer 또한 문자열을 다루는 클래스이고 StringBuildr와 같은 기능(메소드)를 갖고 있다. StringBuilder와의 차이점은 쓰레드에 안전(thread-safe)한 대신에 속도가 느리다. 위에서 언급하였듯이, StringBuilder는 빠르고 또한 mutable하기 때문에 메소드 수행 후 반환값을 다시 참조해주.. 2023. 10. 8.
[자바/Java] 문자열1 - String 문자열(String) 자바로 프로그래밍을 하다보면 primitive type, reference type 등 많은 기본 타입의 변수와 참조 타입의 변수를 선언하고 사용을 한다. 자바에서는 문자열, 즉 String 타입의 변수는 기본 타입인 아닌 String 클래스를 통해 객체를 생성하여 사용하는 참조 타입이다. (처음 접하는 분들은 모를 수 있는..) 그렇기 때문에 String 타입으로 선언된 객체는 String 클래스에 선언된 수많은 유용한 메소드를 사용할 수 있기 때문에 자바에서는 문자열 타입의 객체를 많이 사용한다. 이번 글에서는 String 클래스에 존재하는 유용한 메소드 들에 대해서 알아보겠다. 문자열 선언 자바에서 클래스를 통해 객체를 생성할 때 new 키워드를 사용하여 생성하지만 String.. 2023. 10. 8.
[자바/Java] 예외(Exception) 예외(Exceiption)이란 개발자들이라면 필연적으로 예외가 발생하는 상황을 마주한다. 자신이 작성한 코드를 실행할 때 어떠한 원인에 의해 프로그램이 정상 작동하지 않고 예외 또는 에러를 발생시키며 종료되는 상황은 빈번하게 일어난다. 이러한 상황을 프로그램의 오류가 발생했다고 하는데 이러한 오류는 크게 컴파일 오류와 런타임 오류 두가지로 나뉜다. 컴파일 오류는 문법상의 오류이기 때문에 쉽게 잡아낼 수 있지만 런타임 중 발생하는 오류인 런타임 오류는 해결하기가 까다롭다. 자바에서는 런타임 오류를 두가지로 나뉘는데 바로 에러(Error)와 예외(Exception)이다. 에러는 코드로는 해결할 수 없는 오류이지만 예외는 프로그래머가 직접 예측하여 막을 수 있는 처리 가능한 오류이다. 그렇기 때문에 자바를 사.. 2023. 10. 8.
[자바/Java] 추상클래스 && 인터페이스 추상 클래스란 추상 클래스는 일반 클래스와 별 차이가 없는 클래스이다. 차이점은 추상클래스도 일반 클래스처럼 멤버 변수, 생성자, 메소드들로 구성되어 있지만 바로 추상 메서드를 선언해 줄 수 있는 메소드인 것이다. 추상 메소드를 선언하여 상속을 통해서 자손 클래스에서 완성하도록 유도하는 클래스이기 때문에 미완성 설계도라고도 표현하는 클래스이다. 추상 클래스와 일반 클래스의 큰 차이점 중 하나는 추상 클래스는 상속을 위한 (상속을 통해 완성되는) 클래스이기 때문에 new 키워드를 통한 객체를 생성할 수 없다. 추상 클래스는 다음과 같이 abstract 키워드를 통해 선언할 수 있다. abstract class 클래스명 { ... } 추상 메소드 추상 메소드는 추상 클래스 내에서 선언할 수 있는 특별한 메소.. 2023. 10. 6.
[자바/Java] 다형성(Polymorphism) 다형성이란? 다형성이란 자바의 주요 개념 중 하나로 여러개를 의미하는 poly와 형태 또는 실체를 의미하는 morphism의 결합어이다. 즉, 자바에서 다형성(polymorphism)이란 하나의 이름의 클래스나 메소드가 '여러 가지 형태의 동작을 하는 능력'이다. 메소드의 다형성은 이전에 배웠던 같은 클래스 내에서의 메소드 오버로딩, 상속 관계에서의 메소드 오버라이딩이 이에 해당한다. 클래스의 다형성은 한 타입의 참조 변수로 여러 타입의 객체를 참조하는 것이 가능하게 한다. 즉, 상속 관계에서 조상클래스 타입의 참조변수로 자손 클래스의 인스턴스를 참조하는 것이 가능한 것이다. 클래스의 다형성은 다음과 같은 조건에서 성립한다. 상위 클래스와 하위 클래스가 상속관계여야 한다. 다형성이 보장되기 위해 오버라이.. 2023. 10. 6.
[자바/Java] 상속(inheritance) 상속이란? 상속은 자바의 핵심 개념 중 하나이다. 상속은 이름 그대로 부모가 자식에게 재산을 물려주는 것과 유사한 의미이다. 현실 세계에서 상속과의 차이점은 자바에서의 상속은 자식 클래스가 상속 받고 싶은 부모의 클래스를 선택해서 물려받는 것이다. 이 때에 상속 받는 클래스를 자식 클래스, 하위 클래스 또는 서브 클래스라고 부르고 상속을 해주는 클래스는 부모 클래스, 상위 클래스 또는 슈퍼 클래스라고 한다. 상속을 하는 이유는 유지 보수가 쉽고 중복이 적고 통일성이 생기기 때문이다. 예를 들어, 핸드폰에는 아이폰, 갤럭시 등 수많은 종류의 휴대폰이 있지만 모든 핸드폰이 공통적으로 가지고 있는 기능들이 존재한다. 이 때, 이 공통된 기능(메소드)들을 핸드폰(클래스)을 만들때마다 구현을 하는 건 너무 비효율.. 2023. 9. 29.
[자바/Java] 클래스 클래스의 정의 자바 프로그래밍은 OOP(객체 지향 프로그래밍)이라고도 한다. 객체 지향 프로그래밍이란, 현실 세계에서도 특정 제품을 만들 때 여러 가지 부품들을 각각 만들어 하나로 조립하듯이 프로그밍적으로도 여러가지 객체(Object)를 각각 만들어서 하나로 조립하는 프로그래밍 기법이다. 이 때에 객체는 클래스를 통해 생성할 수 있게 된다.각 부품들의 기능과 또 그 부품이 가지는 또 다른 부품들로 이루어져 있듯이 객체를 생성하는 클래스도 다음과 같은 구조를 가지고 있다. 필드(Field) : 객체의 데이터가 저장되는 곳 생성자(Constructor) : new 연산자로 호출되는 메소드로 객체 생성 시 필드의 초기화를 담당 메소드(Method) : 객체의 동작에 해당하며 클래승의 다양한 동작을 구성 간단한.. 2023. 9. 29.
[자바/Java] 메소드5 - 재귀 호출 재귀란? 재귀 호출, 재귀 함수에서 재귀(recursive)란 자기 자신을 또 다시 호출한다는 뜻이다. 즉 재귀 함수(메소드)는 함수(메소드) 내에서 메소드가 자기 자신을 또 다시 호출하는 것이다. 이렇게 재귀를 통해 자기 자신을 호출하는 이유는 복잡한 문제를 간단하고 논리적으로 기술이 가능하기 때문이다. 그렇기 때문에 코딩 테스트 문제를 풀다 보면 많이 사용되는 개념 중 하나이다. 여러 복잡한 문제들을 간단하고 논리적이게 표현이 가능하다고는 하지만 메모리 부담이라는 명확한 단점 또한 존재한다. 이러한 단점에 대한 이유는 재귀가 어떤게 작동하는 지를 통해 알 수 있다. 재귀의 작동 방식 메소드를 호출할 경우, 호출한 시점에 대한 상태를 메모리에 저장해 두어야 메소드 종료시 현재 상태로 돌아와 남은 작업을.. 2023. 9. 29.
[자바/Java] 메소드4 - call by reference, call by value 프로그래밍 언어를 공부할 때 초반에 속을 썩이는 개념 중 하나가 바로 메소드(함수)의 매개변수가 call by value인지 call by reference인지에 대한 것이다. 특히 C를 공부할 때 많은 개발 입문자가 좌절을 맛 보는 pointer가 이러한 개념과 밀접하게 연관되어 있기 때문에 pointer에 대해서 이해를 못하면 이 개념 또한 이해하기가 어렵다. 하지만 자바에서는 포인터라는 키워드를 사용하지 않으므로 변수 타입에 따라 call by reference, call by value인지 정해지기 때문에 pointer와 같이 사용법이라는 것이 없기 때문에 해당 개념에 대해서만 정확하게 숙지하고 있으면 프로그래밍을 하는데 어려움은 없다. 변수 타입 - 참조냐 아니냐 변수의 타입은 세세하게는 int.. 2023. 9. 28.
[자바/Java] 메소드3 - Math 클래스 Math 클래스 자바에서는 기본적으로 제공하는 여러 객체들이 있다. 여기서 주목할 점은 클래스가 아닌 이미 클래스로 생성된 객체를 제공하기 때문에 별다른 선언없이 바로 사용할 수 있다는 점이다. 이렇게 기본적으로 제공되는 객체들은 여러 편리한 기능을 제공하고 있기 때문에 잘 활용할 경우, 여러 복잡한 작업들을 간단하게 작성할 수 있기 때문에 코드도 간결해진다. 그 중에 올림, 내림, 반올림 등 여러 수와 관련된 연산을 수행하는 메소드를 모아놓은 Math 클래스는 유용하게 사용되는 자바의 클래스 중 하나이다. 이번 글에서는 Math 클래스에서 자주 사용하는 메소드에 대해서 알아보겠다. 난수 발생시키기 난수란, 쉽게 말하여 무작위로 발생시킨 수이다. 자바의 Math 클래스에는 난수를 발생시키기 위한 메소드를.. 2023. 9. 28.
[자바/Java] 메소드2 - 리턴, 오버로딩 Return 의미 Return은 Re + turn의 의미 그대로, 다시 돌려주다를 뜻한다. 그렇기 때문에 프로그래밍 언어에서 리턴은 실행의 결과로서 다시 돌려주는 값을 뜻한다. 메소드에서 리턴문을 만날경우, 다음과 같은 과정을 거친다. 메소드를 호출한 곳으로 값을 리턴 이 때에 메소드가 정의시 명시한 리턴타입의 값을 리턴(무조건) 메소드 종료 반환값을 저장하는 변수가 있을 경우 저장 오버로딩(Overloading) 자바에서 메소드에 대해서 다룰 때 나오는 중요한 개념 중 하나이다. Overloading이란, 메소드를 중복으로 정의할 수 있는 개념이다. 메소드의 중복 정의, 오버로딩을 하기 위해서는 다음과 같은 조건을 만족해야 한다. 매개변수의 개수가 다르거나 매개변수의 자료형이 다르거나 매개변수의 순서가.. 2023. 9. 28.
[자바/Java] 메소드1 - 정의 Method란 메소드(Method)란 흔히 프로그래밍에서 함수라고하는 개념과 똑같다. 자바에서는 함수라고 하지 않고 메소드라고 부른다. 프로그래밍을 하다보면, 반복적으로 함수(Function)를 사용해야 하는 경우가 많다. 해당 함수가 필요할 때마다 class 내에서 선언해주고 사용하기에는 너무 비효율적이다. 그러므로 메소드를 통해 반복되는 코드, 내용, 재사용해야 할 코드들을 한 뭉치로 묶어서 따로 메소드로 만들은 다음(정의) 이를 필요할 때마다 사용(호출)한다. Method 정의 메소드의 정의는 클래스 내에서 main 메소드 바깥에서 정의하여야 한다.메소드의 정의 구문은 다음과 같이 구성되어 있다. 수식어 리턴타입 메소드명 (매개변수, ...) { 실행문 } /* modifier return_type.. 2023. 9. 28.
728x90
반응형