먼저 .java 클래스 파일을 컴파일해주는 컴파일러가 있고, 해당 컴파일러는 JVM이 이해할 수 있도록 .java 파일을 .class 파일, 즉 바이트코드 파일로 전환해준다.
그리고 변환된 바이트코드는 런타임 환경에서 클래스 로더에 의해 로드되고 JVM으로 넘어간다. 이때 오라클이 OS 별로 다르게 지원을 다 해주고 있기 때문에 OS 환경에 구애받지 않는 java 프로그래밍이 가능하다.
-이더리움 Remix IDE : Solidity Code를 IDE 환경에서 작성하고 EVM이 읽을 수 있도록 바로 컴파일까지 해주는 프로그램이다. 이더리움 프로그래밍에 관심있는 사람들은 한번 해보길. 외람되지만 이더리움 프로그램은 Gas 때문에 황서를 안보고는 제대로 할 수가 없다고 함..
Java는 객체 지향 언어로, 객체를 기준으로 프로그램이 동작한다. 그리고 하나의 java 프로그램은 여러개의 클래스로 구성되어 있고, 해당 클래스 안에는 여러개의 필드와 메소드가 객체를 기준으로 작성되어 있다.
아래 코드를 통해 클래스와 필드, 객체, 메소드의 구성을 살펴보자
public class Animal {
String name; // 필드
public void setName(String name) { //출력값이 없는(void) 메소드
this.name = name;
}
public static void main(String[] args){ // main 메소드
/* [main() 메소드의 의미]
특정 자바 프로그램이 실행되면 맨 먼저 main() 메소드를 찾아 그 안의 모든 명령문을 차례대로 실행
=> 따라서 하나의 자바 프로그램에는 main() 메소드를 가지는 클래스가 반드시 하나는 존재해야 함 (없으면 컴파일러에서 에러남)
*/
Animal cat = new Animal();
cat.setName("boby");
Animal dog = new Animal();
dog.setName("happy");
System.out.println(cat.name);
System.out.println(dog.name);
}
}
boby, happy
public class Test {
public int sum(int a, int b) {
return a+b; // 입출력 둘다 존재하는 메서드 sum
}
public static void main(String[] args) {
int a = 3;
int b = 4;
Test myTest = new Test(); /* Test 클래스 내에 myTest라는 새로운 객체 생성 */
int c = myTest.sum(a,b);
System.out.println(c);
}
}
그럼, 위 케이스별로 메소드가 어떻게 활용될 수 있는지 그 구조를 살펴보자.
데이터 타입은 String, Int, Char 등 워낙 많이 사용되는 대표적인 것들만 일단 기억하기로 하고 데이터 형변환에 대한 개념을 잡아보자.
Casting은 상위 데이터 타입에서 하위 데이터 타입으로 데이터 타입을 변환할때 사용되는 스킬이다.
public class Casting {
public static void main(String[] args) {
double a = 1.1;
double b = 1;
double b2 = (double) 1;
// 1을 할당함에도 불구하고, (double)을 기입해서 형변환 연산자를 적어줬기 때문에 오류 X
System.out.println(b2);
위 코드에서 결과값은 1.0이 출력된다.
그러면, int를 String으로 바꾸고 싶으면 어떻게 할까? 생코 강의를 보면서 "개발은 언어에 익숙해지는 것이요, 문법만 들여다보고 있다고 해서 익숙해지지 않는다"는 것을 깨달았다.
오늘 옆에서 일하는 엔지니어가 React Native로 앱을 개발하면서 버튼 만드는 코드 스니펫을 검색하고 해당 코드를 복붙하는 것을 보고, 그리고 생코 이고잉 님도 int to String 코드를 검색 후 복붙하는 것을 보면서 일단은 언어 활용에 익숙해지는 것이 가장 중요하다는 결론을 내렸다. Fail-fast, Learn-fast하는 것.
아무튼 아래와 같이 int => String으로 형변환이 가능하다.
public class Casting {
public static void main(String[] args) {
Integer number = 123;
String numericStr = "";
numericStr = String.valueOf(number);
System.out.println(numericStr);
}
}
출력값은 123이 나온다. 다만, 이때의 123은 정수형의 숫자 데이터가 아니라 "문자(String)" 데이터이다.