반응형
반응형

객체지향이라고 불리는 것 중에 클래스 입니다.

 

클래스란 붕어빵틀을 가장 많이 이용해 설명하는데요

 

붕어빵 틀이 있고 거기에 반죽을 부어서 만들잖아요 이렇게 하나하나씩 손으로 붕어빵을 빚어서 만들 수 있지만

틀에 넣고 굽고 빼고 하면 대량으로 생산이 가능하죠 시간도 절약되고 효율적입니다.

이러한 역할을 하는게 클래스입니다.

 

클래스가 붕어빵 틀인거죠 거기에서 클래스를 이용해 만들어지는 걸 객체(붕어빵)라고 합니다.

 

객체지향이라는 말이 이렇게 만들어지는 겁니다. 객체를 지향한다. 말 그대로 클래스를 이용한다는 의미입니다.

 

클래스 파일을 만들 때void main생성표시를 체크 안하고 만듭니다.

main에서는 프로그램이 직접 돌아가는 부분을 의미하죠

 

 

package class_exam;

public class Car {
	String company = "현대자동차";
	String model ="그랜저";
	String color = "검정";
	int maxspeed = 350;
	int speed;
}
package class_exam;

public class CarExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Car car = new Car(); // 클래스 변수명은 다 소문자
		
		System.out.println("제작회사 : " + car.company);
		System.out.println("모델명 : " + car.model);
		System.out.println("색깔 : " + car.color);
		System.out.println("최고속도 : " + car.maxspeed);
		System.out.println("현재속도 : " + car.speed);
	
		//필드값 변경
		car.speed = 60;
		System.out.println("수정된 속도 : " + car.speed);
	}

}

실행하면 이러한 결과가 나옵니다.

코드를 설명하자면 Car car = new Car();

 

가 나옵니다 CarClass 명을 의미합니다.(붕어빵 틀) Car라고 만들어줬죠?

car붕어빵틀로 만들 붕어빵 이름입니다. 원래 붕어빵에 이름은 안 주지만 여기선 만들어줘야합니다.

new Car();는 기본 문법입니다 new 클래스명(Car) () 입니다. 쉽게 붕어빵을 만드는 과정이라고 생각하시면 됩니다.

 

Car라는 붕어빵 틀로 car라는 붕어빵이름을 new Car();을 통해 만듭니다.

 

그리고 붕어빵만의 특징을 클래스 안에 적습니다. 여기에선

 

String company = "현대자동차";
String model ="그랜저";
String color = "검정";
int maxspeed = 350;
int speed;

 

이러한 거죠 

 

이렇게 만든 car라는 붕어빵에 특징을 사용하려면 .이라는 접근자를 사용합니다.

car.company .... 이런식으로 접근할 수 있습니다. 

 

class에서 값을 이미 적어둔 채로 만들 수도 있고 나중에 값을 넣을 수도 있습니다.

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형
반응형
package local_variable_global_variable;

public class GlobalVariable {
	
	static int Global2 = 4;
	
	
	public static void main(String[] args) {
	
		System.out.println("Global : " + Global2); // 4
	
		for (int i = 0 ; i < 4 ; i++) {
			System.out.println("Global : " + Global2); // 4
		}
	}

}

전역변수란 어느 곳에도 쓸 수 있는 것입니다. static을 붙히면 되는 건데 웬만해서

static은 쓰지 말라고 하셨어요 다른 파일에도 영향을 끼칠 수 있을 수 있기 때문에 그렇다네요

이와같이 for안에 있는 곳과 main에서도 다 사용이 가능합니다.

 

package local_variable_global_variable;

public class LocalVariable {

	public static void main(String[] args) {
		
		
		for (int i = 0 ; i < 4 ; i++) {
			int local = 4;
			System.out.println("Local " + local); // 4
		}
		System.out.println("Local " + local); // 에러

	}

}

지역변수는 그 한정된 지역에서만 쓸 수 있는 것으로 for문에서 정의된 local은 밖에서 쓸 수 없죠

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형
반응형
package array;

public class ForEach {

	public static void main(String[] args) {

		int[] scores = {95,70,40,50,20};
		
		int sum = 0;
		int count = 0;
		
		for (int score : scores) { // 배열 전체를 받는다
			sum += score;
			count ++;
		}
		System.out.println(sum);
		System.out.println(count);
		
	}

}

 

지금까지 배워온 내용하고 크게 다를거 없는데 for문이 좀 특이하게 생겼습니다.

scores의 인덱스 하나씩 받아가지고 score에 넣고 그 score를 이용해 사용가능합니다.

 

코드를 설명하자면 scores[0] 이 score에 들어가게되고 그게 scores의 배열 크기만큼 반복하게 됩니다.

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형
반응형

 

package scanner;

import java.util.Scanner;

public class ScannerExample {

	public static void main(String[] args) {
		
		Scanner Scanf = new Scanner (System.in); // 한번만 선언해서 쓰면 된다.
		float num2 ;
		int num;
		String str;
		
		do {
			System.out.println(">");
			num2 = Scanf.nextFloat(); // float형 입력하기
			System.out.println(num2);
		}while(num2 != 1.5);
		
		do {
			System.out.println(">");
			num = Scanf.nextInt(); // int형 입력하기
			System.out.println(num);
		}while(num != 0);
		
		do {
			System.out.println(">");
			str = Scanf.nextLine(); // 문자열 입력하기
			
		}while(!str.equals("q"));
		
		System.out.println("시스템을 종료합니다");

	}

}

따라치시는 분들한텐 에러가 날 수 있는데 빨간 줄이 나옵니다. 저 기능을 쓰려면 import라는 작업을 해줘야합니다.

 

import란 무엇이냐면 과자코너에 가면 과자 종류들이 여러개 있잖아요?

그런 거 처럼 비슷하거나 자주쓰이는 것이나 연관 있는 걸 모아 놓은 걸 쓰겠다고 선언한 겁니다.

 

java.util의 경우 사람들이 되게 자주이용하는 것들이 많이 들어있습니다.

자세한 건 진행하면서 배우는 걸로 하죠

 

이렇게 가져다대면 import해라 라고 설명까지 해줍니다. 단축키로는 Scanner에 가져다대고 Ctrl + Shift + o 를 누르면

자동으로 import됩니다.

 

이제 Scanner에 대해서 알아봅시다 Scanner란 직접 입력을 할 수 있는 것을 의미합니다.

먼저 Scanf라는 객체를 선언후 어떤 자료형으로 입력을 할지를 정해야 합니다.

 

num2의 경우 float형이죠? Scanf.nextFloat(); 라는 걸로 float형을 입력할 수 있습니다.

 

nextInt의 경우는 int형을 입력할 수 있게 합니다.

nextLine문자열을 입력할 수 있게 합니다.

 

뭔가 공통점이 있죠? Line빼고 뒤에 자료형이 대문자로 들어가는 것 이 점 참고해서 다른 자료형으로도 쓸 수 있습니다.

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형

'[Java] > [Java]' 카테고리의 다른 글

[Java] 자바 전역변수 지역변수  (0) 2021.07.02
[Java] 자바 반복문 (for - each문)  (0) 2021.06.14
[Java] 자바 2차원 배열 (Array)  (0) 2021.06.14
[Java] 자바 배열 (Array)  (0) 2021.06.13
[Java] 자바 String 문자열 객체  (0) 2021.06.13
반응형
package array;

public class TwoDemensionalArray {

	public static void main(String[] args) {
		
		int [][] arr = new int [2][3];
		
		for (int i = 0 ; i < arr.length ; i++) {
			for (int j = 0 ; j < arr[i].length; j++) {
				System.out.println("arr["+i+"]["+j+"] " + arr[i][j]);
			}
		}
		/*
		        arr[0][0] 0
			arr[0][1] 0
			arr[0][2] 0
			arr[1][0] 0
			arr[1][1] 0
			arr[1][2] 0
		 */

	}

}

2차원 배열이란 말 그대로 2차원형태입니다 

 

1차원은 이러한 형태이고

           

2차원은 이러한 형태입니다. 

     
     


지금 보여준 2행 3열 형태는 위에 자바코드에 있는 걸 그림으로 도식화한 것입니다.

선언방식 전에 배열과 아주 유사합니다 그냥 [] 하나 더 추가된 거밖에 없습니다.

 

 int     [][]  arr     = new   int        [2]      [3]

자료형 [][] 배열명 = new 자료형 [배열행][배열열]

 

arr[i].length를 보면 i가 처음에 0이기 때문 arr[0].length의 갯수 즉 3개입니다.

 

 

반응형
반응형

 

package array;

public class Array {

	public static void main(String[] args) {
		
		// ---------------------------- 방법 1 --------------------------
		
		int[] score = { 90 , 80 , 70 };
		
		// score[3]= 100; // 에러

		System.out.println("score[0]" + score[0]); // 90
		System.out.println("score[1]" + score[1]); // 80
		System.out.println("score[2]" + score[2]); // 70
		// System.out.println("score[3]" + score[3]); // 100
		
		
		int sum = 0;
		for (int i = 0 ; i < 3 ; i++)
		{
			sum = sum + score[i];
		}
		System.out.println(sum); //  240
		
		double avg = (double)sum / 3;
		System.out.println(avg); // 80.0

		// ---------------------------- 방법 2 ----------------------------
		
		int[] arr = new int[3];
		for (int i = 0 ; i < arr.length ; i++) {
			System.out.println("arr[" + i + "]" + " = "+arr[i]); // 0 0 0
		}
		arr[0] = 10;
		arr[1] = 20;
		arr[2] = 30;
		
		for (int i = 0; i < arr.length ; i++) {
			System.out.println("arr[" + i + "]"+ " = "+arr[i]); // 10 20 30
		}

	}

}

 

배열이란 같은 자료형의 값들을 여러개 받을 수 있는 구조입니다

 

어떠한 구조인지 대충 그림으로 표현한다면 이러합니다.

 

    score[0]       score[1]       score[2]

90 80 70 ....

 

또한 배열은 객체입니다. 그래서 Heap영역에 저장되고 그걸 참조하는 형식이죠

[0] , [1] ... 이러한 것들로 그 값에 접근합니다. [0], [1] 이러한 걸 인덱스라고 합니다.

참고로 String도 char의 배열입니다.


선언 방식은 크게 2가지입니다.

 

1. 선언과 동시에 값 넣기

 int []    score   = { 90 , 80 , 70 };

자료형  배열명  = 값들


1번의 특징은 배열의 크기를 안 정해줍니다. 하지만 값에 갯수에 따라 배열의 크기가 정해집니다.

하지만 뒤늦게 값을 추가할 순 없습니다.

 

2. 선언후 뒤에 값을 넣기

 

int[] arr = new int[3];

 int []    arr      = new int[3];

자료형  배열명  = new 배열 크기

 

arr[0] = 10;
arr[1] = 20;

arr[2] = 30;

 

2번의 특징은 3자리의 크기만큼 정해줍니다. 그리고 값을 나중에 추가할 수 있습니다.

 

저같은 경우는 2번같은 방법을 많이 썼습니다. 

arr.length배열의 크기를 구하는 메소드 입니다.

메소드가 뭐냐면 많이 썼던 것이 System.out.println("score[2]" + score[2]); 인데 무슨 동작을 해주는 역할을 해줍니다.

 

이거같은 경우는 출력해주는 역할을 해주죠 안에는 복잡한 구조로 돌아가지만

이러한 메소드(함수)를 만든 사람이 편하게 사용하라고 만든 것입니다. 복잡하게 출력하는 내용을 적을 필요 없이

System.out.println이라는 것만 쓰면 됩니다. 

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형
반응형

 

package string;

public class StringExample {

	public static void main(String[] args) {
		
		String str1 = "박은서"; 
        	// stack에 str1이 저장되고 heap 에 string형태 박은서가 저장
		String str2 = "박은서";
		
		if (str1 == str2) { // heap영역에 박은서가 1개이고 공유함
			System.out.println("참조주소값이 같다");
		}else {
			System.out.println("참조주소값이 다르다");
		}
		
		String str3 = new String("박은서"); // 나중에 값이 정해지는 경우
		String str4 = new String("박은서"); 
		
		if (str3 == str4) {
			System.out.println("참조주소값이 같다");
		}else {
			System.out.println("참조주소값이 다르다"); //heap영역에 박은서가 2개임
		}
		
		if (str3.equals(str4)) { // 문자열값은 같음
		System.out.println("str3 과 str4 는 문자열이 같음");
		}

	}

}

Char이라는 문자 하나만 받는 자료형이 있었죠? 그러면 문장으로 받을 수 있는 자료형은 없을까요?

만약 없다면 char를 + 로 붙혀가면서 해야하는 엄청 불편이 있습니다.

네 정답은 있습니다. String이라는 것입니다.

 

여기서 str1 str2를 변수라고 하지 않습니다. 객체라고 부릅니다. 그 이유는 나중에 클래스를 공부하면서 알아봅시다

 

객체라고 불리는 것들의 값을 비교하려면 .equals를 써야합니다. ==는 그 참조 주소값을 비교하는 걸 의미합니다.

그림으로 str1 , str2의 관계 str3 , str4의 관계를 보여드리겠습니다.

 

 

str1 과 str2는 똑같은 걸 참조하지만 str3과 str4는 다릅니다. 하지만 str3과 str4의 문자열은 같은 거죠

Heap 영역과 Stack 영역에 대해선 나중에 알려드리겠습니다.

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형
반응형
package for_while;

public class BreakContinue {

	public static void main(String[] args) {
		
		for (int i = 0 ; i <= 100 ; i = i + 2) {
			if(i >= 20 ) {
				break;
			}else {
				continue;
			}
		}
	}

}

continue와 break에 대해서 알아봅시다.

 

continue란 진행하다라는 의미죠 원래 중괄호가 끝나야 다시 위로 올라가서 i = i + 2를 하지만

continue를 만나면 바로 i = i + 2를 해주고 i <= 100을 합니다.

 

break란 중단하는 것이죠 반복문을 빠져나오게 합니다. for문이 2개라면 break문이 있는 for문을 탈출합니다.

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형
반응형

 

package for_while;

public class While {

	public static void main(String[] args) {
		
		int sum = 0;
		int i = 1;
		
		while (i <= 100) { // 참이면 실행
			sum += i;
			i++;
		}
		System.out.println(sum);
	}

}

 

package for_while;

import java.util.*;

public class DoWhile {

	public static void main(String[] args) {
		int sum = 0;
		int i = 1;
		do {
			sum += i;
			i++;
		}while (i <= 100);
		System.out.println(sum);

	}

}

while문도 for문과 동일하게 반복문입니다. 하지만 형태가 조금 다르죠

while문도 동일하게 조건에 맞으면 반복합니다. 하지만 i++같이 따로 설정은 안 해두면 영원히 반복할 수 있습니다.

 

do while의 경우 while문인데 먼저 실행하고 while문 조건을 나중에 따집니다.

 

 

https://github.com/SungJLee/My_Java_World.git

 

SungJLee/My_Java_World

Contribute to SungJLee/My_Java_World development by creating an account on GitHub.

github.com

 

반응형