반응형
# 알고리즘 문제연습5
## 상수 변수 선언 (final)
- 상수 3.141592 저장하는 변수 PI 선언
final double PI = 3.141592;
## 문자열 비교 (equals)
- 문자열 비교 시 '=='가 아닌 'equals'를 사용한다.
String str1 = "abc";
String str2 = "abc";
if ( str1 == str2 ) {
}
if ( str1.equals(str2) ) {
System.out.println("str1과 str2는 같은 값을 가지고 있습니다.");
}
## 문자열 붙이기 / 자르기 (concat / substring)
- concat : 문자열 붙이기
- substring : 문자열 자르기
String str1 = "안녕하세요. ";
String str2 = "벌써 여기까지 오셨네요. 끝까지 화이팅!!";
String concatResult;
String substringResult;
concatResult = str1.concat(str2);
// = > 출력 : 안녕하세요. 벌써 여기까지 오셨네요. 끝까지 화이팅!!
substringResult = str1.substring(2);
// = > 출력 : 하세요.
## 생성자
// 매개변수가 없는 경우 name은 "이름없음", number는 0으로 초기화.
// 실행을 위한 코드입니다.
public class CarExam {
public static void main(String[] args) {
Car car1 = new Car();
Car car2 = new Car("자동차");
Car car3 = new Car("자동차", 1234);
}
}
public class Car {
String name;
int number;
Car(String name, int number) {
this.name = name;
this.number = number;
}
Car(String name) {
this.name = name;
this.number = 0;
}
Car() {
this("이름없음", 0);
}
}
## 상속 (extends)
// Machine 클래스를 상속받는 Car 클래스
class Machine {
public void turnOn() {
System.out.println("켰습니다.");
}
public void turnOff() {
System.out.println("껐습니다.");
}
}
class Car extends Machine {
}
//아래는 실행을 위한 코드입니다. 수정하지 마세요.
public class CarExam {
public static void main(String[] args) {
Car car = new Car();
if(Machine.class.isInstance(car)){
System.out.println("정답입니다. [제출]을 누르세요.");
}
else{
System.out.println("Car가 Machine을 상속받지 않았습니다.");
}
}
}
public abstract class Machine {
public abstract void turnOn();
public abstract void turnOff();
}
class Car extends Machine {
// Machine 클래스를 상속받고, 추상 메소드를 구현하세요.
public void turnOn() {
}
public void turnOff() {
}
}
## 접근제한자 (private)
- 클래스 내 필드가 private로 선언된 경우 해당 클래스에서만 사용 가능하다.
- 접근제한자를 public으로 할 경우 외부에서도 사용 가능.
- 접근제한자 : 필드 및 매소드에도 사용 가능하다.
필드에 접근제한자 예시
public class CarExam {
public static void main(String[] args) {
Car car = new Car("포니", 1234);
System.out.println("name: " + car.name);
System.out.println("number: " + car.number);
}
}
// 기존 private
public class Car {
private String name;
private int number;
public Car(String name, int number) {
this.name = name;
this.number = number;
}
}
// 변경 public
public class Car {
public String name;
public int number;
public Car(String name, int number) {
this.name = name;
this.number = number;
}
}
매소드에 접근제한자 예시
public class CarExam{
public static void main(String[]args){
Car car = new Car();
car.run();
car.stop();
}
}
// 기존 매소드 private
public class Car{
public void run(){
System.out.println("차가 달립니다.");
}
private void stop(){
System.out.println("차가 멈춥니다.");
}
}
// 변경 public
public class Car{
public void run(){
System.out.println("차가 달립니다.");
}
public void stop(){
System.out.println("차가 멈춥니다.");
}
}
## 추상클래스 (abstract)
추상 클래스를 상속받은 클래스는 추상 클래스가 가진 추상 메소드를 반드시 구현해야 합니다. 그렇지 않으면 해당 클래스도 추상 클래스가 됩니다.
//아래는 실행을 위한 코드입니다. 수정하지 마세요.
public class CarExam {
public static void main(String[] args) {
Car car = new Car();
if(Machine.class.isInstance(car)){
System.out.println("정답입니다. [제출]을 누르세요.");
}
else{
System.out.println("Car가 Machine을 상속받지 않았습니다.");
}
}
}
public abstract class Machine {
public abstract void turnOn();
public abstract void turnOff();
}
class Car extends Machine {
// Machine 클래스를 상속받고, 추상 메소드를 구현하세요.
public void turnOn() {
}
public void turnOff() {
}
}
## 부모 클래스의 생성자 호출 (super)
- super()를 이용하면 부모 클래스의 생성자를 호출할 수 있다.
// Bus 클래스는 Car 클래스의 자식 클래스
// Bus 클래스의 생성자는 name(이름), number(차량번호), fee(요금)을 입력받는데,
// 부모 클래스의 생성자를 이용해 name과 number를 초기화 후
// fee를 직접 초기화하는 Bus의 생성자 만들기.
//아래는 실행을 위한 코드입니다. 수정하지 마세요.
public class BusExam {
public static void main(String[] args) {
Bus bus = new Bus(new String("뛰뛰"), 3000, 1050);
if(!bus.name.equals("뛰뛰")){
System.out.println("bus의 name이 다릅니다.");
}
else if(bus.number != 3000){
System.out.println("bus의 number가 다릅니다.");
}
else if(bus.fee != 1050){
System.out.println("bus의 fee가 다릅니다.");
}
else{
System.out.println("정답입니다. [제출]을 누르세요.");
}
}
}
public class Car {
String name;
int number;
public Car(String name, int number) {
this.name = name;
this.number = number;
}
}
public class Bus extends Car {
int fee;
public Bus(String name, int number, int fee) {
// super를 이용해서 Car클래스의 생성자를 이용하세요.
super(name,number);
this.fee = fee;
}
}
## 오버라이딩
- 오버라이딩은 부모 클래스의 메소드를 수정하고 싶을 때 유용하게 쓰인다.
//다음은 실행을 위한 코드입니다. 수정하지 마세요.
class BusExam {
public static void main(String [] args) {
Bus bus = new Bus();
bus.run();
}
}
public class Car {
public void run() {
System.out.println("차가 달립니다.");
}
public void stop() {
System.out.println("차가 멈춥니다.");
}
public void horn() {
System.out.println("경적을 울립니다.");
}
}
public class Bus extends Car {
// run 메소드를 오버라이드 하세요. 메소드의 접근 제한자는 public이어야 합니다.
public void run() {
System.out.println("차가 달리면서 다음 정거장을 안내합니다.");
}
}
## 예외처리 (try ~ catch)
- 프로그램 실행 중 예기치 못한 사건을 예외라고 하며, 예외 상황을 미리 예측하고 처리하는 것을 예외처리라고 한다.
public class ExceptionExam{
public static void main(String []args){
int [] array = new int[10];
try {
array[20] = 5;
} catch(Exception e) {
}
}
}
## 약수의 합
- 자연수 n을 입력받아 n의 약수를 모두 더한 값을 리턴하는 함수
class Solution {
public int solution(int n) {
int answer = 0;
for ( int i = 1; i <= n; i++ ) {
if ( n % i == 0 ) {
answer += i;
}
}
return answer;
}
}
반응형
'기타' 카테고리의 다른 글
구글 / 네이버 사이트 등록방법 (0) | 2020.10.06 |
---|---|
(면접 예상) 99단, 최대공약수, MVC패턴, request/response (0) | 2020.10.03 |
알고리즘 문제연습4 (0) | 2020.10.02 |
알고리즘 문제연습3 (0) | 2020.10.01 |
알고리즘 문제연습2 (0) | 2020.09.30 |