패키지(Package)
비슷한 성격의 자바 클래스들을 모아놓은 자바의 디렉토리
클래스 간의 이름 중복으로 발생하는 충돌을 막아준다.
클래스를 기능 별로 분류할 수 있어 필요한 클래스의 식별에 용이하다.
다른 패키지의 클래스를 사용하고 싶을때 그 클래스의 모든 경로를 코드에 모조리 적어줘야하는데
코드가 길어지고 복잡해 지기 때문에
import문을 사용하여 패키지를 참조하면 하위 폴더의 경로는 생략할 수 있다.
import java.util.*;
public class main{
public static void main(String[] args){
Scanner scanner= new Scanner(System.in);
int num = scanner.nextInt();
}
}
클래스(Class)
하나의 사물을 하나의 클래스로 설명할수있다.
사물은 1.이름과 번호 2.기능으로 구성된다.
사물의 이름과 번호를 필드(Field)라고 하며 전진, 후진과 같은 기능을 메소드(Method)라고 한다.
class Tv{
//Tv의 속성(필드)
String color;
boolean power;
int channel;
//Tv의 기능(메소드)
void power() {power = !power;}
void channelUp() {++channel;}
void channelDown() {--channel;}
}
class TvTest {
public static void main(String args[]){
Tv t; //t는 Tv의 인스턴스
t = new Tv();
t.channel = 7;
t.channelDown();
System.out.println("현재 채널은 "+ t.channel +" 입니다.");
}
}
실행결과
현재 채널은 6 입니다.
메소드(Method)
클래스의 기능을 의미하며 수학에서 함수와 같은 역할을 한다.
*메소드는 함수와는 다르게 입력값 또는 출력값이 없을 수도 있다.
입력값 -->> 메소드(블랙박스) -->> 리턴값
매개변수(Parameter) : 전달된 인자를 받아들이는 변수
인자(Argument) : 어떤 함수를 호출시에 전달되는 값
public static void main(string args[])
public은 접근제어자라고 하는데 멤버 또는 클래스에 사용되어 외부의 접근(클래스 및 메소드, 변수 등)을 제한하는 역할을 한다.
접근제어자의 종류에는 default, private, protect, public이 있다. 접근제어자를 생략할 경우 자동으로 default를 뜻하게 된다.
default : 같은 클래스 내에서만 접근 가능
private : "
protected : 동일한 패키지에 속하는 클래스에서 접근가능. 자신을 상속 받은 클래스에서도 접근가능
public : 모든 클래스에서 접근가능
main은 프로그램의 시작점인데 접근제어자에 의해 타 클래스들이 접근을 하지 못한다면 문제가 생길 수 밖에 없기 때문에
가장 중심이 되어야 할 main은 모든 접근을 허용하는 public을 사용한다.
static은 main()메소드가 메모리에 인스턴스되는 공간의 주소가 똑같음을 의미한다. main 메소드는 프로그램의 시작과 끝을
함께 하기 때문에 일정 시간만 살아남고 폐기 될 이유가 없다. static이 선언되면 프로그램이 종료되는 시점까지 메모리가
유지되고 그에 따라 메모리 점유를 줄이고 수행 속도를 증가시키며 메모리의 같은 주소만 참조하여 사용하기 때문에 메모리의 낭비를 막을 수있다.
void는 main()메소드의 리턴값이 아무 것도 없다는 것을 의미한다. main 자체가 프로그램의 시작과 끝이므로 반환값이 없다.
String args[]는 문자열 배열을 뜻하며 커맨드 라인에서 자바를 실행시킬때 매개변수를 전달 할수 있게 하기위해 사용한다.
ex)커맨드라인 명령어의 옵션 $ls -al, >dir *.txt 등...