no image
[java] 클래스 필드
☕ 예제 public class PersonTest2 { public static void main(String[] args) { Person p1 = new Person(); Person p2 = new Person(); p1.name = "홍길동"; p2.name = "조조"; System.out.println(p1.name); System.out.println(p2.name); System.out.println(p1.count); System.out.println(p2.count); p1.count++; System.out.println(p1.count); System.out.println(p2.count); p2.count++; System.out.println(p1.count); System.o..
2023.03.13
no image
[java] 인스턴스 필드 & NullPointException 왜 발생할까?
☕ 클래스 메소드 vs 인스턴스 메소드 - 인스턴스 별로 다르게 동작해야 한다면 인스턴스 메소드 - static 메소드는 객체 생성이나 유틸리티 관련에서 사용될 때가 있다 - 되도록 인스턴스 메소드를 사용한다 ☕ 필드(filed) - 클래스가 가지는 속성을 자바 언어에서는 필드라고 말한다 - 다른 언어에서는 멤버 변수라고 말하는 경우도 있다 - 필드는 어떤 키워드와 함께 사용하느냐에 따라서 사용법이 달라진다 - static 이라는 키워드가 함께 사용되는 필드는 클래스 필드, 함께 사용되지 않는 필드는 인스턴스 필드라고 한다. ☕ 필드 선언 방법 - [접근제한자] [static] [final] 타입 필드명 [= 초기값]; ☕ 필드 선언 방법 - 대괄호 안에 있는 내용은 생략 가능하다는 뜻이다 - 접근 제한..
2023.03.13
no image
[java] static 메소드
☕ 메소드 선언 방법 [접근 제한자] [static] 리턴 type 메소드 이름([매개변수, ....]){ 실행문 ..... } * 대괄호 생략 가능 [ ] - 메소드 이름은 앞에서 설명한 식별자 규칙과 같습니다. 다만, 메소드 이름은 소문자로 시작하는 것이 관례입니다. ☕ static한 메소드는 인스턴스를 생성하지 않아도 호출할 수 있다. // 클래스명.메소드명 VendingMachine.printVersion(); ☕ 예제 VendingMachine.java public class VendingMachine { // field (가지는 것들) // 생성자 // 메소드 public String pushProductButton(int menuId) { System.out.println(menuId + "..
2023.03.09
no image
[java] 메소드 추가하기
☕ 객체지향의 핵심은 "메시징" - 의도는 "메시징"이다. 훌륭하고 성장 가능한 시스템을 만들기 위한 핵심은 모듈 내부의 속성과 행동이 어떤가보다 모듈이 어떻게 커뮤니케이션하는가에 달려있다. - 즉, 메시징은 객체가 다른 객체의 메소드를 호출하는 거다. ☕ 객체는 자율적인 책임을 가진다 - 자율적인 객체란 스스로 정한 원칙에 따라 판단하고 스스로의 의지를 기반으로 행동하는 객체다. 객체가 어떤 행동을 하는 유일한 이유는 다른 객체로부터 요청을 수신했기 때문이다. 요청을 처리하기 위해 객체가 수행하는 행동을 책임이라고 한다. - 자율적인 책임의 특징은 객체가 어떻게 해야 하는가가 아니라 무엇을 해야하는가를 설명한다는 것이다. ☕ 메소드 선언 방법 [접근 제한자] [static] 리턴 type 메소드 이름(..
2023.03.09
no image
[java] 필요한 개수만큼 인스턴스를 생성하자
☕ main 메소드가 없는 클래스는 실행되지 않는다 *중요: 암기* ☕ 인스턴스를 만드는 3가지 방법 *중요: 암기* 1. new 연산자와 생성자를 이용하여 인스턴스를 만드는 방법 2. 클래스 로더를 이용하는 방법 3. 메모리에 있는 인스턴스를 복제하여 만드는 방법 ☕ 인스턴스, 레퍼런스타입, 레퍼런스 변수 구별하자!
2023.03.09
no image
[java] 클래스 선언하기
☕ 클래스 - 클래스는 필드와 메소드를 가진다 - 필드는 클래스의 속성이라고 말할 수 있다. - 메소드는 클래스의 기능이라고 말할 수 있다. * 자바는 함수라 말하지 않고 메소드라고 말한다. ☕ 클래스 선언 방법 - 첫문자가 문자나 '_', '$'의 특수문자로 시작되어야한다. 숫자로 시작할 수 없다 - 첫문자가 아니라면, 문자나 '$'의 특수문자 그리고 숫자로 구성될 수 있다. jdk8 에서는 한글자로 이뤄진 변수는 예약어로 정의 되어있기 때문에 사용할 수 없다. - 자바의 예약어는 식별자로 사용할 수 없다. - 자바의 식별자는 대소문자를 구분한다 - 식별자 길이는 제한이 없고 공백은 포함할 수 없다. ☕ 프로그래머들간의 관례 - 클래스명은 대문자로 시작한다. - 단어와 단어가 만날 경우 2번쨰 단어의 ..
2023.03.09
no image
[java] 객체지향문법
☕ 객체지향 프로그래밍 - 객체지향프로그래밍은 컴퓨터 프로그래밍의 패러다임 중 하나다. 객체지향 프로그래밍 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고 받고 데이터를 처리할 수 있다. ☕ 객제지향 프로그래밍 용어 설계 도면을 통해 객제지향 용어를 설명하겠다. - 설계도면: class - 설계 도면을 보고 실제로 만들었다: object, instance => 현실에 존재할 인스턴스가 어떻게 동작할까 라는 것을 고민하는 것이 객제지향 프로그래밍이다. ☕ 인스턴스를 특별한 이름으로 불러주고 싶다면? - 참조형 변수를 선언한다 - 참조 되지 않은 인스턴스? 쓰레기
2023.03.08
no image
[java] 반복문과 label
☕ break와 continue문의 한계 - break는 현재 반복문을 빠져나가는데 사용한다 - contuinue는 continue문 아래 부분을 실행하지 않고 다시 반복한다 - 그렇다면 중첩 반복문을 한번에 빠져나가려면? continue이하를 실행하지 않고 한번에 중첩 반복문을 반복하려면 어떻게 해야할까? ☕ 예제 1 public class LabelExam1 { public static void main(String[] args) { outter: for (int i = 0; i < 3; i++){ for (int k = 0; k < 3; k++) { if (i == 0 && k == 2) break outter; System.out.println(i + "," + k); } } } } // 결과값 ..
2023.03.08
no image
[java] 반복문 for
☕ for - for문은 반복문 중 하나다 - while문은 변수 선언, 탈출 조건식, 증감식이 3줄로 이뤄지지만, for문은 한줄에 모두 표현한다. ☕ for 사용법 for(변수 초기화; 탈출 조건식; 증감식){ 탈출 조건식이 참인 경우 실행되는 부분 } ☕ 예제 1 - *을 10번 출력한다 public class ForExam1 { public static void main(String[] args) { for(int i=0; i "hello1" - 문자열 + 불린 "hello" + true ---> "hellotrue" - 문자열 + 실수 "hello" + 50.4 ---> hello50.4 // 1단 구구단 => 1*9=9 public class Gugudan1 { public static voi..
2023.03.08