자바
-
[Java-26] 자바 new & Heap, Constant poolJava 2020. 12. 14. 17:34
Java New Keyword 🐵 new 키워드 이해하기 (new Operator) 자 저번에는 우리가 어떻게 Class를 생성하고 만드는지, 그리고 클래스의 간단한 종류에 대해서 알아 보았다. 그럼 다시 간단한 클래스를 정의 해보자 public class Study{ // Study 클래스 정의 String name; } public class App{ public static class void main(String args[]){ Study study; // Study instance 생성 } } 지금 study라는 인스턴스는 여타 String, Integer 와 같이 현재 저렇게 딸랑 정의 해 놓으면 아무 상태도 아니다. 만약 저 상태에서 우리가 study를 출력하려 한다면 initialize, ..
-
[Java-16] 논리 연산자Java 2020. 11. 27. 14:21
Boolean or Logical Operators 1. 논리 연산자(Boolean or Logical Operators) 우리가 지금까지 봐 왔듯이 , 비교 연산자는 두 수를 비교를 해서, 그 결과 값을 boolean(TRUE, FALSE) 를 반환하고, 우리는 아마, if문이나 for문을 통한 루프, 연속된 조건이 체이닝 걸렸을 때(Branching and Looping statements) 많이 사용했을 것이다. 한가지의 상황에서만 대처하는게 아니라 보통 2가지 이상(여러개의) 상황을 비교해야 하기 때문에 우리는 Boolean 연산자 *논리연산자 를 사용해서 Multiple한 비교를 진행할 수 있다. 논리 연산자는 피연산자에게 Boolean *참/거짓 값을 받아야 한다. 그리고 값을 통해 연산을 하..
-
[Java-14] 비트 연산자와 쉬프트 연산자Java 2020. 11. 27. 14:12
Bitwise and Shift Operator 1. 비트 연산자 (Bitwise) 비트연산과 쉬프트 연산은 low-level 의 연산자이다. 보통 개별의 비트를 integer 값으로 만들려 할 때, 많이 사용하게 된다. 비트 연산은 사실 low-lovel(네트워킹 작업)을 하는 경우를 제외하고는 모던 자바쪽에서는 잘 사용하지 않는 연산이긴 하다. 보통 flag 를 이용한 테스트를 위해 사용한다고 한다. flag에 대해서 알고 싶다면 이 블로그를 참고하면 좋다. 일단 우리가 bit를 사용하는 연산을 이해하기 위해서는 ‘바이너리(binary)’와 ‘보수(음의 정수 표현을 위해)’에 대해서도 알고 있어야 한다. 바이너리와 보수에 대해서는 따로 언급하지는 않고, 적절한 공부 링크를 적어서 학습할 수 있도록 하..
-
[Java-12] 자바 배열Java 2020. 11. 20. 17:56
Java Array 바로 본론으로 들어가자, 1. 배열 (Array) 배열은 원시타입이나, 참조타입으로 구성된 특별한 객체 이다. 배열에 담기는 값들은 배열의 타입에 의해서 결정이 되고, 배열의 넘버링, 즉 사이즈는 0부터 시작되고, 배열에 들어가는 데이터로 사이즈가 결정이 됩니다. (배열에 들어가는 원소의 수가, 배열의 수가 된다.) 또한 배열을 생성할 때, 명시적으로 배열의 사이즈를 결정해줄 수 있습니다. 배열의 원소로 들어가는 타입은 대부분 자바에서 유효한 (valid 한) 타입으로 들어가고, 배열의 타입도 포함 가능합니다. 이 말은, Java 가 배열안에 배열을 만드는 ‘다차원’의 배열의 종류도 지원을 해준다는 뜻 입니다. 2. 배열 타입(Array Type) 배열 유형은 자바 클래스와 마찬가지로..
-
[Java-10]변수의 스코프&라이프타임Java 2020. 11. 20. 17:39
Variable's scope & life cycle 저번에는 타입 캐스팅과 프로모션에 대해서 알아보았다. 이번에는 변수의 스코프와 라이프타임에 대해서 알아보도록 하자. 1. 스코프 (Scope) 먼저 우리가 변수를 선언한다고 가정을 하자, 이 변수의 사용 범위는 어디까지일 까? 이 변수의 사용범위는 선언된 클래스의 중괄호 내에서 사용가능하다. 이런 범위를 우리가 ‘스코프’라고 부르는 것이다. 좀더 쉽게 생각해보자, 이해할 때 집합과 섞어서 생각해보면 된다. Class 안에 var1이란 변수가 선언 됬으면 var1의 스코프는 클래스 전체에서 놀 수 있다. 즉, foo() 메소드 안에서도 들어갈 수 있다는 얘기다. 하지만 var2는 어떨까? 저 변수의 스코프는 foo() 안에서의 초록색 칸에서만 사용할 수..
-
[Java-8] 자바 변수 선언과 초기화Java 2020. 11. 18. 11:49
저번에는 리터럴과 각 변수의 특징에 대해서 알아보도록 하였다. 이제는 변수를 어떻게 선언하는지 그리고 초기화는 어떻게 진행되는지에 대해서 알아보도록 하자. 먼저 이 주제는 타입에대해서 얘기하기전에 먼저 설명하는게 좋지 않았을까 라는 생각을 하지만.. 각설하고 바로 얘기를 해보자. 1. 변수 선언 변수를 사용하기 위해서는 변수를 선언해야 한다. 변수를 선언하는건 간단하다. 이렇게 처음에 타입을 선언을 하고 바로 뒤에 변수 이름을 집어 넣으면 된다. 뭐 사실 변수를 ‘선언'만 하는 건 크게 어렵지 않다. 물론 여러개의 변수를 선언하는 것도 가능하다. 변수를 선언하는건 크게 어렵지 않으니, 네이밍 컨벤션에 대해서 얘기해보자 물론 여러가지 방식이 있다. 지금 설명하는 얘기는 ‘통상’적으로 말하는 자바 언어의 네..
-
[Java-2] 바이트 코드란Java 2020. 11. 9. 21:15
전 글에서는 JAVA의 컴파일 과정을 자세하면서, 자세하지 않게 다뤄 보았다. 이번에는 컴파일이 되었을 때 생성되는 중간코드(바이트 코드) 에 대해서 알아보도록 하자. 1. 중간코드(바이트 코드)가 뭐여 도대체 JAVA가 나왔을 당시, 기존 C언어 하고는 꽤나 다른 실행 과정을 가졌다. 간단하게 살펴보면, 중간코드는 JVM 이 읽을 수 있는 언어라고 생각하면 된다. JVM에서는 이 중간 코드를 바이트코드 라고 하는데, (지금부터 중간코드를 바이트코드라고 적겠습니다.) JVM은 이 바이트코드를 읽어 들여서 컴퓨터 이해할 수 있는 언어로 변환한다. 필자의 개인적 의견 이지만, 바이트 코드는 JVM이 읽을 수 있는 언어로 정의하는 것이지만 더 재밌는 이야기를 해보자, 이것먼저 알아보도록 하자 JVM은 JAVA..
-
자바가 유료라서 코틀린이 대세라고요?카테고리 없음 2020. 10. 29. 09:22
자바가 유료라서 코틀린이 대세라고요? java 유료화를 다루기 이전에, java가 무엇인지에 대해서 알 필요성이 있다. JVM이 뭔지 JDK가 뭔지 JRE가 뭔지에 대해서 학습해야 한다. Java Virtual Machine (JVM) JVM 자바 가상 머신으로, 자바 바이트 코드를 OS에 특화된 코드로 변환하여 실행한다. (특정 플랫폼에 종속적이게 된다.) 여러 벤더에 따라서 구현이 다르고 스펙은 Oracle 문서를 통해 확인할 수 있다. 즉, JVM 은 자바 가상 머신이며, 바이트 코드를 어떻게 실행시킬 수 있는가에 대한 스펙일 뿐이고 구현체는 다양하고, 플렛폼은 종속적이다. > Native 코드로 바꿔서 실행해야하는데, 그 Native 코드도 OS에 따라 다르기 때문이다. Java Runtime E..