본문 바로가기

IT 개발 관련/Java

(11)
컴파일 언어와 인터프리터 언어 컴파일 언어와 인터프리터 언어 개인적으로 프로그래밍 공부를 할 때 어떠한 개념의 역사에 대해서 이해하고 나면 좀 더 기억에 남는 편이다. 그래서 역사를 간단히 적겠다. 컴퓨터 구조에 따라 사용하는 기계어가 달라지며 그에 따라 기계어에 대응되어 만들어지는 어셈블리어도 각각 다르게 된다. 초기 컴퓨터 프로그램들은 모두 어셈블리어로 작성했다. 그러나 어셈블리어는 사용하는 컴퓨터 구조에 따라 달라진다. 이러한 점으로 인해 새로운 아키텍처가 적용된 CPU가 등장한다면 매번 같은 프로그램을 새로 나온 CPU에 맞는 어셈블리어로 다시 작성해야 했다. 이러한 번거로움으로 인해 통일된 언어체계로 작성된 코드의 필요성이 대두되고, 여기서 고급 프로그래밍 언어가 등장하게 된다. 하지만 컴퓨터는 고급 언어로 작성된 코드를 바..
StringBuffer와 StringBuilder StringBuffer와 StringBuilder StringBuffer / StringBuilder 클래스는 문자열을 연산(추가하거나 변경) 할 때 주로 사용하는 자료형이다. StringBuffer / StringBuilder를 쓰는 이유 String 자료형만으로도, + 연산이나 concat() 메서드를 통해 문자열을 이어 붙일 수 있다. 하지만 덧셈(+) 연산자를 이용해 String 인스턴스의 문자열을 결합하면 내용이 합쳐진 새로운 String 인스턴스를 생성하게 되어 공간의 낭비뿐만 아니라 속도 또한 매우 느려지게 된다. 따라서 내부적으로 버퍼(buffer)라고 하는 독립적인 공간을 가지게 되어, 문자열을 바로 추가할 수 있어 공간의 낭비도 없으며 문자열 연산 속도도 매우 빠르다는 특징이 있다. 또..
String이란? String이란? String 클래스는 문자열을 다루는 클래스이며 immutable 하다는 특징이 있다. immutable은 불변이라는 단어로 String 객체에 값이 초기에 할당되면 그 값을 변경되지 않는 것을 의미한다. * String 객체가 불변객체(Immutable)인 이유 Java에서 가장 많이 사용되는 Data Type 중 하나가 바로 String 객체이다. 때문에 메모리에 대한 고민을 안 할 수가 없었다. 따라서 재사용될 가능성이 높다고 판단하여 같은 값일 경우 어플리케이션 당 하나의 String 객체만을 생성 두어 JVM의 Heap 메모리 관리를 효율적으로 하자고 했다. String 객체 생성방법 1. 리터럴을 이용하여 String 객체 생성 String a1 = "a"; 2. new 연산..
Call by value, Call by reference 정리와 차이 Call by value, Call by reference 정리와 차이 Call by Value 값을 호출하는 것을 의미합니다. 전달받은 값을 복사하여 처리합니다. 즉 전달받은 값을 변경하여도 원본은 변경되지 않습니다. Call by Reference 참조에 의한 호출을 의미합니다. 전달받은 값을 직접 참조합니다. 즉 전달받은 값을 변경할 경우 원본도 같이 변경이 됩니다. 자바에서는 오직 Call by Value로만 동작합니다. Call by value와 Call by reference의 차이에 대해서 명확하게 이해하기 위해선 method가 실행될 때 stack 영역에 쌓이는 스택 프레임이라는 개념이 중요하다. * 스택 프레임이란(stack frame)? 하나의 메서드에 필요한 메모리 덩어리를 묶어서 스..
Java : ==와 equals의 차이 Java : ==와 equals의 차이 '=='와 'equals' 모두 두 값을 비교해서 boolean type으로 반환한다는 공통점을 가진다. 하지만 오늘 수업 시간에 'equals'를 사용할 땐 실행이 되고 '=='를 사용할 땐 실행이 안 되는 오류를 겪었기 때문에 차이점에 대해서 남겨본다. 1. 형태의 차이 'equals()'는 하나의 메소드이기에 객체끼리 비교가 가능하다. '==' 은 비교를 위한 연산자이다. 'equals' ➡ 메소드 '==' ➡ 비교연산자 2. 비교하는 내용의 차이 'equals' 메소드는 비교하고자 하는 대상의 내용 자체를 비교하지만 '==' 연산자는 비교하고자 하는 대상의 주소 값을 비교한다. 'equals' ➡ 내용 비교 '==' ➡ 주소값 비교
Java : 제어문(3), 반복문 for문 반복문 For문 for문 : 가장 많이 사용하는 반복문으로 정해진 횟수만큼 실행문을 반복해야 하는 경우에 사용된다. ◆특징 - for문은 제어 조건을 한꺼번에 지정한다는 점이 다른 반복문과는 다릅니다. 따라서 정확한 반복 횟수를 알고 있을 때는 for문이 while문보다 유용합니다. - for문도 다른 제어문과 같이 실행 문장이 한 줄이면 블록 {}을 생략할 수 있습니다. -for문의 구조는 for(변수의 초기화; boolean형 실행 조건식; 증감 연산식) { 반복할 실행문; } 변수의 선언과 동시에 변수의 초기화를 시작으로 int i =0 부터 시작해서 i < 2의 조건을 만족할 때까지 반복되는 문장입니다. 순서가 중요한데 반복문의 실행순서를 보면 i = 0을 시작으로 먼저 조건식에 만족하는지 보고 ..
Java : 제어문(2) Day 5 : 제어문(2) 1 . 반복문 while While문 : 주어진 조건식의 결과가 true일 때만 주어진 명령을 반복하는 구문 ◆특징 -한번 실행하기로 결정되면 모든 타겟 실행문이 실행 -실행이 끝나면 다시 While문 처음으로 복귀 -Java의 경우 조건식에 'true'라는 문장을 조건식에 넣어줄 경우 무한루프문이 됨. break; 위 break를 작성하여 무한루프문을 종료시켜줘야만 무한 반복되지 않습니다. 2 . 조건문 Switch~case switch문 : 선언된 정수형 변수 및 수식의 계산한 결과가 정수일 떄와 인식하는 문자열의 값과 같은 case문의 상수로 이동되어 명령을 실행하는 선택 문 ◆특징 - 복합 if문은 구현하기 복잡하고 프로그램의 효율성이 감소되는 단점이 있기 때문에, 다중..
Java : 제어문의 시작 오늘은 삼항 연산자,Scanner,제어문에 대해서 알아보겠습니다. 삼항 연산자는 조건식과 출력값을 한번에 입력하여 그 결과를 받을 수 있는 수식인데 위 사진 참고를 통해서 과정을 살펴볼 수 있습니다. true : false 의 순서를 가지고 콘솔에 출력 되고 싶은 것을 각 경우에 적으면 조건식에 따라 조건을 만족하였을 때 true로서 그 값이 출력되고 조건을 만족하지 못했을 때는 false로서 false자리에 입력 되어있는 값이 출력됩니다. 논리 연산자나 비교 연산자와 다르게 조건에 따른 값을 true와 false 이외에 다른 형태로 콘솔에 출력 받고 싶을 때 활용하면 좋겠다는 생각이 듭니다. 두번째,Scanner Scanner는 콘솔에 직접 값을 입력할 수 있습니다. Scanner에서 받은 값을 본 클..