권오흠 교수님 2016 Java로 배우는 자료구조
▶ 강의자료
- C에서의 소스코드 = Java에서 class
- class의 이름은 대문자로 시작
- class의 이름과 파일명이 일치해야함 -> refactor > rename 이용
출력
public class Hello {
public static void main(String[] args) {
System.out.println("Hello Java !!!");
}
}
- main(Strong[] args) : main method (C: main 함수)
- C는 함수들의 집합, Java는 클래스의 집합
- 클래스 : 함수들의 집합
- ctrl + i : 들여쓰기
- 각각의 클래스가 메인함수를 가지고 있어도 문제X
public class Code01 {
static int num;
public static void main(String[] args) {
int anotherNum = 5;
num = 2;
System.out.println(num + anotherNum);
System.out.println("Num: " + num);
System.out.println("AnotherNum: " + anotherNum);
}
}
- 클래스 외부에는 아무것도 선언할 수 없음
- 메서드 외부 선언: static 변수, 클래스 전체에서 사용 가능
- 메서드 내부 선언: 메서드 내부에서만 사용 가능
- 정수 + 정수 -> 덧셈연산
- 문자열 + 정수 -> 정수를 문자열로 변환하여 출력
System.out.println("Sum: " + num + anotherNum); //left associativity
- 결과 : Sum: 25
- 왼쪽부터 연산되기 때문에 문자열로 처리됨
변수의 타입
이름 | 설명 |
byte | 정수 |
short | 정수 |
int | 정수 |
long | 정수 |
float | 소수 |
double | 소수 |
char | 문자 하나 |
boolean | 참/거짓 |
- 프리미티브 타입
String | 문자열 |
- 프리미티브 타입에 가까움
입력
import java.util.Scanner;
public class Code02 {
public static void main(String[] args) {
int number = 123;
Scanner keyboard = new Scanner(System.in); //keyboard(var)라는 이름의 스캐너 만듦
System.out.print("Please enter an integer:");
int input = keyboard.nextInt(); //표준입력으로 정수 입력받음
if (input==number) {
System.out.println("Numbers match! :-)");
} else {
SYstem.out.println("Numbers do not match! :-(");
}
keyboard.close();
}
}
- #inlcude -> import
- Source > Organize imports 이용
문자열 비교
package lesson01;
import java.util.Scanner;
class Code03 {
public static void main(String [] args) {
String str = "Hello";
String input = null;
Scanner kb = new Scanner(System.in);
System.out.print("Please type a string: ");
input = kb.next(); //scanf("%s")
if(str.equals(input)) {
System.out.println("Strings match! :-)");
} else {
System.out.println("Strings do not match! :-(");
}
kb.close();
}
}
- null : 빈 문자열로 초기화 (자바가 자동으로 해줌)
- next() : 공백으로 단어 구분
- equal 연산자는 프리미티브타입에서만 적용
- 문자열1.equals( 문자열2 ) 함수 사용
import java.util.Scanner;
class Code04 {
public static void main(String [] args) {
String name = null;
int age;
String gender;
Scanner keyboard = new Scanner(System.in);
System.out.print("Please type your name and your age and your gender: ");
name = keyboard.next();
age = keyboard.nextInt();
gender = keyboard.next();
if (gender.equals("male"))
System.out.println(name + ", you're" + age + " years old man.");
else if (gender.equals("female"))
System.out.println(name + ", you're" + age + " years old woman.");
else
System.out.println("Hmm... interesting.");
}
}
배열
public class Code05 {
public static void main(String[] args) {
//in C, int grades[5];
// declare the array
int [] grades;
grades = new int[5];
double [] array = new double [100];
char [] word;
word = new char [20];
// assign some values to the array
grades[0] = 100;
grades[1] = 76;
grades[2] = 92;
grades[3] = 95;
grades[4] = 14;
// print out each value
System.out.println(grades[0]);
System.out.println(grades[1]);
System.out.println(grades[2]);
System.out.println(grades[3]);
System.out.println(grades[4]);
}
}
- 배열을 선언 -> 배열 생성
- 그외에는 C와 동일
public class Code06 {
public static void main(String[] args) {
int [] grades;
grades = new int[5];
grades[0] = 100;
grades[1] = 76;
grades[2] = 92;
grades[3] = 95;
grades[4] = 14;
for(int i = 0; i < grades.length; i++) {
System.out.println("Grade "+(i+1)+": "+grades[i]);
}
}
}
- grades.length : 배열의 길이
- for문 : C언어와 완전히 동일
public class Code07 {
public static void main(String[] args) {
int n = 100;
int[] grades = new int[n];
grades[0] = 100;
grades[1] = 76;
grades[2] = 92;
grades[3] = 95;
grades[4] = 14;
int i = 0;
while(i<grades.length) {
System.out.println("Grade "+(i+1)+": "+grades[i]);
i++;
}
}
}
- C에서는 variable length array 지원X
- 자바는 변수를 배열의 크기로 사용 가능 (최신 C언어도)
배열