1-1 Java 시작하기
Java 프로그램은 항상 main 이라는 함수부터 실행한다, class명은 상관없음
public class Main {
public static void main(String[] args) {
// write your code here
System.out.println("Hello Wolrd");
}
}
> println 출력후 줄바꿈하라는 의미이다
System.out.println("") 자주사용될 함수이다
IDE(통합 개발 환경(Integrated Development Environment, 여기서는 intelij) 에서 자주 사용하는 코드를 쉽게 입력할 수있는 기능이 있다 intelij에서 sout라고 입력하면 추천목록이 뜨는데 목록의 맨위를 선택하면 System.out.println("") 가 입력되는것을 볼수있다1-2 변수와 상수
변수와 상수가 무엇일까?변수 : 어떠한 데이터를 저장하기 위한 메모리 공간의 이름이다.int num = 5; //정수형 변수 선언 int
System.out.println(num);
String sparta = "Hello Sparta!"; // 문자형 변수 선언 String
System.out.println(sparta);
sparta = "Goodbye Sparta"; // 이미 선언된 변수에 다른 값을 할당
System.out.println(sparta);
출력되는 것은 num, sparta가 아닌 해당 변수에 할당된 값이 출력된다
5
Hello Sparta!
Goodbye Sparta
상수 : 중간에 값이 변할 수 없으며 초기값을 끝까지 사용해야 한다final int num2 = 10; // 상수형 변수 선언 (final로 선언 가능)
System.out.println(num2);
num2 = 50;
상수는 처음 할당된 값을 끝까지 사용하기 때문에
위의 코드를 실행하면, 컴파일 에러 가 발생한다 - 프로그래밍 언어의 문법적으로 불가능한 코드를 작성할 경우 발생하는 에러이다
(이 화면에서는 보이지 않지만 맨아래 num2에 빨간줄이 그어져 있다)
변수와 상수의 선언
변수를 선언할 때는 [접근제어자][변수의 자료형] [변수의 이름] 의 방식을 이용한다
ex) final[접근제어자] int[변수의 자료형] num[변수의 이름] -> final int num
변수의 이름을 붙이는 규칙
Java에서는 CamelCase 라는 규칙으로 이름을 선언하는 것을 표준으로함,
첫 글자는 소문자, 그 이후에 단어의 단위마다 첫 글자만 대문자
ex) lowerCamelCase
1-3 자료형 - 기본 자료형, Primitive Type
기본 자료형 4가지
- 숫자
short s = 1; // 2byte로 표현할수 있는 자료
System.out.println(a);
int a = 3; // 정수형 변수 선언, 4byte로 표현할수 있는 자료
System.out.println(a);
long b = 1234567890L; // Long 정수형 변수 선언, 8byte로 표현할수 있는 자료
System.out.println(b);
float c = 5.5F; // float 실수형 변수 선언, 소수점을 표현할수 있는 자료 F(type)붙여야함
System.out.println(c);
double d = 9.12345678901234567890d; // double 실수형 변수 선언, 소수점을 표현할수 있는 자료
System.out.println(d);
// 다음처럼 각 자료형의 MAX, MIN 값을 가져올 수 있다
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
System.out.println(Float.MAX_VALUE);
System.out.println(Float.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
결과
1
3
1234567890
5.5
9.123456789012346
32767
-32768
2147483647
-2147483648
9223372036854775807
-9223372036854775808
3.4028235E38
1.4E-45
1.7976931348623157E308
4.9E-324
- 문자
char(character) 문자 하나만 표현하기 때문에 여러개의 문자 담을수 없다.
ex) A(가능) ABC(불가능)
char alphabet = 'A'; // 문자형 변수 선언
System.out.println(alphabet);
// char type은 default 값이 없습니다.
결과
A
- 논리
참 거짓의 값을 변수로 선언
boolean fact = true; // 논리형 변수는 true, false의 값을 가진다.
System.out.println(fact);
// boolean type은 default 값이 없습니다.
결과
true
- 바이트
byte data = 'd';
System.out.println(data);
결과
100
알파벳 d는 ASCII code(아스키코드) 에서 십진법으로 100이기 때문에 100이라는 글자가 출력됩니다
1-4 자료형 - 참조 자료형, 배열, 코딩 실력 향상 꿀팁
기본 자료형이 아닌 모든 자료형을 참조 자료형이라 한다
정확히는 Java의 인스턴스(객체)를 가리킬수 있는 자료형이다
String sparta = "sparta !!";
System.out.println(sparta);
int[] intArray = new int[] {1,2,3,4,5}; // int 배열을 만들면서(선언과) 동시에 1,2,3,4,5로 초기화
System.out.println(Arrays.toString(intArray));
Class로 정의된 타입을 쓰는것이 참조자료형이다? String이 class
[ ]는 배열이다
int[ ] -> int배열(int기본자료형 아니기 때문에 참조 자료형이다), int를 여러개 담을수 있다
sout에 intArray적고 alt + enter 누르면 Arrays.toString() 추가된다 System.out.println(Arrays.toString(intArray));
Java에서는 Primitive Type을 빼고는 모두 Reference Type입니다. 이것은 Java의 언어적인 특징에서 기인함
Hello sparta
[1, 2, 3, 4, 5]
결과
배열이란?
동일한 자료형의 데이터를 연속된 공간에 저장하기 위한 자료구조이다
ex) 위의 결과, 정수형 변수를 저장하기위한 배열을 선언
왜필요한가?
10개의 데이터를 입력할 경우, 10개의 변수를 선언해야 하지만, 베열을 사용하면 짧고 간결하게 나타낼 수 있다
선언방법
자료형[] 변수 = new 자료형[배열의크기]
인덱스
배열은 데이터를 순차적으로 저장하는데, 인덱스를 통해 데이터에 접근할 수 있다
인덱스 0 부터 시작함
int[] intEmptyArray = new int[5];
System.out.println(Arrays.toString(intEmptyArray));
[0, 0, 0, 0, 0]
결과, 배열크기만 정했기 때문 int의 default값인 0으로 채워짐
String[] stringEmptyArray = new String[5];
System.out.println(Arrays.toString(stringEmptyArray));
[null, null, null, null, null]
결과, String은 int처럼 Primitive Type 아니기 때문에 default값이 없어, java에서 아무것도 없다는 뜻인 null
int[] intEmptyArray = new int[5]; // int의 5자리 배열 선언
intEmptyArray[0] = 5; //인덱스를 통해 배열에 값 입력
System.out.println(Arrays.toString(intEmptyArray));
String[] season = {"spring", "summer", "autumn", "winter"};// 이렇게 선언과 동시에 값을 입력할 수도 있습니다.
System.out.println(season[season.length-1]);//인덱스를 통해 배열에 접근하여 배열마지막 값 출력
int[][] arr = new int[4][3];
System.out.println(Arrays.deepToString(arr));//배열을 활용하여 2차원의 배열도 만들 수 있습니다
[5, 0, 0, 0, 0]
winter
[[0, 0, 0], [0, 0, 0], [0, 0, 0], [0, 0, 0]]
결과
1-5 연산자
int num1 = 10;
int num2 = 5;
System.out.println(num1 + num2); // 더하기 연산
System.out.println(num1 - num2); // 빼기 연산
System.out.println(num1 * num2); // 곱하기 연산
System.out.println(num1 / num2); // 나누기 연산
System.out.println(num1 % num2); // 나머지 연산
15
5
50
2
0
int num1 = 10;
int num2 = 5;
num1 += num2; // num1 = num1 + num2
System.out.println(num1);// 15
num1 -= num2; // num1 = num1 - num2
System.out.println(num1);// 10
num1 *= num2; // num1 = num1 * num2
System.out.println(num1);// 50
num1 /= num2; // num1 = num1 / num2
System.out.println(num1);// 10
num1 %= num2; // num1 = num1 % num2
System.out.println(num1);// 0
15
10
50
10
0
int num1 = 10;
int num2 = 20;
int num3 = 10;
System.out.println(num1 > num2); // 10 > 20
System.out.println(num1 >= num3); // 10 >= 10
System.out.println(num1 < num2); // 10 < 20
System.out.println(num1 <= num2); // 10 <= 20
System.out.println(num1 == num3); // 10 == 10 같다
System.out.println(num1 != num2); // 10 != 20 같지않다
false
true
true
true
true
true
boolean a = true;
boolean b = false;
System.out.println(a && b);
// &&는 두가지 모두 참일 경우에는 true를, 그렇지 않을 경우에는 false를 반환합니다.
System.out.println(a || b);
// ||는 두가지 모두 거짓일 경우에는 false를, 그렇지 않을 경우에는 true를 반환합니다.
System.out.println(!b);
// !는 피연산자의 논리값을 바꿉니다. true는 false로 , false는 true로 반환합니다.
false
true
true
1-6 조건문
int check = 100;
int num1 = 150;
if (num1 > check) {
System.out.println("100보다 큰 수입니다");
}
100보다 큰 수입니다
결과 : num1이 check보다 작았다면 아무것도 출력되지 않는다
int check = 100;
int num1 =50;
if(num1 > check){
System.out.println("100보다 큰 수입니다");
} else if(num1 > 50){
System.out.println("50보다 큰 수 입니다");
} else{
System.out.println("50과 같거나 작은 수 입니다");
}
50과 같거나 작은 수 입니다
결과 : if / else if 위 순서대로 조건에 맞는지 확인하고 맞다면 그곳에서 출력한다
else 어느 조건에도 만족하지 않는다면 출력한다
char score = 'A';
switch (score) {
case 'A':
System.out.println("A등급입니다.");
break;
case 'B':
System.out.println("B등급입니다.");
break;
case 'C':
System.out.println("C등급입니다.");
break;
default:
System.out.println("C등급보다 낮은 등급입니다.");
break;
}
A등급입니다.
결과 :
break는 해당하는 case의 코드를 실행 후, switch문 밖으로 나가게 해주는 역할을 합니다
break; 를 작성하지 않으면 다음 case문도 실행되니 주의해야한다
default 어느 case도 해당하지 않으면
int a = 5;
String reuslt = (a < 10) ? "10보다 작습니다." : "10보다 큽니다.";
System.out.println(reuslt);
10보다 작습니다
결과 : (조건식) ? A : B
'?' 를 기준으로 조건식이 true일 경우에는 A 코드를, false일 경우에는 B 코드를 수행한다
1-7 조건문 퀴즈
Main함수
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int score = sc.nextInt();
}
스니펫을 붙여넣으면 Scanner 에 대해서 빨간줄(컴파일에러)가 뜰 것입니다. Scanner 가 어떤 클래스인지 찾을 정보가 코드에 없어서 인데요. IDE에서 alt+Enter를 누르셔서 추천에 나오는 첫 번째 java.util.Scanner 를 선택해서 엔터를 눌러주시면 자동으로 import 코드가 추가됩니다 , 직접 입력해도됨
import java.util.Scanner;
if (score <= 100 && score > 90){
System.out.println("A등급입니다.");
}
else if(score <=90 && score > 80){
System.out.println("B등급입니다.");
}
else if(score <=80 && score > 70){
System.out.println("C등급입니다.");
}
else{
System.out.println("F등급입니다.");
}
정답
1-8 반복문
* 반복의 과정을 간단하게 하기위해 사용
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += (i + 1);
}
System.out.println(sum);
55
결과 :
변수 i는 1부터 10까지 변할 때까지 1씩 더해집니다. i가 증감식에 의해 11이 되면 조건문에 위배되기 때문에 더이상의 반복문 실행은 진행 되지 않으며 출력됩니다.
String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
for ( day : days){
System.out.println(day);
}
Monday
Tuesday
Wednesday
Thursday
Friday
Saturday
Sunday
결과 : 배열의 값들을 하나하나 변수에 담아서 출력한다
int i = 0;
int sum = 0;
while (i < 10) {
sum += i + 1;
i += 1;
}
System.out.println(sum);
55
결과 : i가 10보다 작을때, sum은 i+1, i는 1씩더해줌 -> sum의 결과 1부터 10까지 더한값이 된다
만약, i +=1 코드가 없다면, i는 11을 넘길수 없기 때문에 실행시 무한루프에 빠지게 된다
break
int i = 0;
int sum = 0;
while (i < 10) {
sum += i + 1;
i += 1;
if(i==5){
break;
}
}
System.out.println(sum);
15
결과 : i가 5와 같아질때 break; 되기 때문에 1부터 5까지 더한값인 15가 결과가 된다
continue
int i = 0;
int sum = 0;
while (i < 10) {
if(i==4){
i++;
continue;
}
sum += i + 1;
i += 1;
}
System.out.println(sum);
50
결과 : i가 10보다 작을때 반복하라, 만약 i가 4와 같다면 i에 1을 더하고 계속한다,
sum은 i+1, i는 1씩더해줌
(i가 4일때 위의 if를 만족하기 때문에 5가 빠진 1부터 10까지 더한값인 50이 결과가 된다)
int i = 0;
int sum = 0;
do{
sum += i + 1;
i += 1;
} while (i < 10);
System.out.println(sum);
55
결과 : do-while문은 while문과 다르게 코드블럭을 무조건 한번 실행후 , while 조건에 맞다면 돌아가서 다시 실행하게 된다
int i = 1;
int result = 0;
do {
result += i;
i += 1;
} while (i < 2);
System.out.println(result);
1
결과 : do안의 코드블럭을 실행하면 i값은 2가 되지만, do-while문은 do안의 코드블럭을 무조건 한번 실행후 while 조건에 부합하는지 확인하기 때문에, 첫번째 실행한 결과로 result값이 1이 나온다
1-9 반복문 퀴즈
/ 1
1부터 30까지 홀수의 합과 짝수의 합을 구하고 각각 출력하는 프로그램을 만들어보세요.
int evenSum = 0;
int oddSum = 0;
for (int i = 0; i < 30; i++) {
int value = i + 1;
if (value % 2 == 0) {
//even
evenSum += value;
} else {
//odd
oddSum += value;
}
}
System.out.println("odd : " + oddSum);
System.out.println("even : " + evenSum);
odd : 225
even : 240