안녕하세요 java를 독학중인 한 학생입니다...
이렇게 오유의 첫 글을 질문글로 작성할 줄은 몰랐네요 ㅠㅠ
사실 생활코딩에 질문을 올릴까 생각을 해보다 무언가 하수의 레벨에서 쭈꿈거리는 제가 무작위의 사람들 앞에 놓이기 보다는 그나마 오유의 사람들 앞에서 부끄러움 당하는게 나을 것 같아 이곳에 글 올려봅니다.
문과+처음 독학해보는 언어이기에 모르는 부분이 있으면 가능한 검색하며 확인하고 있는데 지금 제가 이해하는 부분과 제 눈 앞에서 벌어지는 상황들이 상충하여 질문 드려봅니다.
-----------------------------------------------------------------
환경변수라는 존재에 대해 검색을 통해 조금 알아보았습니다. 특히 자바 언어를 다루기 위해 classpath라는 환경변수가 중요하다는 사실을 배웠습니다.
cmd가 탐색하고 있는 위치(.)외의 폴더에 필요한 클래스 파일이 있을 경우 이를 끌어와 쓰기 위해서 classpath를 설정해주는 것으로 이해하였습니다.
그런데 classpath를 설정하지 않고도 멀쩡하게 제가 작성한 코드가 돌아가서 조금 혼란에 빠졌습니다.
그래서 어디가 문제인지 확인해보기 위해 여기 저기 코드를 망쳐도 보고 아예 다른 폴더에 새롭게 작성도 해보고 여러 시도를 해보았지만 여전히 작동하기에 더욱이 혼란스러운 상황입니다.
현재 제 코드의 상황을 설명드리겠습니다
\java
ㄴCircleArPer.class, CircleArPer.java (메인함수 있는 파일)
\java\circle
\java\circle\area \java\circle\perimeter
ㄴCircle.class, Circle.java ㄴCircle.class, Circle.java
area폴더와 perimeter폴더에 들어있는 클래스 이름은 동일하나 다른 메소드를 갖고있습니다. 이건 제가 지금 따라가고 있는 교제의 예제때문에 이렇게 작성했습니다.
코드는 다음과 같습니다.
//CircleArPer.java
class CircleArPer
{
public static void main(String[] args)
{
circle.area.Circle c1=new circle.area.Circle(2);
circle.perimeter.Circle c2=new circle.perimeter.Circle(3);
System.out.println("반지름이 2인 원의 넓이는"+ c1.area());
System.out.println("반지름이 3인 원의 둘레는"+ c2.perimeter());
}
}
//area 폴더안의 Circle.java
package circle.area;
public class Circle
{
double rad;
final double pi;
public Circle(double r)
{
rad=r;
pi=3.141592;
}
public double area()
{
return (rad*rad)*pi;
}
}
//perimeter 폴더안의 Circle.java
package circle.perimeter;
public class Circle
{
double rad;
final double pi;
public Circle(double r)
{
rad=r;
pi=3.141592;
}
public double perimeter()
{
return (rad*2)*pi;
}
}
========================================================
제가 이해한 바로는 classpath로 .\circle\area; .\circle\perimeter;를 추가해주어야 메인 함수가 작동할 줄 알았는데 환경변수를 추가해주지 않고도 동작하니 당황스럽습니다.
혹시 저의 지식이나 이해에 오류가 있다면 바로잡아주시면 감사하겠습니다!