Language

    컴파일에 대해서

    본 강의를 보고 정리한 내용이다. 인터프리터 코드 -> 이해(분석) -> 실행 컴파일러와 달리 목적파일이 없고, 소스코드를 분석하여 바로 실행한다. 컴파일 사람이 이해하기 쉬운 언어를 기계가 이해할 수 있는 언어로 변경해 준다. 즉, 프로그래머가 작성한 코드를 분석하여 이해한 뒤, 이를 기계가 이해할 수 있도록 기계어로 변경한다. 코드 -> 이해(분석) -> 목적파일 생성 -> 실행파일 -> 실행 Java, C 로 작성된 코드를 이해(분석)하는 과정을 거쳐 기계어로 작성된 목적파일을 생성. 이후, 운영체제의 요건에 맞게 또는 여러 라이브러리를 목적파일에 코드를 추가하여 실행파일을 만든다. 목적파일을 실행파일로 만드는 것을 링크라고 한다. 목적파일은 여러 개가 존재할 수 있으며, 이를 하나의 실행파일로 만..

    [JAVA] == 과 equals 비교

    == 비교 primitive type : 값 비교 reference type : 주소 비교 equals 비교 public boolean equals(Object obj) { return (this == obj); } 내부적으로 == 연산자 사용. 즉, 주소를 비교함 string 객체의 equals public boolean equals(Object anObject) { if (this == anObject) { return true; } if (anObject instanceof String) { String anotherString = (String)anObject; int n = value.length; if (n == anotherString.value.length) { char v1[] = val..

    네이밍 컨벤션

    클래스 이름 CapWords ex) ClassName 예외 이름 예외도 클래스이므로 클래스 네이밍 규칙을 따름 항상 접미사는 "Error"를 사용 ex) ErrorClassName 함수 및 변수 이름 스네이크 케이스 ex) function_name 예약어와 충돌이 나는 경우 뒤에 밑줄 사용 ex) class_ private 메서드일 경우 앞에 밑줄 사용 ex) _class 상수 대문자와 밑줄 사용 ex) MAX_OVERFLOW

    [Java] 주석은 컴파일 단계에서 어떻게 될까?

    주석을 많이 달면 프로그램의 성능에 저하가 생길까? 이 부분에 대한 궁금증을 해결하기 위해 바로 실습을 해보았다. 일단 자바 코드가 컴파일되었을 때 주석이 남는지 확인을 해야 한다. // Test.java public class Test { public static void main(String[] args) { // this is comment. do you see? double a = 10/3; System.out.println(a); } } 자바 코드에서 "this is comment. do you see?" 부분이 바이트 코드에서 보이는지 확인을 하기 위해 먼저 컴파일을 시도한 후, 역 어셈블러(javap)를 이용하면 바이트 코드를 확인할 수 있다. // 컴파일 javac Test.java // ..

    [Java] 로그 구하기

    Math.log - Math 클래스의 log 메서드 사용 - 밑을 정해주고 싶으면 아래와 같이 로그 공식을 사용 System.out.println(Math.log(3));// 1.0986122886681098 System.out.println(Math.log(10)/Math.log(2));//3.3219280948873626