자바 훑어보기: Run-through of Java Programming Language
삼성 SDS 대학생 알고리즘 특강이 시작됐다. 1주일간은 자바, 1주일 간은 C++로 배운다고 한다. 자바를 거의 안 다뤄서 Codecademy에서 자바 부분을 쭉 훑었다. 주요 내용을 정리해보고자 한다.
I. Introduction
-
Class - a single concept 클래스는 객체 지향 언어에서 많이 등장하는 개념이다. 자바는 프로그램 파일명과 동일한 최소 하나의 클래스를 지녀야 한다(예: Person.java - Person 클라스). 클래스는 주로 대문자로 시작한다.
- main() Method
모든 자바 프로그램은 아래와 같이 main() method를 포함해야 한다.
public class Person { public static void main(String[] args) { System.out.println("Hello, world!"); } }
-
- Print Line
System.out.println()을 이용한다.
Eclipse IDE에서는syso
를 타입한 뒤 CTRL+Space를 누르면 자동 완성된다. - Comments
- Single line:
//
- Multi-line:
/*
*/
* ; - 코드는;
로 끝나야 한다;
- Print Line
System.out.println()을 이용한다.
- Compilation(javac 명령어) 프로그램을 컴파일하면 각각의 클래스들이 .class 파일로 변환된다. 변환된 java byte code는 JVM에 의해 실행된다.
II. Variables
-
Primitive Data Types
int
,char
,boolean
, byte, long, short,double
, float, null - String - use
" "
- String끼리 같은지 비교는
.equals()
사용 - Concatenation: + 사용 => new를 사용하기 때문에 매우 느리다. 따라서 List
를 사용해서 넣다 빼거나 StringBuilder를 사용하여 효율성을 높인다.
- String끼리 같은지 비교는
- Statice Typing - 변수 선언 type과 value가 다를 경우 bug 발생
III. 기타 빠르게 정리
- Array(정적인 배열) / ArrayList(동적 할당 - add()와 remove() 사용)
- Loop
- for와 for-each
for는 C와 유사하고 for-each는 아래와 같이 수행
- for와 for-each
// array of numbers
int[] numbers = {1, 2, 3, 4, 5};
// for-each loop that prints each number in numbers
// int num is the handle while numbers is the source array
for (int num : numbers) {
System.out.println(num);
}
- String Methods
- length() - 길이
- concat() - 두 String 연결
- equals() - 앞에서 설명. true/false 반환
- indexOf() - 특정 substring의 시작 index를 반환한다. 없을 경우 -1 반환.
- charAt(int index) - String의 index번째(0부터 시작) character를 반환한다. index는 0부터 length-1까지.
- toUpperCase() / toLowerCase() - String의 character를 모두 대문자 / 소문자로 바꾼 값을 반환한다.
- 클래스 상속(Inheritance) - parent class / child class
- child class는 extends로 정의 / super로 child의 속성 override
- 다형성(Polymorphism) - 하나의 메소드나 클래스가 있을 때 이것들이 다양한 방법으로 동작하는 것(아래 예시 코드 참조)
// Parent class class Animal { public void greeting() { System.out.println("The animal greets you."); } } // Child class class Cat extends Animal { public void greeting() { System.out.println("The cat meows."); } } class MainClass { public static void main(String[] args) { Animal animal1 = new Animal(); // Animal object Animal cat1 = new Cat(); // Cat object animal1.greeting(); // prints "The animal greets you." cat1.greeting(); // prints "The cat meows." } }
- Eclipse IDE 기능
클래스 내부에서 Alt+Shift+S를 눌러서 생성자 또는 출력 toString() 코드를 바로 생성할 수 있다.
- 비교 및 sort 방법
List<CustomClass> list = new ArrayList(); // 정의대로 정렬 Collections.sort(list);= Collections.sort(list, new Comparator<CustomClass>{ @Override public int compare(CustomClass o1, CustomClass o2){ // 임의의 기준 설정 return 0; } }); CustomClass implements Comparable<CustomClass> { int a; int b; @Override public int compareTo(CustomClass arg0){ // -1: 원하는 순서, 0: 둘이 같다, 1:원하지 않는 순서 -> swap // a에 대해 오름차순으로 정렬 if(a < arg0.a){ return -1; } else if(a == arg0.a) { // 둘이 같은 경우 b에 대해 내림차순 정렬 if(b > arg0.b){ return -1; } else if(b == arg0.b){ return 0; } else{ return 1; } } else { return 1; } } }