Java 82

오류, Exception

try catch문 try 안에서 exception이 발견되면 catch문으로 가서 exception에 대한 대응 코드를 찾는다 AristmaticException(데이터타입) a(참조변수) -> exception 개체와 데이터타입을 확인하고 일치하면 참조변수에 exception의 메모리 주소를 대입한다 이걸 사용하면 exception이 발생한 코드는 실행되지 않지만 그 다음부터 실행이 되어 프로그램 비상 종료를 막는다 자바에서 오류는 크게 컴파일 에러, 런타임 에러, 논리적 에러로 나눌 수 있다 컴파일 에러는 컴파일 시 생기는 에러인데 요새는 IDE가 많이 발전해서 에러가 생기기전에 알려준다 *이클립스가 하는 일 : 구문(문법) 확인, 번역, 간단한 산술 계산 논리적 오류는 실행은 되는데 의도와 다르게..

Java/자바 2021.02.15

버블 정렬

버블정렬? 버블정렬은 앞 뒤 값을 비교해 더 큰 숫자를 뒤로 보냄으로서 작은 것부터 큰 것 순서대로 정렬하는 알고리즘이다 int[] list = new int[] {2, 4, 5, 1, 3} 이런 배열이 있다고 생각해보자 2와 4는 다음 수 보다 작기 때문에 움직이지 않는다 5는 1과 3보다 크기 때문에 서로 자리를 옮긴다 {2, 4, 1, 5, 3} -> {2, 4, 1, 3, 5} 버블 정렬은 결국 한바퀴 돌 때 마다 회차별로 가장 큰 수를 맨 뒤로 보내는 것이기 때문에 2회차에는 5까지 비교하지 않고 3까지 비교한다 이를 반복하면 결과는 {1, 2, 3, 4, 5}가 나온다

Java/자바 2021.02.14

정적 바인딩 vs 동적 바인딩

부모 클래스의 메소드와 자식 클래스의 오버라이드 메소드가 있을 때 정적 바인딩은 컴파일러가 형식에 따라 무엇을 호출할 지 결정이 되서 바뀌지 않는다 동적 바인딩은 호출할 주소는 비워져있고 객체에서 데이터를 전달 받을 때 결정된다 자바의 객체들은 각각 자신의 메소드 주소를 관리하는 메모리가 추가적으로 4바이트 있어서 이곳에서 유동적으로 뭐가 호출될지 결정하게 된다 즉 원 메소드가 오버라이드 되는 순간 오버라이드 메소드가 전달되기로 결정된다 youtu.be/jlA2aYDktiQ

Java/자바 2021.02.11

다형성

다형성은 자바의 특징 중 하나인데 같은 클래스, 메소드지만 다양하게 동작하는 걸 말한다 같은 메소드를 파라미터를 다르게 줘 사용하는 오버로딩이 대표적이다 자식 클래스를 인스턴스화 해서 부모 클래스 타입 변수에 대입 시키면 부모 클래스에서 정의된 것만 사용할 수 있다 자식 클래스에서 추가적으로 정의한 메소드는 사용이 불가하고 재정의한 것만 사용할 수 있다 클래스 B는 A를 상속 받으므로 클래스 A 타입인 obj에 대입이 가능하다 하지만 데이터 타입이 A이기 때문에 B에서 추가적으로 정의한 메소드 y는 사용할 수 없고 x만 사용이 가능하다 위 예시에서 클래스 B의 메소드 x는 A의 메소드를 재정의(overriding)한 것이기 때문에 사용할 수 있다 Calculator라는 부모 클래스에 인스턴스를 대입 시킴..

Java/자바 2021.01.21

Interface

인터페이스는 접근제어자와 Abstract와 같이 규제를 할 때 사용한다 어떤 인터페이스를 구현하는 클래스는 그 인터페이스와 같은 형식의 메소드를 사용해야한다 인터페이스 기능은 여러사람이 동시에 같은 작업을 놓고 일을 할 때 매우 유용하게 사용이 된다 인터페이스는 같은 구조를 보고 일할 수 있게 하는 기준이라고 볼 수 있다 인터페이스 안의 메소드들은 인터페이스를 사용하기 위한 조작장치이다 하나의 클래스가 여러가지 인터페이스를 구현할 수 있다 인터페이스는 상속도 가능하다 인터페이스의 맴버는 외부에서 제어할 수 있어야하기 때문에 Public을 사용한다

Java/자바 2021.01.21

Final, Abstract

Final은 클래스를 상수화 시킨다고 보면 된다 더 이상 변경이 없다고 선언하는 것으로 상속이 불가능하다 Abstract는 시그니쳐로서 역할만하고 상속을 해서 사용을 강제한다 (사용자에게 동작 방법을 넘김) Abstract 자체 로직을 가질 수 없기때문에 상속 받은 클래스에서 Overriding을 통해 로직을 만들어줘야한다 메소드 중에 하나라도 Abstract가 있다면 클래스도 Abstract이어야한다 Abstract는 추상 메소드 말고 다른 메소드들도 가질 수 있다 공통적인 부분은 Abstract를 통해 시그니쳐로서 놔두고 가변적이고 추가적인 부분들은 사용자들이 자유롭게 상속 받아서 재정의해서 사용할 수 있도록 한다 위의 예제는 합계(sum)를 실행하고 평균(avg)을 실행하는 절차를 메소드 run을 ..

Java/자바 2021.01.21

접근 제어자

Public, Private 접근 제어자는 사용자에게 어디까지 접근을 할 수 있는지 범위를 정해주는 것이다 public은 모든 클래스에서 접근 가능, private은 같은 클래스 내에서만 접근 가능 변경되면 오류를 발생할 수 있는 값에는 private을 통해 public 메소드를 통해서만 값을 가져올 수 있게 한다 이를 통해 오류 발생을 잘 통제할 수 있고 좀 더 안정적인 시스템을 구축할 수 있다 위 예시에서는 private int left, right이 public이라면 밑에서 A.left(100) 이렇게 임의 대로 변경을 할 수 있기 때문에 private으로 접근을 제어했다 *은행을 예로 들면 고객은 main 메소드이고 public은 은행원 그리고 private은 금고라고 볼 수 있다 고객 (main..

Java/자바 2021.01.19

UI, API

UI (User Interface) 유저와 컴퓨터 사이에 존재하면서 유저가 원하는 걸 컴퓨터에게 전해주는 중개자 #웹사이트의 메뉴 버튼, 컴퓨터의 전원 버튼 등 API (Application Programming Interface) 어떤 기반이 되는 시스템이 제공하는 인터페이스, 이를 바탕으로 또 다른 어플리케이션을 만들 수 있다 웹브라우저에 javascript:alert("Hello World")라고 작성하면 알림창이 뜨는데 여기서 alert는 웹브라우저가 제공한 API이다 알림창의 버튼이나 경고 아이콘 등은 또 운영체제 API에서 제공하는 것들이다 식당으로 비유하면 손님은 개발자이고 주방은 System, API는 웨이터로 볼 수 있다 1. 손님이 메뉴 중 하나를 골라서 주문한다 (어떤 값을 입력) 2..

Java/자바 2021.01.19