728x90
반응형

<오늘의 학습>

1. 조건문 if

2. 조건문 switch-case

3. 반복문 for

4. 반복문 while

5. continue

6. break

 

 

3. 반복문 for

1) for문

▶ 반복되는 일을 처리하기 위해 반복문을 사용한다.

		for(초기값;조건문;증감식){
		       ①  ②⑤   ④
			조건문이 참일 때 실행
			조건문이 거짓일 때까지 반복 처리
			③⑥
		}

 

 


 예제) 반복문을 이용하여 1부터 10까지/10부터 1까지 출력

		/*1부터 10까지 출력*/
		int i;
		for(i=1;i<11;i++){
			System.out.print(i+" ");
		}
		System.out.println();
		
		/*10부터 1까지 출력*/
		for(i=10;i>0;i--){
			System.out.print(i+" ");
		}
1 2 3 4 5 6 7 8 9 10 
10 9 8 7 6 5 4 3 2 1

 

 


 예제) 반복문을 이용하여 아스키코드 'A'의 값을 이용하여 A~Z까지 출력

		char c;
		for(c='A';c<='Z';c++)
			System.out.printf("%c",c);
		System.out.println();
		
		//아스키코드표: 'A'는 65
		for(c=65;c<=90;c++)
			System.out.printf("%c",c);
		System.out.println();
		
		/*a~z까지 출력*/
		for(c=97;c<=122;c++)
			System.out.printf("%c",c);
		System.out.println();
ABCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz

 

 


 예제) 반복문과 조건문을 이용하여 1부터 50까지의 숫자 중 6의 배수만 출력

		System.out.print("1부터 50까지의 숫자 중 6의 배수인 수 : ");
		for(int i=1;i<=50;i++){
			if(i%6==0){
				System.out.print(i+" ");
			}
		}
1부터 50까지의 숫자 중 6의 배수인 수 : 6 12 18 24 30 36 42 48

 

 


 예제) 반복문과 조건문을 이용하여 1부터 20까지의 짝수의 합을 출력

		int sum=0;
		for(int i=1 ; i<=20 ; i++){
			if(i%2==0){
				sum+=i;//sum=sum+i;
			}
		}
		System.out.print("1부터 20까지의 짝수의 합:"+sum);
1부터 20까지의 짝수의 합:110

 

※ 반복문 안에서 sum 값이 변화하는 모습을 확인해 보자

		/*1~20까지의 짝수의 합*/
		/*반복문에서 어떤 값이 sum 값에 더해지는지 확인*/
        
		int sum=0;
		for(int i=1 ; i<=20 ; i++){
			if(i%2==0){
				System.out.printf("%2d+%2d=",sum,i);//한자리부터 두자리수 숫자가 나오기때문에 깔끔하게 출력하기 위해 2칸 확보
				sum+=i;//sum=sum+i;
				System.out.printf("%3d\n",sum);
			}
		}
		System.out.print("1부터 20까지의 짝수의 합:"+sum);

 

 0+ 2=  2
 2+ 4=  6
 6+ 6= 12
12+ 8= 20
20+10= 30
30+12= 42
42+14= 56
56+16= 72
72+18= 90
90+20=110
1부터 20까지의 짝수의 합:110

 

 


2) 이중 for문

▶ 반복문 안에 또 다른 반복문을 중첩해서 사용할 수 있다.

 

 예제) 2단부터 9단까지의 구구단 출력

		int i,j;
		System.out.println("<구구단(2~9단)>");
		for(i=1;i<10;i++){
			for(j=2;j<10;j++){
				System.out.printf("%d*%d=%2d\t",j,i,j*i);
			}//inner_for
			System.out.println();
		}//out_for
<구구단(2~9단)>
2*1= 2	3*1= 3	4*1= 4	5*1= 5	6*1= 6	7*1= 7	8*1= 8	9*1= 9	
2*2= 4	3*2= 6	4*2= 8	5*2=10	6*2=12	7*2=14	8*2=16	9*2=18	
2*3= 6	3*3= 9	4*3=12	5*3=15	6*3=18	7*3=21	8*3=24	9*3=27	
2*4= 8	3*4=12	4*4=16	5*4=20	6*4=24	7*4=28	8*4=32	9*4=36	
2*5=10	3*5=15	4*5=20	5*5=25	6*5=30	7*5=35	8*5=40	9*5=45	
2*6=12	3*6=18	4*6=24	5*6=30	6*6=36	7*6=42	8*6=48	9*6=54	
2*7=14	3*7=21	4*7=28	5*7=35	6*7=42	7*7=49	8*7=56	9*7=63	
2*8=16	3*8=24	4*8=32	5*8=40	6*8=48	7*8=56	8*8=64	9*8=72	
2*9=18	3*9=27	4*9=36	5*9=45	6*9=54	7*9=63	8*9=72	9*9=81

 

 

 

4. 반복문 while

1) while문

▶ while문은 조건식이 참인 동안 수행문을 반복해서 수행한다.

		초기값
		while(조건식){
			조건식이 참이면 수행
			증감식
		}

 

▶ while문의 무한 반복

		while(true){
			//무한 반복
		}

 

 


 예제) while문을 이용하여 1부터 10까지 출력

		int i=1;
		
		System.out.println("<while(1~10)>");
		while(i<=10){
			System.out.print(i+" ");
			i++;
		}//while_end
		System.out.println("\n");
<while(1~10)>
1 2 3 4 5 6 7 8 9 10

 

 


2) do-while문

▶ while문은 조건을 먼저 검사해서 조건식에 맞지 않으면 한 번도 수행이 일어나지 않는다. 하지만 do-while문은 {} 안의 문장을 무조건 한 번 수행한 뒤에 조건식을 확인한다는 점에서 차이가 있다.

		초기값
		do{
			먼저 1번은 수행한 뒤, 조건식이 참이면 수행
			증감식
		}while(조건식);

 

 


 예제) do~while문을 이용하여 10부터 20까지 출력

		i=10;
		System.out.println("<do~while(10~20)>");
		do{
			System.out.print(i+" ");
			i++;
		}while(i<=20);//do_while_end
<do~while(10~20)>
10 11 12 13 14 15 16 17 18 19 20

 

 


 예제) while문과 do-while문을 비교

		/*while*/
		int a=10000;
		while(a<=10){
			System.out.println("Hello");
		}
		System.out.println();//줄바꿈
		
		/*do~while*/
		int b=10000;
		do{//한 번은 출력
			System.out.println("World");
		}while(b<=10);
	//while문의 Hello 는 출력되지 않음
World

※do-while문은 수행을 한 번 한 뒤에 조건식을 확인하기 때문에 World만 출력된다.

 

 

 

5. continue

  • continue문은 반복문과 함께 쓰인다.
  • continue문을 만나면 이후의 문장은 수행하지 않고 for문의 처음으로 돌아가 증감식을 수행한다.
  • 반복문을 수행할 때, 특정 조건에서는 수행하지 않고 건너뛰어야 할 때 사용한다.
		int num, sum=0;
		
		for(num=1;num<=100;num++){
			if(num%2==0)	//짝수일 때
				continue;	//num 값을 sum에 저장하지 않고 num++을 수행
			sum += num;
		}
		System.out.println("1부터 100사이의 홀수의 합:"+sum);
1부터 100사이의 홀수의 합:2500

 

 

 

6. break

  • switch-case문에서 break문을 사용할 때, 조건을 만족하면 다른 조건을 더 이상 비교하지 않고 switch문을 빠져나온다.
  • 반복문에서 break문을 만나면 더 이상 반복하지 않고 해당 반복문을 빠져나온다.
		/*for문의 break*/
		
		for(int i=1;i<=50;i++){
			System.out.print(i+" ");
			if(i==10)
				break;//i값이 10이면 반복문 for 탈출
		}//for_end
		System.out.println();
		/*while문의 break*/

		int a=1;
		while(a<10000){
			System.out.print(a+" ");
			if(a==10)
				break;
			a++;
		}
1 2 3 4 5 6 7 8 9 10

 

 

 

 

 


2023년 5월 17일 수요일

<4일차 수업 후기>

반복할 변수 i 등을 선언할 때 전역 변수보다는 지역 변수로 많이 선언하는 것을 새롭게 알게 되었다. 데이터 낭비를 줄이기 위해서 더 이상 사용하지 않을 변수라서 지역 변수로 선언해 주는 것 같았다. 앞으로는 데이터가 낭비되지 않도록 신경 써서 코드를 작성해야겠다.

개인적으로 조건문과 반복문을 이용한 알고리즘 문제가 가장 재미있다고 생각한다. 재미있는 수업이었다.

728x90
반응형
728x90
반응형

<오늘의 학습>

1. 조건문 if

2. 조건문 switch-case

3. 반복문 for

4. 반복문 while

5. continue

6. break

 

 

1. 조건문 if

▶ 조건문 : 주어진 조건에 따라 다른 문장을 선택할 수 있도록 프로그래밍 하는 것

 

1) if문

		if(조건){
			수행;		//조건이 참일 경우에 수행
		}
		if(조건1){
			수행1;		//조건2이 참일 경우에 수행
		}
		
		if(조건2){
			수행2;		//조건2가 참일 경우에 수행.
		}

 

 


 예제) if문 만을 이용한 학점 출력 예제

		int score = 90;
		if(score >= 90){
			System.out.println("A");	//출력
		}
		if(score >= 80){
			System.out.println("B");	//출력
		}
A
B
  • 90의 값은 첫 번째 if문과 두 번째 if문을 모두 만족하여 A와 B가 모두 출력된다.

 

 


2) if-else문

▶ 조건식을 만족하는 경우와 만족하지 않는 모든 경우를 나타낼 때 사용한다.

		if(조건){
			수행1;	//조건이 참일 경우에 수행
		}
		else{
			수행2;	//조건이 거짓일 경우에 수행
		}

 

▶ 조건 연산자를 if-else문으로 표현할 수 있다.

		int num;
		/*num = (5>3) ? 1 : 0; => if-else문으로 표현*/
		if (5>3){
			num=1;
		}
		else{
			num=0;
		}

 

 


3) if-else if-else문

▶ 하나의 상황에 조건이 여러 개인 경우에 사용한다.

		if(조건1){
			수행1;	//조건1이 참일 경우에 수행
		}
		else if(조건2){
			수행2;	//조건1이 거짓이고 조건2가 참일 경우에 수행. 조건1이 참이면 조건2가 참이여도 출력되지 않는다.
		}
		else{
			수행3;	//조건1과 조건2가 모두 거짓일 경우에 수행
		}

 

 


예제) if-else if 문을 이용한 학점 출력

		int score = 90;
		if(score >= 90){
			System.out.println("A");	//출력
		}
		else if(score >= 80){
			System.out.println("B");	//출력X
		}
A
  • 90의 값은 첫 번째 if문의 조건을 만족하여 A가 출력된다.

 

 


예제) 숫자를 입력받아 양수인지, 음수인지 구분하여 출력

		/*임의의 수를 입력받아서 양수인지 판정하여 출력하시오*/
		
		Scanner scan = new Scanner(System.in);	//키보드 입력
		int num=0;
		System.out.print("양수를 판정할 숫자를 입력하시오 >> ");
		num = scan.nextInt();	//숫자 입력
		
		if(num>0){
			System.out.println("입력받은 숫자는 양수입니다.");
		}
		else if(num==0){
			System.out.println("입력받은 숫자는 0입니다.");
		}
		else{
			System.out.println("입력받은 숫자는 음수입니다.");
		}
		
		scan.close();	//close를 해주지 않아도 오류가 나지는 않으나, OS 자원을 되돌리기 위해 close()
양수를 판정할 숫자를 입력하시오 >> -1
입력받은 숫자는 음수입니다.

 

 

 

2. 조건문 switch-case

▶ 조건이 많아질 때 코드가 길어지는 것을 방지하고 가독성을 좋게하기 위해 사용한다.

		switch(조건){
		case 0:	//조건이 일치하면 실행
			실행1;
			break;	//break가 없으면 다음 case도 실행
		case 1:
			실행2;
			break;
		default:
			실행3;	//조건이 일치하는 case가 없으면 실행
		}

 

 


 예제) 임의의 수를 입력받아 짝수인지 홀수인지 출력

package java_practice;

import java.util.Scanner; //scan

public class Practice {
	public static void main(String[] args) {
		/*임의의 수를 입력받아 짝수인지 홀수인지 출력하시오.*/
        
		Scanner scan = new Scanner(System.in);
		int num=0;

		System.out.print("임의의 수를 입력하시오 >> ");
		num=scan.nextInt();

		switch(num%2){
		case 0:		//짝수에 2를 나눈 나머지는 0이다
			System.out.printf("숫자 %d는 짝수입니다.\n", num);
			break;
		default:	//2로 나눈 나머지가 1이 나올 때의 홀수 값. 값을 나누면 0과 1,짝수와 홀수뿐이라 나머지 하나는 default 표기
			System.out.printf("숫자 %d는 홀수입니다.\n", num);
		}

		scan.close();
        
	}//main_end
}//class_end
임의의 수를 입력하시오 >> 5
숫자 5는 홀수입니다.

 

 


 예제) 열두달 중 하나의 달을 입력 받아 그 달의 마지막 날짜를 출력

package java_practice;

import java.util.Scanner; //scan

public class Practice {
	public static void main(String[] args) {
		/*월(달) 입력 받아서 그 달의 마지막 날짜를 구하시오*/

		Scanner scan = new Scanner(System.in);
		int month=0, days=0;

		System.out.print("날짜를 구할 달을 입력하세요(1~12) >> ");
		month = scan.nextInt();

		if(month>12 || month<1){	//12보다 큰 값을 입력하거나, 1보다 작은 값을 입력하면 재입력 요청
			System.out.println("잘못 입력하셨습니다.\n1~12 사이의 값을 다시 입력해주세요.");
		}
		else{	//1부터 12사이의 값이 입력되었을 때
			switch(month){
			case 2:
				days=28;
				break;
			case 1:
			case 3:
			case 5:
			case 7:
			case 8:
			case 10:
			case 12:
				days=31;
				break;
			default:	//2,4,6,9,11월
				days=30;
			}//switch_end
			System.out.printf("%d월은 %d일까지입니다.\n", month, days);
		}//else_end

		scan.close();

	}//main_end
}//class_end
날짜를 구할 달을 입력하세요(1~12) >> 6
6월은 30일까지입니다.

 

 

 

 

다음 학습

 

[JAVA] 반복문 (4일차)

 

deliciouscode.tistory.com

 

728x90
반응형
728x90
반응형

<오늘의 학습>

1. 대입 연산자

2. 부호 연산자

3. 산술 연산자

4. 증감 연산자

5. 관계 연산자

6. 논리 연산자

7. 복합 대입 연산자

8. 조건 연산자

9. Shift 연산자

10. 연산자 우선 순위

11. 문자열 비교 연산자

12. 객체 비교 연산자

 

 

항과 연산자(Operation)

단항 연산자 항이 한 개인 연산자 ++num
이항 연산자 항이 두 개인 연산자 num1 + num2;
삼항 연산자 항이 세 개인 연산자 ( 5> 3) ? 1 : 0;

 

 

 

1. 대입 연산자

▶ 변수에 값을 대입하는 연산자

int age = 27; //age 변수에 값 27을 대입

int sum = aScore + bScore; // aScore 값과 bScore 값을 더하여 sum 변수에 대입

 

 

 

2. 부호 연산자

▶ 더하기, 빼기 연산에 쓰는 이항 연산자. 부호(양수,음수)를 나타내는 단항 연산자로도 사용한다.

연산자 기능 연산
+ 변수나 상수의 값을 양수로 만든다. +2
- 변수나 상수의 값을 음수로 만든다. -2

 

 

 

3. 산술 연산자

▶ 사칙 연산에서 사용하는 연산자

연산자 기능 연산
+ 두 항을 더한다. 5+3 => 8
- 앞에 있는 값에서 뒤에 있는 값을 뺀다. 5-3 => 2
* 두 값을 곱한다. 5*3 => 15
/ 앞에 있는 값에서 뒤에 있는 값을 나누어 몫을 구한다. 5/3 => 1
% 앞에 있는 값에서 뒤에 있는 값을 나누어 나머지를 구한다. 5%3 =>2

▶ 실수/정수=실수(자료형이 큰 쪽으로 자동형변환)
   ex) 10.0/2=5.0

▶ 몫과 나머지를 이용한 게시판 page 계산

  • 37/10=3 => 3+1page //페이지 갯수 4
  • 37%10=7 => 마지막 페이지는 7개 출력
		int pageCount=(37/10)+(((37%10)==0)?0:1);
		System.out.println("페이지 수:"+pageCount);//페이지 수:4

 

 

 

4. 증감 연산자

▶ 단항 연산자로, 연산자 앞이나 뒤에 사용하며 값을 1만큼 늘리거나 1만큼 줄인다. 어디에 연산자가 위치하느냐에 따라 값이 바뀌니 주의한다.

연산자 기능 연산
++ 항의 값에 1을 더한다. ++num;//먼저 num값이 증가한 후 대입
num++;//num값을 대입한 후 num값 증가
-- 항의 값에 1을 뺀다. --num;//먼저 num값이 감소한 후 대입
num--;//num값을 대입한 후 num값 감소

 

증감연산자 계산

		int a=5;
		int b=5;

		int x = ++a + b--;	//6+5 값 대입

		System.out.println(x);	//11 출력

 

		int a=5;

		int b = ++a + ++a;

		System.out.println(b);	//13 출력
  • C언어에서는 14로 계산되고, 자바에서는 13으로 계산된다.

 

 

 

5. 관계 연산자

▶ 항이 두 개인 이항 연산자로, 두 개의 항을 비교한다. 관계 연산자의 결과 값은 참(true) 또는 거짓(false)으로 반환된다.

연산자 기능 (왼쪽을 기준으로 비교) 연산
> 왼쪽 항이 크면 참, 아니면 거짓을 반환한다.(초과) num > 5;
< 왼쪽 항이 작으면 참, 아니면 거짓을 반환한다. (미만) num < 5;
>= 왼쪽 항이 크거나 같으면 참, 아니면 거짓을 반환한다. (이상) num >= 5;
<= 왼쪽 항이 작거나 같으면 참, 아니면 거짓을 반환한다. (이하) num <= 5;
== 두 항의 값이 같으면 참, 아니면 거짓을 반환한다. num == 5;
!= 두 항의 값이 다르면 참, 아니면 거짓을 반환한다. num != 5;

 

 

 

6. 논리 연산자

참과 거짓의 논리 연산을 프로그래밍 언어로 구현한 연산자

1) 일반 논리 연산자

연산자 기능 연산
&& (논리 곱. AND) 두 항이 모두 참인 경우에만 결과 값이 참이다. 그렇지 않은 경우는 모두 거짓이다. boolean val = (5>3) && (5>2); => true
|| (논리 합. OR) 두 항 중 하나의 항만 참이어도 결과 값이 참이다. 두 항이 모두 거짓일 경우에만 결과 값은 거짓이다. boolean val = (5>3) || (5<2); => true
! (부정. NOT) 참인 경우는 거짓으로 바꾸고, 거짓인 경우에는 참으로 바꾼다. 단항 연산자이다. boolean val = !(5>3); =>false

 

 

2) bit(이진) 논리 연산자

연산자 기능 연산
& (AND) 두 개의 비트 값이 모두 1인 경우에만 연산의 결과 값이 1이 된다.       00000101
&    00000010
=>  00000000
| (OR) 두 개의 비트 중값이 하나라도 1인 경우에 연산의 결과 값이 1이 된다.      00000101
|    00000010
=> 00000111
^ (XOR) 같은 값이면 0, 다른 값이면 1의 값을 가진다.      00000101
^    00000010
=>  00000111
~ (NOT) 비트 값 0은 1으로, 1은 0으로 바꾼다. ~00000101 => 11111010

 

 

 

7. 복합 대입 연산자

▶ 대입 연산자와 다른 연산자를 조합해 하나의 연산자처럼 사용하는 연산자

연산자 기능 연산
+= 두 항의 값을 더해 왼쪽 항에 대입한다. sum+=i;
sum = sum + i;
-= 왼쪽 항에서 오른쪽 항을 뺀 값을 왼쪽 값에 대입한다. num -= 2;
num = num - 2;
*= 두 항의 값을 곱해 왼쪽 항에 대입한다. num *= 2;
/= 왼쪽 항을 오른쪽 항으로 나누어 그 몫을 왼쪽 항에 대입한다. num /= 2;
%= 왼쪽 항을 오른쪽 항으로 나눈 값의 나머지를 왼쪽 항에 대입한다. num %= 2;
<<= 비트를 왼쪽으로 이동하고 그 값을 왼쪽 항에 대입한다. num <<= 2;
>>= 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입한다.
왼쪽에 채워지는 비트 값은 부호 비트와 동일하다.
num >>= 2;
>>>= 비트를 오른쪽으로 이동하고 그 값을 왼쪽 항에 대입한다.
왼쪽에 채워지는 비트 값은 0이다.
num >>>= 2;
&= 두 항의 & 비트 연산 후 값을 왼쪽 항에 대입한다. num &= 2;
|= 두 항의 | 비트 연산 후 값을 왼쪽 항에 대입한다. num |= 2;
^= 두 항의 ^ 비트 연산 후 값을 왼쪽 항에 대입한다. num ^= 2;

 

 

 

8. 조건 연산자

▶ 연산에 필요한 항의 개수가 세 개인 삼항 연산자로, 주어진 조건식이 참인 경우와 거짓인 경우에 따라 다른 결과 값이 나온다.

연산자 기능 연산
조건식 ? 결과1 : 결과 2; 조건식이 참이면 결과 1,
조건식이 거짓이면 결과2가 선택된다.
int num = (a>b) ? a : b;

 

 

 

9. Shift 연산자

연산자 공식 기능 연산
<< X*2ⁿ 왼쪽으로 비트를 이동한다. 오른쪽은 0으로 채운다.  00000101<<2 => 00010100
>> X*2ⁿ 오른쪽으로 비트를 이동한다. 왼쪽은 0으로 채운다. 00010100>>2 => 00000101
>>>  X/4ⁿ 비트를 오른쪽으로 이동한다. 왼쪽에 채워지는 비트 값이 부호 비트와 상관없이 무조건 0이 된다. 00000001>>>2 => 00000001


▶ 부호 비트(sign bit)

  1. 최좌측 bit
  2. 0이면 양수, 1이면 음수
    ex) 0000 0001 ->양수
          1000 0001 ->음수 (-1을 표기한 것은 아님)

 

 

 

10. 연산자 우선 순위

우선순위 연산자 연산 방향
1 단항 증감(++, --), 부호(+, -), 논리(!)
2 산술 산술 (*, /, %)
3 산술 산술 (+, -)
4 비트 이동 Shift (<<, >>)
5 관계 비교 (<, >, <=, >=, instanceof)
6 관계 비교 (==, !=)
7 비트 곱 논리 (&)
8 비트 차 논리 (^)
9 비트 합 논리 (|)
10 논리 곱 논리 (&&)
11 논리 합 논리 (||)
12 조건 조건 (? :)
13 대입 대입(=, +=, -=, *=, /=, %=)

 

 

 

11. 문자열 비교 연산자

  1. equals()메소드:문자열을 비교할 때 사용(대,소문자 구분)
    ex) yes != YES != Yes
  2. equalsIgnoreCase():문자열비교(대문자,소문자 구분없이 비교)
    ex) yes == YES == Yes
		/*문자열 비교*/
		String str1="hi", str2="hi", str3="HI";
		
		System.out.println(str1.equals(str2));//true
		System.out.println(str1.equals(str3));//false
		System.out.println(str1.equalsIgnoreCase(str3));//true

 

 

 

12. 객체 비교 연산자 (instanceof)

  1. 객체 instanceof 클래스
  2. 왼쪽 instanceof 오른쪽
		/*객체 instanceof 클래스*/
		String str = new String("aaa");
		Object ob=new Object();
		
		//왼쪽 객체보다 오른쪽 클래스가 같거나 위일 때 => true
		System.out.println(str instanceof String);//true
		System.out.println(ob instanceof Object);//true
		System.out.println(str instanceof Object);//true
		System.out.println(ob instanceof String);//false
  • Object는 자바의 최상위 클래스이다. 클래스를 만들 때 상속을 받지 않아도 내부적으로 Object가 상속받아진다.

 

 

 

 

 


2023년 5월 16일 화요일

<3일차 수업 후기>

증감 연산자 계산을 많이 공부했다고 생각했는데, [ ++a + ++a ]의 값을 14라고 생각했다. C언어에서는 14로 계산되고, 자바에서는 13으로 계산된다고 하니 차이를 알아두면 좋을 것 같다.

또한 클래스를 만들 때 상속을 받지 않아도 Object가 상속받아지는지 몰랐다. Object가 자바의 최상위 클래스라는 것을 꼭 기억하자.

728x90
반응형
728x90
반응형

<오늘의 학습>

1. 변수와 상수

2. 자료형

3. 변수 선언

4. 식별자

5. 진법 

 

 

1. 변수와 상수

① 변수(Variable) : 데이터 값들이 저장되는 메모리 공간. 저장된 값의 변경이 가능하다.

② 상수(Constant) : 변하지 않는 데이터의 값이 저장되는 메모리 공간. 저장된 값의 변경이 불가능하다.

-final 예약어를 사용해 선언할 수 있다.

 

 

 

2. 자료형

▶ 자료형(Data type) : 자료의 타입을 나타낸다.

1) 기본 자료형(Elementary data type) : 실제 값이 저장된다. 범위를 넘어가는 값은 허용되지 않는다.

⑴ 정수형 : byte, short, int, long

  1. byte : 1byte는 8bit를 나타낸다. 바이트 단위의 정보를 저장하거나 통신할 때 주로 이용한다.
  2. short : 2byte 정수 자료형.
  3.  int : 4byte 정수 자료형. 컴퓨터에서 정수로 연산을 할 때 4바이트 단위로 처리하는 것이 가장 효율적이기 때문에 정수를 표현할 때 가장 많이 사용한다.
  4. long : 8byte 정수 자료형. 자바에서 정수를 표현하는 가장 큰 단위의 자료형이다. 자바는 모든 정수 값을 기본으로 int형으로 처리하기 때문에 long형을 나타내는 식별자인 L이나 l을 사용하려는 숫자 뒤에 붙여야 사용이 가능하다.

 

⑵ 실수형 : float, double

  1. float : 4byte 실수 자료형. 정밀도가 낮다.
  2. double : 8byte 실수 자료형. 정밀도가 높다.

 

⑶ 문자형 : char

  • char : 2byte 문자 자료형. 자바는 유니코드에 기반하여 문자를 표현하기 때문에, 자바의 문자 자료형인 char형은 2byte를 사용한다.

 

⑷ 논리형 : boolean

  • boolean : 어떤 변수의 참, 거짓의 값을 나타내는 데 사용한다. true(참), false(거짓) 두 가지 값만을 가진다.

 

▶ 자료형의 특징

데이터 타입 구분 메모리 크기 값의 범위
byte 정수형 1바이트 -128 ~ +127
short 정수형 2바이트 -32768 ~ +32767
int 정수형 4바이트 -2147483648~2147483647
long 정수형 8바이트 -9223372036854775808
~9223372036854775807
float 실수형 4바이트 1.4E-45~3.4028235E38
double 실수형 8바이트  
char 문자형 4바이트  
boolean 논리형 1바이트  

★ 자료형 크기 순서 : byte < short < int < long < float < double



2) 참조 자료형(Reference data type) : 실제 객체를 가리키는 주소를 저장함.

  • 클래스, 인터페이스, 배열

 

3) 문자열(String) : 클래스 자료형. 기본 자료형 X


4) 무치형(void) : 자료형이 없는 것

 

 

 

3. 변수 선언

package java_practice;

public class Practice {

	public static void main(String[] args) {
		/*변수 선언*/
		int sum;	//정수형 변수 sum 선언
		sum=0;		//sum 변수에 값 0을 대입하여 초기화
		char c = 'c';	//변수 선언 및 대입
		Long longSum = 100L;
		
		/*상수 선언*/
		final int MAX = 100;	//상수 MAX=100
		Max=200;//상수는 값을 변경할 수 없기 때문에 오류
        
	}//main_end
}//class_end
  • 변수나 함수를 표기할 때는 카멜 표기법을 사용하는 것이 권장된다.

 

▶ 변수 표기법

  1. 카멜 표기법(camelCase) : 식별자 표기시에 여러 단어가 이어지면 첫 단어의 시작만 소문자로 표시하고 각 단어의 첫 글자는 대문자로 지정하는 것이다.
  2. 파스칼 표기법(PascalCase) : 여러 단어가 이어지면, 각 단어의 첫 글자는 대문자로 지정한다.
  3. 스네이크 표기법(snake_case) : 여러 단어가 이어지면 단어 사이에 언더바를 넣어 표시한다.
  4. 헝가리안 표기법(iNum) : 식별자 표기시, 두어에 자료형을 붙이는 표기법이다.

 

 

 

4. 식별자

1) 식별자(identifier) : 명칭(이름) ex) int a = 100;

  1. 변수 이름: 첫글자는 소문자로 시작한다. (카멜 표기법 권장)
  2. 메소드 이름: 첫 글자는 소문자로 시작한다. (카멜 표기법 권장)
  3. 클래스 이름: 첫 글자는 대문자로 시작한다. (파스칼 표기법 권장)

 

2) 식별자 사용 규칙

  1.  영문자,숫자를 조합하여 사용한다. 첫 글자는 소문자로 쓰는 것을 권장하며 대소문자를 구분한다. 첫 글자는 영문자로 시작해야한다.(숫자X)
  2. 키워드(예약어)는 사용할 수 없다.
  3. 공백을 사용할 수 없다.
  4. 특수문자를 사용할 수 없다. 단, '_','$'는 예외로 사용이 가능하다.

 

 

 

5. 진수 표현

  1. 10진수 : 1 -> 2 -> 3 ~
  2. 2진수 : 0000 0000 -> 0000 0001 -> 0000 0010 ~
  3. 8진수 : 0~..10(십진수8)..~17(십진수15)
  4. 16진수 : 0~..A..~F

 

▶ 2진수, 8진수, 16진수 표현

10진수 1 2 3 4 5 6 7 8
2진수 0000 0001 0010 0011 0101 0110 0111 1000
8진수 1 2 3 4 5 6 7 10
16진수 1 2 3 4 5 6 7 8
10진수 9 10 11 12 13 14 15 16
2진수 1000 1001 1010 1011 1101 1110 1111 10000
8진수 11 12 13 14 15 16 17 20
16진수 9 A B C D E F 10

 

 


예제) 자바에서의 2진수, 8진수, 16진수 출력

		int a=122;
		
		System.out.println("10진수:"+a);
		System.out.println("2진수:"+Integer.toBinaryString(a));//2진수
		System.out.println("8진수:"+Integer.toOctalString(a));//8진수
		System.out.println("16진수:"+Integer.toHexString(a));//16진수
		System.out.println();
		
		System.out.printf("8진수(o):%o\n", a);
		System.out.printf("16진수(x):%x\n", a);
		System.out.println();
		
		
		int b = 014;//8진수
		System.out.println("8진수 014="+b);
		
		int c = 0xa;//16진수
		System.out.println("16진수 0xa="+c+"\n");

 

출력 결과

10진수:122
2진수:1111010
8진수:172
16진수:7a

8진수(o):172
16진수(x):7a

8진수 014=12
16진수 0xa=10

 

 

 

 

 


2023년 5월 15일 월요일

<2일차 수업 후기>

정보처리기사 기출 문제로 헝가리안 표기법이 나와서 표기법 4가지를 공부했는데,  클래스 이름은 파스칼 표기법을 권장하고 변수명은 카멜 표기법을 권장하는지는 몰랐다.

개인적으로 변수명을 작성할 때 스네이크 표기법을 이용하는 것을 좋아했는데, 앞으로는 클래스나 변수명을 작성할 때 권장표기법을 이용해서 더 깔끔하게 코드를 작성해야겠다.

728x90
반응형
728x90
반응형

<오늘의 학습>

1. JDK/JRE 설치

2. 환경 변수 설정

3. Eclipse 설치

4. 이클립스로 프로그램 만들기

5. 소스 코드 출력

6. 주석

7. 줄바꿈

8. 인용 부호 출력

 

 

4. 이클립스로 프로그램 만들기

▶ 파일 생성

① 프로젝트 생성 : File -> New -> Java Project

② 프로젝트 아래에 패키지 생성 : Java Project's New -> Package

  • 패키지 이름 - 모두 소문자
    ex) java_test

 

③  패키지 아래에 클래스 생성 : Package's New -> Class

  • 자바 프로그램은 모두 클래스 기반으로 구성된다.
  • 패키지가 다르다면 클래스 이름이 같더라도 다른 클래스가 된다.
  • 클래스 이름 - 첫글자 대문자
    ex) Test01.java

Test01.java 파일에 JAVA코드 작성 가능

 

▶ 파일 삭제 (DELETE)

Delete project contents on disk 체크 시, 디스크에서 삭제됨

 

 

 

5. 소스 코드 출력

▶ 클래스 파일을 생성하면 자동으로 생성되는 소스 코드

package java_practice;	//패키지 이름

public class Practice {	//클래스 이름

	public static void main(String[] args) {
		// TODO Auto-generated method stub 
        
	}//main_end
    
}//class_end
//프로그램 형식
public(접근제한자) class(키워드) Practice(클래스이름.첫글자 대문자) {

	public(접근제한자) static(정적. 클래스에 소속) void(반환형) main(메소드)(String args[](argument=인수)){
		System(클래스).out(객체).println()(메소드("인수값");
        
	}//main_end
}//class_end

 

 

 Hello World! 출력

 main() 함수 내부에 적혀 있는 //TODO~ 문장을 지우고 아래와 같이 코드를 작성

package java_practice;

public class Practice {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}//main_end
}//class_end
  • System.out.println() : 화면에 출력
  • ;(세미콜론) : 문장의 마침표 역할
  • 문장의 가독성을 높이기 위해 코드는 Tab으로 들여 쓰기를 하는 것이 좋으며, [Ctrl+i] 키를 이용하여 들여 쓰기를 할 수 있다.

 

② 컴파일

  • 컴파일 : 프로그래밍 언어를 기계어로 변역해 주는 과정
  • 이클립스는 빌드 자동화 옵션이 기본으로 설정되어 있기 때문에 파일을 저장[Ctrl+S]하면 자동으로 컴파일이 된다.
  • 빌드 자동화 옵션이 설정되어 있지 않다면 [Project -> Build Project]를 선택하여 수동으로 컴파일해야 한다.

 

③ 프로그램 실행

  • 메뉴의 실행 버튼/ Run/ [Ctrl+11] 키를 눌러 프로그램을 실행할 수 있다.
Hello World!	//출력 결과

 

 

 

6. 주석

▶ 한 줄 주석 표시하기

  • 문장 앞에 // 표시를 하면 주석으로 처리되고 컴파일되지 않는다.
  • 간단한 테스트 코드를 작성하거나 코드 바로 옆에서 설명을 할 때 주로 사용한다.
package java_practice;

public class Practice {
	public static void main(String[] args) {
		System.out.println("Hello World!");	//Hello World! 출력
	
	}//main_end
}//class_end

 

▶ 여러 줄 주석 표시하기

  • 여러 줄을 주석 처리할 때는 /*, */ 기호로 주석과 시작의 끝을 나타낼 수 있다.
  • 여러 줄을 한꺼번에 주석 처리하거나 코드에 대해 길게 설명할 때 사용한다.
  • 프로그램 시작 부분에 프로그램을 만든 날짜, 만든 사람, 마지막 업데이트 날짜, 프로그램 설명 등을 쓸 때도 사용한다.
package java_practice;

/*
 만든 날짜:2023년 5월 12일
 만든 사람:Jo
 Description:Hello World! 출력
 */

public class Practice {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	
	}//main_end
}//class_end

 

 

 

7. 줄바꿈

▶ print/println

① system.out.print(); =>문장 끝에서 줄바꿈이 되지 않고 이어서 출력된다.

package java_practice;

public class Practice {
	public static void main(String[] args) {
		System.out.print("Hello");
		System.out.print("World!");
        
	}//main_end
}//class_end
HelloWorld!	//출력 결과

 

②  system.out.println(); =>문장 끝에서 줄바꿈이 된다.

package java_practice;

public class Practice {
	public static void main(String[] args) {
		System.out.println("Hello");
		System.out.println("World!");
        
	}//main_end
}//class_end
Hello
World!	//출력 결과

 

자주 사용되는 문자

  1. \n : 줄바꿈
  2. \r : 커서가 현재 라인의 첫 번째로 이동됨 (carriage return)
  3. \t : 일정 칸을 띄움 (8칸) 
package java_practice;

public class Practice {
	public static void main(String[] args) {
		System.out.println("Kim\nLee\tPark");
		
	}//main_end
}//class_end
Kim
Lee	Park	//출력 결과

 

 

 

8. 인용부호 출력

  1. \' => ' 출력
  2. \"=> " 출력
  3. \\ => \ 출력
package java_practice;

public class Practice {
	public static void main(String[] args) {
		System.out.println("JAVA_HOME=C:\\Program Files\\Java\\jdk1.8.0_40"); //인용부호 출력: \\ => \
        
	}//main_end
}//class_end
JAVA_HOME=C:\Program Files\Java\jdk1.8.0_40	//출력 결과

 

 

 

 

 


2023년 5월 12일 금요일

<1일차 수업 후기>

오늘은 첫 수업을 들었다. 관련 전공자가 꽤 있을 것 같다는 나의 예상과는 달리, 수업을 듣는 21명의 학생들 중 19명의 학생들이 비전공자였다.

내 옆자리에 앉으신 분도 비전공자였지만 따로 강의를 듣고 예습을 해오셨다고 했다. 적극적으로 수업에 참여하시는 분과 함께 공부할 수 있어 기뻤다.

내가 대학생일 때, 자바는 아니지만 C언어 튜터링의 멘토로 참여한 경험이 있어서 옆자리 분께 많은 도움을 드릴 수 있을 것 같았다. 많이 알려드리면서 헷갈리는 부분은 더 공부하고, 다시 한번 복기할 수 있기 때문에 나에게도 많은 도움이 될 것이다.

 

강사님은 JAVA는 환경 변수에 따라 코드가 실행되지 않을 때도 있기 때문에, 환경 변수를 초기에 잘 설정하는 것이 가장 중요하다고 강조하셨다.

회사마다 사용하는 JAVA의 버전과 환경 변수 설정이 다르기 때문에, 회사가 지향하는 개발 환경을 따르는 것이 가장 중요하고 느꼈다.

728x90
반응형

+ Recent posts