목록Language (76)
한 걸음 두 걸음
재사용을 위해 상속 혹은 결합을 하는데, 상속에 대해 알아보겠습니다. 상속 상속이란 이미 존재하는 클래스로부터 멤버들을 물려받는 것입니다. 이 때 상속하는 클래스를 수퍼클래스 혹은 부모클래스, 상속받는 클래스를 서브클래스 혹은 자식클래스라고 합니다. 수퍼클래스(부모클래스, 베이스클래스)와 서브클래스(자식클래스, 파생된클래스 ) class Employee{ } class Manager extends Employee{ } 자바에서 상속은 extends키워드를 사용하여 상속시킬 수 있으며, 클래스 정의 옆에 작성해주면 됩니다. 1. 오버라이딩 메소드 재정의란 서브 클래스가 필요에 따라 상속된 메소드를 다시 정의하여 사용하는 것을 의미합니다. 같은 메소드 명을 가지고 있지만 상속받은 클래스에서는 다른 작업을 하..
static으로 지정된 변수나 함수는 프로그램이 시작될 때 생성되고 프로그램이 종료될 때 소멸됩니다. final으로 지정되면 변경이 불가능합니다. static a = 1; a++; //전역변수처럼 사용됩니다. 어디서든 사용가능합니다. static final a = 1; a++; //불가 ** Static으로 지정된 것은** 객체를 만들기도 전에 생성되므로(프로그램 시작 시) 클래스 내부의 static 메소드나 변수는 클래스명을 이용하여 접근할 수 있습니다. Class A{ static int a = 10; } public class Main { public static void main(String[] args) { System.out.println(A.a + ""); //10 출력 } } 단, stat..
접근제한자 public 클래스내부 / 동일패키지 / 하위클래스 / 그 외에서 모두 사용할 수 있습니다. private 클래스내부에서만 접근이 가능합니다. protected 클래스내부 / 동일 패키지 / 하위클래스 에서만 접근이 가능합니다. default(생략되었을 때 사용되는 접근자)는 클래스내부와 동일패키지에서 사용할 수 있는데 많이 사용하지는 않습니다. 웬만하면 명시하는 것이 좋은 코드입니다. 주로 클래스 내부의 변수는 private로, 함수는 public으로 설정하며 내부 자원을 지키도록 사용합니다. (getter setter를 사용합니다.)
메소드 클래스 내부에 위치한 함수를 메소드라 하는데 JAVA는 객체지향개발언어이므로 모두 클래스 내부에 위치합니다. 때문에 모든 함수는 메소드가 됩니다. 메소드 구조 메소드 구조는 다음과 같습니다. public class 클래스명{ 접근제한자 반환타입 메소드명(파라미터){ ... return 반환할 값/수식 } }이를 보다 이해하기 쉽게 작성하자면 다음과 같습니다. public class MyClass{ public int myMethod(int param){ return param } }이러한 형식으로 사용하실 수 있으며, 메소드의 이름은 보통 소문자로 시작하는데 동사로 시작해서 명사나 형용사가 옵니다. 그냥 이해하기 쉽게 camelCase를 지켜서 작성하시면 좋습니다. static 함수 / 정적메소드..
Map 개념 Map은 mapping의 약자인 자료구조로, ("Key","Value") 값으로 pair를 이룹니다. Java에서 순서가 있는 자료나 집합공간을 만들기 위해 Collection를 제공하나, 순서가 없는 Map과 같은 것은 별도로 제공합니다. Map 특징 데이터를 키를 통해 관리합니다. 인덱스가 없고 데이터의 순서가 없습니다. Map의 종류 HashMap : 동기화를 보장하지 않는 Map클래스로, value에 null을 저장할 수 있습니다. 순서를 보장하지 않으나 해싱을 사용하므로 빠릅니다. (싱글스레드는 HashMap을 사용하지만 멀티스레드 및 동기화가 필요하다면 MapTable을 사용합니다.) TreeMap entry를 트리형식으로 저장하기 때문에 순서를 보장합니다. LinkedHashMa..
배열의 초기값 int i = new int[3];이와같이 배열을 만들어 사용할 땐, 따로 값을 지정해주지 않는 이상 default값이 들어가게되는데 int의 경우는 0, char의 경우는 '0' String의 경우는 null boolean의 경우는 false double의 경우는 0.0 유저가 만든 클래스의 객체 = null 이 들어갑니다. for loop int[] i = new int[4]; for( int item : i ){ System.out.println(item); //i의 0 인덱스부터 3까지 모두 차례대로 돌아가며 프린트합니다. }이는 int[] i = new int[4]; for(int item = 0; item < i.length(); i++){ System.out.pr..
Math Class Math.pow 제곱수 구하기 Math.sqrt 제곱근 구하기 Math.max(num1, num2) // 최댓값 Math.min(num1, num2) // 최솟값 Math.PI, Math.E = 수학적 상수 정의 등이 있습니다. 더 자세한 내용과 사용 예시는 https://docs.oracle.com/javase/9/docs/api/java/math/package-summary.html 공식 문서를 참고하시는 것이 좋습니다.
자바는 변수와 리터럴이 같은 타입으로 맞추어주어야합니다. 예시 ) int a = 1; char b = 'c'; double = 3.14;이 때는 형변환이 필요없지만 묵시적캐스팅 변수의 자료형과 할당되는 값의 자료형이 다를 경우 정보의 손실이 없으면 자동적으로 바뀌어 할당됩니다. long l = 5;일반적으로 5는 int형입니다. 하지만 들어가는 변수가 long이므로 정보의 손실이 일어나지 않아 그대로 long으로 바뀌어 들어갑니다. double d = 3.14F3.14는 Float형 자료이지만, double형으로 자동으로 바뀌어 d에 저장됩니다. 명시적 캐스팅 int i = (int) 3.14;자동으로 넣기에는 정보의 손실이 발생하기 때문에 int로 바꾸기 위해서는 명시적으로 형변환을 시켜..