Java

    실행을 위해서 왜 main 메서드가 필요한 것인가요?

    📝느낀 점 당연히 자바는 main() 메서드를 작성해야 동작한다는 룰이 있는 거겠지 하며, "그런가 보다" 하고 넘기기만 했다. 하지만 이런 생각은 개발자로서 위험하겠다는 생각을 하였고, 다시 자바에 대해 하나하나 찾아보고 기록을 남기려고 한다. main() 메서드를 작성 함으로써 자바 프로그램의 진입점을 알려주는 것과 같은 것이다. 그리고 String [] args는 프로그램 실행 시 JVM이 String 배열을 생성하여 매개변수로 전달한다는 사실도 알게 되었다. 왜, 실행을 위해서 main 메서드가 필요한 것인가요? 이유는 프로그램이 실행되는데에 있어서 자바 프로그램의 진입점은 main() 메소드이기 때문에 반드시 있어야 한다는 것입니다. 즉, 자바는 main 메서드를 프로그램 실행의 시작 기점으로 ..

    System.out.println() 내부 동작원리

    📝느낀 점 평소엔 그냥 콘솔에 출력만 했었지, 정확히 어떤 내부 동작인지 모르고 사용해 왔다. 그렇기에, 이번 기회에 내부 동작이 어떤지? 알게되어 좀 더 명확해 졌다는 생각이 들었다. out 이라는 클래스 변수와 println()이라는 메서드 모두 static으로선언되어 있기 때문에, 나는 별도의 클래스 객체 생성 필요 없이 사용할 수 있었던 것이다. public class Main { public static void main(String[] args) { System.out.println("Hello"); } } System은 java.lang 패키지에 속하는 클래스다. java.lang 패키지는 컴파일 단계에서 암묵적으로 import java.lang.* 를 추가 해준다. 따라서, java.lan..

    책임, 위임, 협력

    책임, 위임, 협력 메시지 전송(메시징) 메시징의 의미는 객체가 또 다른 객체의 public method 통해 어떠한 행위를 하라고 명령하는 것으로 필요하다면 데이터를 담아서 보낼 수도 있다. 왜 메시징을 보내야 할까? 한 클래스 안에서 다 해결하면 안 되는 것인가? SOLID의 SRP원칙 에 의해 하나의 클래스는 하나의 책임만 갖도록 설계해야 한다. 그렇기 때문에 자신이 못하는 것을 누군가 대신 해주 길 원할 때, 그것을 해줄 수 있는 객체에게 메시징을 하는 것이다. 덧붙이자면 이것을 행위의 책임을 위임했다 해서 위임이라 한다. 메시지 전송(메시징)은 메시지에 수신자가 더해진 형태이다. 오퍼레이션명은 메소드명을 말함 dog.drink(water); // 풀이해보자면 밑을 보자. dog .drink (w..

    자바 네이밍 규칙

    자바 네이밍 규칙 클래스 이름 클래스 이름은 파스칼 표기법(pascal case)을 따릅니다. -> 모든 단어의 첫번째 문자를 대문자로 시작하고 나머지는 소문자로 표시 ex) 클래스명 예시 public class HelloWorld { } 변수 이름 변수 이름은 카멜 표기법(camel case)을 따릅니다. -> 첫번째 단어는 전부 소문자 표시하고, 이후 각 단어는 첫번째 문자는 대문자로 나머지는 소문자로 표시 ex) 변수명 예시 int englishScore; 메소드 이름 메소드 이름은 카멜 표기법(camel case)을 따릅니다. -> 첫번째 단어는 전부 소문자 표시하고, 이후 각 단어는 첫번째 문자는 대문자로 나머지는 소문자로 표시 -> 메소드는 동작에 관련된 내용이므로 첫 단어는 동사로 시작합니다..

    Java Style Guide

    Java Style Guide 패키지 이름은 소문자로 구성 나쁜 예시 package com.navercorp.apiGateway package com.navercorp.api_gateway 좋은 예시 package com.navercorp.apigateway 소스파일당 1개의 탑레벨 클래스를 담기 나쁜 예시 public class LogParser { } class LogType { } 좋은 예시 public class LogParser { // 굳이 한 파일안에 선언해야 한다면 내부 클래스로 선언 class LogType { } } static import에만 와일드 카드 허용 나쁜 예시 import java.util.*; 좋은 예시 import java.util.List; import java.uti..