본문 바로가기

java

프로그래머스 전화번호 목록 Java https://school.programmers.co.kr/learn/courses/30/lessons/42577 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 1. 문제 설명 전화번호부에 적힌 전화번호 중, 한 번호가 다른 번호의 접두어인 경우가 있는지 확인하려 합니다. 전화번호가 다음과 같을 경우, 구조대 전화번호는 영석이의 전화번호의 접두사입니다. 구조대 : 119 박준영 : 97 674 223 지영석 : 11 9552 4421 전화번호부에 적힌 전화번호를 담은 배열 phone_book 이 solution 함수의 매개변수로 주어질 때, 어떤 번호가 .. 더보기
자바 Class 클래스 - Do it! 자바프로그래밍기초 여러 클래스 중 상황에 따라 다른 클래스를 사용해야 할 때, 반환받는 클래스가 정확히 어떤 자료형인자 모를 때 등 모르는 클래스의 정보를 사용할 경우에 사용하는 것이 Class 클래스이다. Class 클래스를 선언하고 클래스 정보를 가져오는 방법은 3가지가 있다. 1. Object 클래스의 getClass() 메서드 사용하기 String s = new String(); Class c = s.getClass(); // getClass() 메서드의 반환형은 Class 2. 클래스 파일 이름을 Class 변수에 직접 대입하기 Class c = String.Class; 3. Class.forName("클래스이름") 메서드 사용하기 Class c = Class.forName("java.lang.String"); .. 더보기
자바 String 클래스, StringBuffer, StringBuilder- Do it ! 자바프로그래밍기초 자바는 문자열을 사용할 수 있도록 String 클래스를 제공한다. String을 사용하는 방법은 두 가지가 있는데, String str1 = new String("abc"); 처럼 생성자의 매개변수로 문자열을 생성하는 방식과 String str2 = "test"; 처럼 문자열 상수를 가리키는 방식이 있다. 두 가지는 큰 차이가 있다. new 예약어를 사용하여 객체를 생성하는 경우는 "abc" 문자열을 위한 메모리가 할당되고 새로운 객체가 생성된다. str2 = "test"와 같이 문자열 상수를 가리키는 경우에는 "test"라는 문자열 상수의 메모리 주소를 가리키게 된다. 따라서 String str3 = "test" 코드를 작성하면 str2와 str3는 주소 값이 같게 된다. 그림으로 나타내면 다음과 같고.. 더보기
자바 clone() 메서드 - Do it ! 자바프로그래밍기초 clone() 메서드는 객체 원본을 유지해 놓고 복사본을 사용한다거나, 기본 틀의 복사본을 사용해 동일한 인스턴스를 만들어 복잡한 생성 과정을 간단히 하려는 경우에 사용한다. protected Object clone(); clone() 메서드는 위와 같이 Object 클래스에 선언되어 있으며 객체를 복사해 또 다른 객체를 반환해준다. package object; class Point { int x; int y; Point(int x, int y) { this.x = x; this.y = y; } public String toString() { return "x = " + x + ", y = " + y; } } class Circle implements Cloneable { // 객체를 복제해도 된다는 의.. 더보기
자바 hashCode() 메서드 - Do it ! 자바프로그래밍 기초 해시(hash)는 정보를 저장하거나 검색할 때 사용하는 자료구조이다. 정보를 어디에 저장할 것인지, 어디서 가져올 것인지 해시 함수를 사용하여 구현한다. 해시 함수는 객체의 특정 정보(키 값)를 매개변수 값으로 넣으면 그 객체가 저장되어야 할 위치나 저장된 해시 테이블 주소(위치)를 반환한다. 따라서 객체 정보를 알면 해당 객체의 위치를 빠르게 검색할 수 있다. // 자바에서는 인스턴스를 힙 메모리에 생성하여 관리할 때 해시 알고리즘을 사용한다. hashCode = hash(key); // 객체의 해시 코드 값(메모리 위치 값)이 반환됨 package object; class Book { int bookNumber; String bookTitle; Book (int booknum, String title.. 더보기
자바 Object 클래스, toString, equals - Do it! 자바프로그래밍기초 Object 클래스는 모든 자바 클래스의 최상우 클래스이다. 즉 모든 클래스는 Object 클래스로부터 상속을 받는다. 생각해보면 우리가 클래스를 만들 때 extends Object 코드를 작성한 적이 없는데, extends Object가 자동으로 쓰이기 때문이다. Object 메서드는 여러가지가 있는데, 재정의할 수 있는 메서드도 있고 그렇지 않은 메서드도 있다. toString() 메서드 이름처럼 객체 정보를 문자열로 바꾸어 준다. 인스턴스 정보를 문자열로 반환해주고, toString()의 원형은 생성된 인스턴스의 클래스 이름과 주소 값을 보여준다. Object 클래스를 상속받은 모든 클래스는 toString()을 재정의할 수 있고, String이나 Integer 등 여러 JDK 클래스에는 toStr.. 더보기
자바 인터페이스 - Do it! 자바프로그래밍기초 인터페이스는 클래스나 프로그램이 제공하는 기능을 명시적으로 선언하는 역할을 하고, 추상 메서드와 상수로만 이루어져 있다. 인터페이스 역할 인터페이스는 메서드의 선언부만 있는데 왜 사용할까? 인터페이스는 클라이언트 프로그램에 어떤 메서드를 제공하는지 미리 알려주는 명세 또는 약속의 역할을 한다. 예를 들어, AA 인터페이스를 구현한 A 클래스가 있고 이 클래스를 사용하는 B프로그램이 있다고 가정하자. AA 인터페이스에는 구현할 추상 메서드가 모두 선언되어 있고, 어떤 매개변수를 사용하고 어떤 자료형 값이 반환되는지가 선언되어 있을 것이다. 그렇다면 B프로그램에서는 A 클래스의 구현 코드를 모두 살펴보지 않고 AA 인터페이스의 선언부만 봐도 A 클래스를 어떻게 사용할 지 알 수 있는 것이다. 그리고 B 프로.. 더보기
자바 템플릿 메서드, final - Do it! 자바프로그래밍기초 템플릿 메서드는 추상클래스를 활용한 예이다. public abstract class Car { public abstract void drive(); public abstract void stop(); public void startCar() { System.out.println("시동 켬"); } public void turnOff() { System.out.println("시동 끔"); } final public void run() { startCar(); drive(); stop(); turnOff(); } } public class AICar extends Car { @Override public void drive() { System.out.println("자율 주행"); System.out.pr.. 더보기