다른 프로그래밍 언어에는 함수라는 것이 별도로 존재한다. 하지만 자바는 클래스를 떠나 존재하는 것은 있을 수 없기 때문에 자바의 함수는 따로 존재하지 않고 클래스 내에 존재한다. 메소드란? 자바는 이러한 클래스 내의 함수를 메서드라고 부른다. 믹서기 비유 * 믹서기에 과일을 넣는다. * 그리고 믹서를 이용해서 과일을 갈아서 과일 쥬스를 만들어 낸다. * 우리가 믹서기에 넣는 과일은 입력이 되고 과일 쥬스는 그 출력(리턴값)이 된다. 입력을 가지고 어떤 일을 수행한 다음에 결과물을 내어놓는 것 메소드 사용 이유 가끔 프로그래밍을 하다 보면 똑같은 내용을 자신이 반복해서 적고 있는 것을 발견할 때가 있다. 이 때가 바로 메서드가 필요한 때이다. 여러 번 반복해서 사용된다는 것은 언제고 또다시 사용할 만한 가..
객체 변수는 공유되지 않는다. main 메서드 변경 class Animal { String name; public void setName(String name) { this.name = name; } } public class Sample { public static void main(String[] args) { Animal cat = new Animal(); cat.setName("boby"); Animal dog = new Animal(); dog.setName("happy"); } } cat객체에는 "boby"라는 이름을 대입하고 dog객체에는 "happy"라는 이름을 대입했다. 이렇게 하면 setName 메서드에 의해 다음과 같은 문장이 두번 실행될 것이다 cat.name = "boby"; do..
이제 객체 변수에 값을 대입하는 방법에 대해서 알아보자. 객체 변수에 값을 대입하는 방법에는 여러가지가 있지만 여기서는 가장 보편적인 메서드를 이용하는 방법에 대해서 알아보자. 클래스에는 객체 변수와 더불어 메서드(Method)라는 것이 있다. 메서드는 클래스 내에 구현된 함수를 의미하는데 보통 함수라고 말하지 않고 메서드라고 말한다. 메서드 추가하기 class Animal { String name; public void setName(String name) { this.name = name; } } public class Sample { public static void main(String[] args) { Animal cat = new Animal(); System.out.println(cat.na..
객체와 인스턴스 클래스에 의해서 만들어진 객체를 인스턴스라고도 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까? Animal cat = new Animal() 이렇게 만들어진 cat은 객체이다. 그리고 cat이라는 객체는 Animal의 인스턴스(instance) 이다. 인스턴스라는 말은 특정 객체(cat)가 어떤 클래스(Animal)의 객체인지를 관계위주로 설명할 때 사용된다. 즉, "cat은 인스턴스" 보다는 "cat은 객체"라는 표현이 "cat은 Animal의 객체" 보다는 "cat은 Animal의 인스턴스" 라는 표현이 훨씬 잘 어울린다. class Animal { } public class Sample { public static void main(String[] args) { Animal ca..
객체 지향 프로그래밍이란? 계산기 만들기 class Calculator { static int result = 0; static int add(int num) { result += num; return result; } } public class Sample { public static void main(String[] args) { System.out.println(Calculator.add(3)); System.out.println(Calculator.add(4)); } } 실행 흐름 클래스 Cal 가 실행된다. Cal 클래스의 main 메서드가 호출된다. Calculator.add(3) 이 호출된다. add 메서드에서 result 변수에 3이 더해진다. result 변수는 현재 3이다. result..

조심할 부분 예제) 이런 코드가 있습니다. int[][][] b= new int[2][2][2]; 이 때, b의 자료형? Int[ ][ ][ ] b[0]의 자료형? Int[ ][ ] b[0][0]의 자료형? Int[ ] b[0][0][0] 자료형? Int 이 때? b =10 가능? No why? 주어진 코드에서 b의 자료형은 int[ ][ ][ ]이다. 즉, 3차원 배열이란 소리. 먼저, b[0]은 배열의 첫 번째 차원에서 첫 요소인 int[ ][ ] 타입의 배열이다. 이 배열은 2차원 배열이다. b[0][0]은 b[0]에서 첫 번째 요소인 int[ ] 타입의 배열이다. 마지막으로 b[0][0][0]은 b[0]에서 첫 번째 요소인 int 타입의 값이다. 따라서 b=10; 은 잘못된 문법이다. b는 3차원..
while(true) 하고 박아두고, if(조건1) ~~~ 뭐 요런 식으로 하면 가장 간편하긴 하다. public static void main(String[] args) { while (true) { if (조건1) { break; } if (조건2) { continue; } if (조건3) { continue; } } 그런데 이건 code smell 이라고 하여 매우 지저분한, 지양해야할 코드로 판단한다. 그래서 필요한 부분만 조건에 야무지게 걸어서 코드를 정돈하면, 훨씬 더 깔끔한 코드를 짤 수 있게 될 것이다. 여기에 강사님 설명을 덧붙이자면 두번째 질문은 break, continue를 많이 쓰면 소스가 지저분 해진다기 보다 무한루프에 break, continue 같은 구조로 만들기 때문에 생각을..
숫자야구 배열 코드 package megait.backend_lecture.Day08; import java.util.Random; import java.util.Scanner; //배열 숫자 야구 //1. 컴퓨터 랜덤 숫자 생성 단, 중복제거 필요 //2. 유저 숫자 입력 단, 1~9값만 허용, 중복허용 X //3. 컴퓨터 랜덤 숫자와 유저 입력 숫자 비교 //3-1. 자리와 숫자가 같으면 strike //3-2. 숫자는 같지만 자리가 다르면 ball //3-3. strike, ball이 없으면 out //3-4. 3 strike -> 홈런 프로그램 종료 //3-5. 홈런이 나오기 전까지는 strike ball을 출력 or out 출력 public class BaseballArray_T { public..