java - method call
2020. 3. 31. 12:54
📌 java/Object-oriented Programming
메소드(함수) 호출 방식 프로그래밍 언어에서 변수를 다른 함수의 인자로 넘겨 줄 수 있습니다. 이 때 이 변수의 '값'을 넘겨 주는 호출 방식을 Call by Value 이 변수의 '참조값' (혹은 주소, 포인터)를 넘겨 주는 호출 방식을 Call by Reference라고 합니다. (이외에도 Call by Assignment, Call by Name 등의 개념이 있다고 들었습니다.) 자바는 Call by Value 방식으로 동작하게 되는데 이를 증명 해 볼 수 있는 대표적인 예제가 변수의 값을 바꿔보는 함수(메소드)가 있습니다. public static void main(String[] args) { int a = 1; int b = 2; swap(a, b); System.out.println(a); ..
java - public의 의미
2020. 3. 27. 22:16
📌 java/Object-oriented Programming
`지식인 펌` 아래는 애플릿 소스인데요 여기서 class 앞에 public을 안쓰면 왜 안될가요? 실행시키면 애플릿창에 start를 초기화시키지 않았다고 나와요..public을 쓰면 접근제한이 없다는건 아는데 여기서 쓰는거랑 안쓰는거랑 뭐가 다른거죠? 자꾸 헛갈리네요~~ import java.applet.*; import java.awt.*; public class DrawingLines extends Applet { int width, height; public void init() { width = getSize().width; height = getSize().height; setBackground( Color.black ); } public void paint( Graphics g ) { g.se..
Homework_W2-02
2020. 3. 27. 18:05
📌 java/Object-oriented Programming
Q1 : 그림.2.7의 프로그램을 수정하여 사용자로부터 두 개의 이중 숫자를 수신하고 그 합계를 화면에 표시해라. 힌트: 키보드를 통해 사용자로부터 입력을 수신하려면 "스캐너 객체"의 방법을 사용하고, "시스템.out" 오브젝트의 화면 사용 방법에 출력을 표시하십시오. Q2 : 평균을 내는 세번째 방법, average()를 추가해라. 그 결과 평균이 나오게 해라
Employee.java
2020. 3. 27. 16:11
📌 java/Object-oriented Programming
// Employee.java import java.time.LocalDate; //no public key word. Why? class Employee { // three private Fields private String name; // Has-A relationship private double salary; private LocalDate hireDay; // HAS-A Relationship // one Constructor public Employee(String n, double s, int year, int month, int day) { name = n; salary = s; hireDay = LocalDate.of (year, month, day); } // 4 public Meth..
LotteryDrawing.java
2020. 3. 26. 21:31
📌 java/Object-oriented Programming
import java.util.*; public class LotteryDrawing { public static void main(String args[]) { Scanner in = new Scanner(System.in); System.out.print("How many numbers draw?"); int k = in.nextInt(); System.out.print("What is highest number?"); int n = in.nextInt(); // 배열을 1, 2, 3 .... n 으로 채워라 int[] numbers = new int[n]; for (int i = 0; i
java - txt.file
2020. 3. 26. 20:59
📌 java/Object-oriented Programming
IO패키지 Writer클래스의 자식클래스 중 하나 : PrintWriter 자주 사용되는 메서드로는, print : boolean, int, char, float, double 등등의 데이터형을 String으로 변환해서 쓰지 않고 직접 입력해줍니다. (메모장에 int형 변수값을 변수를 '숫자'의 String으로 변환하여 넣는것과는 다릅니다.) println : print할 데이터 뒤에 /r/n을 추가하여, 데이터 와 함께 개행을 출력합니다. write : write메서드 역시 존재하지만 PrintWriter을 사용할 경우는 잘 쓰이지 않습니다. 그 외에도, 다른 Writer 클래스와 같이, flush, close 등의 메서드역시 존재합니다. 생성자를 보고 짐작이 가시나요? 바로... 원본 텍스트 파일을 ..
java.util.Arrays - Arrays 클래스
2020. 3. 26. 20:57
📌 java/Object-oriented Programming
자바에서의 배열은 C언어와 조금 다르다. int[] odds = {1, 3, 5, 7, 9}; 배열은 자료형 타입 바로 옆에 [] 기호를 사용하여 표현한다. 위 예제와 같이 int 자료형의 배열은 int[] 로 표현되었다. 요일의 집합은 다음과 같이 String 배열로 표현 할 수 있다. String[] weeks = {"월", "화", "수", "목", "금", "토", "일"}; 즉, 배열이란 자료형의 종류가 아닌 자료형의 집합을 의미한다. 배열의 길이는 고정되어 있다 위에서 살펴본 요일의 집합 예제는 다음과 같이 고쳐 쓸 수 있다. String[] weeks = new String[7]; weeks[0] = "월"; weeks[1] = "화"; weeks[2] = "수"; weeks[3] = "목"..
java.util.Scanner
2020. 3. 25. 22:03
📌 java/Object-oriented Programming
문자열을 출력하는 명령은 System.out.println(); 을 사용하고 문자열을 키보드로 입력받을 때는 System.in 을 사용한다. 입력한 값을 byte단위로 읽는다. 하지만 입력받은 문자열을 읽고 처리하기 위해서 Scanner 클래스에 담아서 처리한다. Scanner 클래스는 표준 Java 클래스 라이브러리에 속하며, 다양한 타입의 입력 값들을 읽어들이기 위한 편리한 방법을 제공한다. import java.util.Scanner; public class scanner { public static void main(String[] args) { String message; Scanner scan = new Scanner(System.in); // 문자 입력을 인자로 Scanner 생성 Syste..
Homework_W2-01
2020. 3. 25. 20:58
📌 java/Object-oriented Programming
Task 1 : 두 클래스와의 관계 : 두 클래스는 둘다 default package 가 아닌걸로 분류된다. 1. Fig.3.1을 다시 쓰고 "AccountPackage"라는 패키지를 추가해라 2. Fig 3.2를 다시 쓰고 "AccountTestPackage"라는 패키지를 추가해라 3. 너가 컴파일 했을때 에러가 발생한다. 에러 원인이 무엇인가? 어떻게 에러를 고칠것인가? 에러를 고치고 스크린샷을 붙여라 AccountTest 클래스에서 Account를 읽을 수 없다. 따라서 AccountTestPachage의 Account 를 불러와야 한다. Task 2 : 클래스와의 관계 : 두 클래스는 non-default 패키지 이고 한 클래스는 default modifier이다. public이 아닌 1. 그림 ..
Homework_02
2020. 3. 20. 16:34
📌 java/Object-oriented Programming
Source code file to answer programming questions A Single java application can contain one or more packages. Each package can contain one or more classes The access modifier of a class can be public or default If a class has no package name, the class belongs to default package The name of the file of the source code is affected by the class modifier The communication between a client class and ..
java - API
2020. 3. 17. 17:52
📌 java/java
기본 패키지와 사용자 정의 로직 아래 코드를 보자. System.out.println(1); 지금까지 무수히 많은 예제에서 사용했던 코드다. 이것이 화면에 어떤 내용을 출력하는 것이라는 건 이미 알고 있다. 하지만 도대체 우리가 정의한 적이 없는 이 명령은 무엇일까?를 생각해볼 때가 왔다. 문법적으로 봤을 때 println은 메소드가 틀림없다. 그런데 메소드 앞에 Sytem.out이 있다. System은 클래스이고 out은 그 클래스의 필드(변수)이다. 이 필드가 메소드를 가지고 있는 것은 이 필드 역시 객체라는 것을 알 수 있다. 그리고 System을 인스턴스화 한 적, import한 적이 없음에도 불구하고 필드 out에 접근할 수 있는 것은 out이 static이라는 것을 암시한다. 그럼 System..
Homework_01
2020. 3. 17. 12:11
📌 java/Object-oriented Programming
클래스를 패키지에 종속시키려면 클래스 선언전에 package 키워드를 이용해 어떤 패키지에 속해있는지 정해줘야한다. 만약 정해주지 않는다면, 클래스는 기본적으로 "default package"에 속하게 되고 "default package"는 아무런 패키지 이름을 가지지 않는다. 그리고 해당 클래스를 파일 디렉토리상으로도 패키지 구조와 일치하게 이동해야 한다. 답 : System class는 JDK 와 Eclipse에 기본적으로 제공되는 패키지인 default package에 속하게 되고 "default package"는 아무런 패키지 이름을 가지지 않는다. 따라서 import java.lang*을 추가해주어도(package를 추가해 주어도) 똑같은 결과를 나타낸다. 또한 이러한 System 클래스는 ja..
java - class, public class 차이
2020. 3. 10. 22:31
📌 java/java
Program.java 라는 이름을 가진 클래스 파일로 예시를 들어보자. Program.java class Program { } 문제없이 컴파일이 잘 된다. 위 소스 파일에 아래와 같은 클래스를 하나 더 추가해보자. class Program { { class Program2 { } 역시나 문제없이 컴파일이 잘 된다. 그렇다면 아래와 같이 수정을 해보자. class Program { } public class Program2 { } Program2라는 클래스 앞에 public이라는 접근제어자를 붙였더니 이번에는 컴파일 에러가 발생한다. 그럼 아래와 같이 수정을 해보자. public class Program { } class Program2 { } 문제없이 컴파일이 잘 된다. 어떤 차이일까? 위와 같이 컴파..
java - 패키지
2020. 3. 10. 22:21
📌 java/java
패키지는 여러 사람이 만들기 때문에 이름이 중복될 수 있다. 이름의 중복을 피하기위한 방법을 찾아보자. 나한테 원래 java.txt가 있는데 누군가 나에게 java.txt라는 파일을 줬을 때 이름이 겹치는데 그때 필요한게 디렉토리이다. a 디렉토리의 java.txt가 존재해도 b 디렉토리의 java.txt가 존재할 수 있다. 전역변수와 지역변수도 이 이름의 충돌을 해소하기 위한 하나의 수단으로 볼 수 있다. 패키지 만들기 우리는 이미 패키지를 사용해왔다. 일부 IDE들은 패키지의 사용을 강제하고 있기 때문에 독자가 패키지가 무엇인지도 숙지하지 않은 상태에서 패키지를 사용한 것이다. 주제에서 어긋나는 이야기이지만 지식이라는 것이 사실은 순차적이지 않고 네트워크적이라는 점을 생각해볼 필요가 있다. 순차적인 ..
java - 클래스 패스, 환경 변수 [참고용]
2020. 3. 10. 21:30
📌 java/java
클래스 패스 클래스가 위치하는 경로를 우리가 지정해서 자바가 필요로 하는 어떤 클래스를 로드하는 방법을 지정하는 것이 클래스 패스이다. 빈 디렉터리에 아래와 같이 코드를 작성한다. 필자는 프로젝트 디렉토리에 /srcbin 이라는 디렉토리를 만들고 여기에서 실습을 진행할 것이다. 아래 예제의 파일명은 ClasspathDemo.java 이다. class Item{ } class ClasspathDemo { } 컴파일을 한다. javac ClasspathDemo.java 그 결과 두 개의 클래스 파일이 생성된다. ClasspathDemo.class Item.class 즉 클래스 하나는 하나의 클래스 파일이 된다는 것을 알 수 있다. 클래스의 경로 ClasspathDemo2.java을 만들고 내용을 아래와 같이..
java - overloading
2020. 3. 10. 11:33
📌 java/java
overloading 계산기 예제로 돌아가보자. 우리의 계산기는 2개의 값(left, right)에 대한 연산(sum, avg) 만을 수행 할 수 있다. 그런데 만약 3개의 값을 대상으로 연산을 해야 한다면 어떻게 해야할까? 우선 아래와 같이 입력값을 3개 받아야 할 것이다. c1.setOprands(10, 20, 30); 이를 위해서 기존의 setOprands 메소드를 아래와 같은 모습을 수정한다면 2개의 입력값을 받을 수 없게 될 것이다. public void setOprands(int left, int right, int third){ this.left = left; this.right = right; this.third = third; } 이런 경우 아래와 같이 메소드의 이름을 변경하면 될 것이다..