public static void main(String[] args) {
}

int x = 5와
Integer x = new Integer(5)는
다르다.
윗줄은 단순히 int 원시자료형을 담은 변수일 뿐이지만 아랫줄은 int 원시 자료형을 object로 ‘Wrap’해준 명령어이므로 자바에서 기본적으로 제공하는 해당 객체 소속 기능들을 전부 사용할 수 있게 된다.
파일 디렉토리 계층 구조를 살펴보니
Project > src > package > class 순으로 이루어져 있다.
즉, 모든 소스코드들은 패키지 안에 각각 분류되어 있으며, 기능 구현 단위는 class로 하는 것 같다. 해당 class 안에는 다수의 함수들이 들어있다.
아마 파이썬에서 코딩테스트를 풀던 식으로 생각해보면, 기능 단위들을 전부 class 형태로 나누고, 해당 class 내에서 필요한 자잘한 함수들도 안에 넣어두되, 만약 다른 class들 간에도 자주 사용되는 함수라면 차라리 instance로 변환하여 사용한다.. 정도 될 것 같다.
int num1;
static int num2; public static int sum(int a, int b) {
return a + b;
}
public static void main(String[] args) {
int a = sum(5, 10);
System.out.println("%d", a);
}
class Updater {
public void primitiveUpdate(int count) {
count++;
public void objectUpdate(Counter counter) {
counter.count++;
}
}
public class Counter {
int count = 0;
public static void main(String[] args) {
Counter myCounter = new Counter();
Updater myUpdater = new Updater();
myUpdater.primitiveUpdate(myCounter.count);
myUpdater.objectUpdate(myCounter);
}
}
생각해보면 그래야 할 것이, Main이라는 함수? 클래스? 는 프로그램 실행동안 한 번만 실행되어야 하는 존재이기 때문에 이 메인함수를 통해 static의 성질을 조금은 유추해볼 수 있지 않나.. 해서 갑자기 이렇게 적어봤다.
프로그래밍 언어라는 것도 결국 사람이 만들었고, 룰 역시 합리적으로 정해나가는 것이기 때문에 생각보다 언어라는 게 어려운 존재는 아닌 것 같다.
long m = 25; // int 타입이 long타입으로 변형
double d = 3.14 * 10; // 10 -> 10.0 (?) 예시가 잘못된 것 같은데 ``` double d = 1.9;Scanner scan = new Scanner(System.in);
String name = scan.next();
String city = scan.next();
...
진짜 모든게 패키지로 돌아가는구나. 완전 레고같다.
Scanner scanner = new Scanner();
while (scanner.hasNext()) {
...
}
...
반드시 선언된 다음에 접근해야 한다.
배열의 사이즈는 'length' field에 저장된다.
배열도 어쨌든 wrapped object라고 보면, field와 method가 존재할 것이며 어떤 배열 객체를 선언만 했다는 것은 생성된 시점에 굳이 배열의 크기를 적어두지 않았다는 것이다. 나중에 그 배열의 length나 원소들을 직접 넣어주었다면 그때 비로소 이 배열 객체의 field값이 업데이트되어 배열 역할을 할 수 있는 것이다.
이는 원시 참조형 객체가 아닌 내가 선언한 객체에 대해서도 동일하게 적용된다.
신기하다!!!
int scores [];
int[] scores;
scores = new int[4];
int[] scores = new int[4];
int[] scores = {100, 95, 87, 91};
for(int i = 0; i < members.length; i++
for(String name : members) {
System.out.println(name); // members라는 객체에 있는 값들 중 name이라는 것을 전부 프린트해주는 것.
// 아마 자동으로 해당 객체의 field 값 중에서 찾아내는 것 같다. method를 찾진 않겠지.
}