//////
Search

220923

숙제 리뷰
int math, korean, english; double avg = (math + korean + english) / 3;
Java
복사
(math + korean + english) / 3 는 int타입 간의 연산이고 결과값도 int가 되므로, 형 변환이 필요함.
double avg = (double)(math + korean + english) / 3; 혹은 double avg = (double)(math + korean + english) / 3.0;
Java
복사
오늘 배운 내용

2차원 배열

int[][] arr = new int[a][b] // a * b 행렬이라 생각하면 편함.
Java
복사
행렬로 이해해 보는 2차원 배열
메모리 상의 실제 2차원 배열
2차원 배열에 값을 입력하거나 읽는 방법 = 중첩 for문
int[][] arr = { {11}, {22, 33}, {44, 55, 66} }; // 배열의 구조대로 내용 출력 for(int i = 0; i < arr.length; i++) { for(int j = 0; j < arr[i].length; j++) { System.out.print(arr[i][j] + "\t"); } System.out.println(); }
Java
복사

생성자(constructor)

생성자 : 클래스 명과 똑같은 이름을 가진 함수, 인스턴스(객체)를 생성할 때 사용하는 함수
특징 : 리턴 타입이 없음, 다양한 매개변수를 따라 여러 함수가 생성됨.
기본 생성자(default 생성자)
개발자가 클래스 내부에 아무런 생성자도 작성하지 않을 시, 컴파일러에 의해 자동으로 작성되는 생성자.
즉, 다른 생성자가 하나라도 작성되면 기본 생성자는 작성되지 않음.
class A { // 개발자가 직접 작성한 생성자. public A (String str) { System.out.println(str); } } public static void main(String[] args) { A a = new A("안녕하세요"); A aa = new A(); // 오류 발생. // 개발자가 생성자 함수를 작성했기 때문에, 디폴트 생성자는 자동 생성X } }
Java
복사
참조 변수 this
현재 객체 스스로를 가리키는 참조 변수
참조 변수 this는, 흔히 매개 변수 이름과 필드 이름이 동일한 경우 혼동을 막기 위해 사용 됨.
class Circle { int radius; public Circle (int radius) { this.radius = radius; //this.radius는 필드, 그냥 radius는 매게변수 }
Java
복사
this() 함수
현재 클래스가 지닌 다른 생성자 함수를 호출오는 역할의 함수.
this()에 작성하는 매개변수에 따라 호출하는 생성자가 달라짐.
this()함수는 생성자 내부에서 무조건 가장 위에 작성해야 함.
class Circle { int radius; public Circle (int radius) { this.radius = radius; } // 현재 클래스가 지닌 다른 생성자 함수를 호출하는 역할의 this()함수. public Cricle () { this(0); // Circle (int radius)를 호출해 0을 대입함. 가장 위에 작성 System.out.println("반지름 = " + radius); }
Java
복사

패키지

패키지 : 비슷한 성격의 클래스를 모아 놓은 자바의 디렉토리
종류
내장 패키지 : 자바에서 기본적으로 제공하는 패키지
사용자 정의 패키지 : 개발자(사용자)가 직접 만든 패키지
패키지 사용법 : 패키지를 import하기!
import (패키지명) 형식. “ * ”기호를 사용하면 한 번에 여러 패키지를 import 가능.
import java.util.Scanner; // Scanner 를 사용하기 위해 import!! import java.util.*; // java.util 의 모든 패키지를 한 번에 import public class example { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // import로 사용 가능해짐!!
Java
복사
패키지 사용 팁
패키지 이름은 모두 소문자 (관례)
인터넷 도메인 주소의 역순으로 이름 작성. 이름 끝에는 팀 이름 혹은 프로젝트 명을 추가하기도 함 (관례)
한 패키지 내부에는 동일한 이름의 클래스 파일이 존재 할 수 없음
같은 패키지 내부에서는 클래스 간의 사용이 제한 없음
서로 다른 패키지에 있는 같은 이름을 지닌 클래스를 사용 하고 싶을땐, import 대신 (패키지명).(클래스)로 직접 사용하기
import A.Circle.space; public class example { public static void main(String[] args) { // A패키지의 Circle 클래스를 import해서 사용. Circle a = new Circle(); // B패키지의 Circle 클래스 사용을 위한 직접 사용. B.Circle b = new B.Circle();
Java
복사
JVM(자바 가상 기계)이 실행시킬 클래스를 찾아내는 방법
1.
현재 디렉토리에서 해당 클래스를 찾기
2.
환경변수에 설정된 클래스 패스를 따라서 찾기
“set classpath = 주소”
3.
사용자가 직접 설정한 클래스 패스를 따라서 찾기
“java -classpath 주소”

접근 제한자

클래스와 그 멤버인 변수, 메소드들에 관한 접근 권한을 지정하는 문법
종류
public > protected > default(제한자 사용X) > private
클래스 정의 대상
public
default
변수, 메소드 대상
public
protected
default
private
클래스 정의에 사용
public : import를 통해 어디서든 인스턴스 생성 가능
default : 동일 패키지 내에 존재하는 클래스 에서만 인스턴스 생성 가능
변수, 메소드에 사용
public : 어디서든 사용 가능
protected : 상속 된 곳이라면, 어디서든 사용 가능
default : 같은 패키지 내에서만 사용 가능
private : 해당 클래스 내에서만 사용 가능
정리

정보은닉

개념 : 클래스 외부에서 내부 특정 정보로의 직접적 접근을 막는 것.
필요성 : 클래스 내부 데이터의 손상과 오용을 막을 수 있음.
private 선언을 하고, setter와 getter 메소드를 통해서만 접근 가능하도록 함.
class Circle { private double rad = 0; final double PI = 3.14; public Circle(double r) { setRad(r); } // getter 메소드 public double getRad() { return rad; } // setter 메소드, if 문을 통해 0 이하의 숫자가 입력되는 것을 막음. public void setRad(double r) { if(r < 0 ) { this.rad = 0; return; } this.rad = r; } } public class Example6 { public static void main(String[] asgr) { Circle c = new Circle(1.5); c.rad = 1.5 // 오류 발생. private선언이라 직접 접근 불가 c.setRad(1.5); //setter를 통한 접근. c,setRad(-0.5); // 반지름이 음수가 되는 것을 setter 가 막음. } }
Java
복사