Language/Java

    컴파일에 대해서

    본 강의를 보고 정리한 내용이다. 인터프리터 코드 -> 이해(분석) -> 실행 컴파일러와 달리 목적파일이 없고, 소스코드를 분석하여 바로 실행한다. 컴파일 사람이 이해하기 쉬운 언어를 기계가 이해할 수 있는 언어로 변경해 준다. 즉, 프로그래머가 작성한 코드를 분석하여 이해한 뒤, 이를 기계가 이해할 수 있도록 기계어로 변경한다. 코드 -> 이해(분석) -> 목적파일 생성 -> 실행파일 -> 실행 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..

    [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

    [Java] 스택 사용하기(Stack Class)

    스택(Stack Class) Stack 자료구조를 자바로 구현한 클래스입니다. Vector 클래스를 상속받아 구현되었고, 기본적인 기능인 push, pop 외에도 세 가지 기능을 더 제공합니다. 1. 스택 생성하기 java.util.stack 패키지를 import 한 뒤, Stack() 생성자를 이용하여 스택을 생성합니다. Stack stack = new Stack();// E: Object 유형 2. 요소 삽입 push()를 사용하여 스택의 가장 뒤에 요소를 삽입합니다. Stack stack = new Stack(); stack.push("스택"); stack.push("푸시"); stack.push("하기"); System.out.println(stack);// [스택, 푸시, 하기] 3. 첫 번째 ..