일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 부산외대
- 유학생 준비물
- 미국유학생
- 만다라트프로젝트
- Kenneth Park
- F1학생비자
- California State University Sacramento
- 케네스
- java
- 개인 프로젝트 개발일지
- 자바 스터디
- 개발일지
- 2+2
- JVM아키텍처
- 복수학위제도
- 비전공자 git
- 파이데이아창의인재학과
- 미국유학생활
- i-20
- 사이드프로젝트
- 미국대학생활
- 미국유학
- 해외유학
- jpa
- 케네스로그
- 자바
- 미국대학
- 유학생대학생활
- Java 스터디
- CSUS
- Today
- Total
목록Dev/Java (24)
케네스로그

비트, 쉬프트 연산은 주로 네트워킹 작업에서 사용되는 저수준의 연산자입니다. 보통은 플래그를 이용한 테스트에서 사용됩니다. 비트수준의 연산은 기본적으로 2진 연산과 보수 시스템에 대한 이해를 필요로 합니다. 💡low-level연산의 표현 단위 long타입이 포함된 경우, 결과는 long타입(8byte/32bit)으로 표현된다. 그외에는 int타입(4byte/16bit)으로 표현됨. 🛑 bitwise 연산은 실수, boolean, 배열, 객체는 사용할 수 없다. 비트 보수 연산자 ~ bitwise complement 비트 결과 0 1 1 0 ~ 단일 연산은 not 연산과 마찬가지로 피연산자 값의 비트 표현식에 반전을 취합니다. 12의 2진법 표현은 1100, 비트 보수 연산의 결과는 0011 byte b ..

연산에 사용되는 기호를 연산자 operator라고 하며, 연산자와 함께 연산되는 값을 피연산자 operand라고 합니다. 이러한 연산자와 피연산자의 연산과정을 연산식 expression이라고 하죠. 산술 연산자 Arithmetic Operator 산술연산자는 부동소수점, 문자형, 정수형과 함께 사용할 수 있으며, 연산의 결과는 숫자 타입(byte, short, int, long ...)으로 결과값이 나옵니다. 더하기 + Addition System.out.println(5+3); // 8 System.out.println(5+3.0); // 8.0 Numeric type: 실수형이 포함된 경우, 실수형으로 캐스팅되어 연산됩니다. System.out.println("Kenneth" + "Log"); // ..

타입 추론 이 글은 참조(https://velog.io/@composite/Java-10-에서-var-재대로-사용하기) 하였습니다. 타입추론은 정적 타이핑을 지원하는 언어에서, 타입이 정해지지 않은 변수에 대해서 컴파일러가 변수의 타입을 스스로 찾아낼 수 있도록 하는 기능을 말합니다. 이를 통해서, 타입을 명시하지 않아도 되며, 코드량을 줄이고 코드의 가독성을 높일 수 있습니다. Java10부터 var키워드가 생겼으며, Java11부터는 이를 통한 람다 타입도 지원합니다. 컴파일러는 개발자가 입력한 초기화 값을 통해 타입을 유추하는데, var는 컴파일러가 타입을 유추할 수 있도록 반드시 데이터를 초기화 해줘야만 합니다. // Java 9 String message = "Good bye, Java 9" /..

배열이란? 배열은 같은 타입의 데이터를 연속적으로 저장한 자료구조입니다. 배열의 특징은 '정적'이라는 점과 '연속적'이라는 것이죠. 정적이라는 말은 처음 배열의 크기가 정해지면 크기를 변경할 수 없음을 뜻합니다. 연속적이라는 건 메모리 상에서 배열의 첫번째 요소는 두번째 요소와 연이어 붙어있다는 것을 말합니다. 즉, 모든 요소들이 저장된 위치는 연속적으로 붙어있습니다. 배열의 생성 int[] a = new int[4]; 배열을 만들기 위해 new 키워드를 사용합니다. 위의 코드예시와 같은 int[] a = new int[4];와 같은 형식입니다. 이를 풀어서 이야기하자면, "4개의 정수를 저장할 수 있는 배열 객체를 만들고, a라는 reference type 변수에 저장하라"는 것입니다. 따라서, arr..

묵시적 형 변환 (자동 형 변환) 작은 메모리 크기의 데이터 타입을 큰 메모리 크기의 타입으로 변환합니다. int smallNum = 10; long bigNum = smallNum; 명시적 형 변환 (강제 형 변환) 데이터 타입을 변환하는데에 있어 형 변환 키워드를 통해 직접 변환합니다. int num = 56; byte value = (byte) num; 단, 이때 캐스팅 할 데이터 타입의 범위를 벗어난 값의 경우엔 형 변환을 실행할 수 없습니다다. byte타입의 범위는 -128~127인데, num의 값이 -128 미만이거나 127초과인 경우엔 명시적으로 형 변환을 실행할 수 없게 됩니다.. 타입 프로모션 연산식에서 서로 다른 데이터 타입의 피연산자가 있을 경우, 두 피연산자 중 크기가 큰 타입으로 ..

변수의 스코프 변수는 해당 변수가 선언된 위치에 따라 적용되는 범위가 달라지게 됩니다. class A { int instanceValue; // 인스턴스 변수 static int classValue; // 클래스 변수(static, 공유 변수) void method() { int localValue = 0; // 지역변수 } } 클래스 내부에 선언되는 변수를 멤버변수라고 합니다다. 여기서 static 키워드를 사용한 변수는 클래스 변수, static 키워드가 없는 변수를 인스턴스 변수라고 부릅니다. 메소드 내부에 위치한 변수는 해당 메소드에서만 사용할 수 있는 지역변수입니다. 인스턴스 변수 클래스 영역에 선언되며, 클래스의 인스턴스를 생성할 때 만들어집니다. 인스턴스 변수 값을 읽어오거나 저장하기 위해서..

변수 선언 및 초기화하는 방법 변수의 선언 메모리 공간에 변수 타입에 맞는 크기의 저장 공간이 확보되며, 할당된 메모리 공간은 변수 이름을 통해 접근할 수 있게 됩니다. 변수의 초기화 변수 선언으로 할당된 공간에 처음으로 값을 저장하는 행위를 말합니다. 변수 선언 시 메모리에 변수를 위한 공간이 할당되지만, 어떤 값이 저장되는지는 알 수 없습니다. C와 같은 언어에서는 쓰레기값이 저장되어 초기화를 하지 않으면 문제가 발생할 수 있습니다. int age = 20; 변수의 초기화는 다음과 같은 형식으로 이루어집니다. 대입연산자를 기준으로, 좌측에는 변수이름과 우측에는 변수에 저장될 값이 위치합니다. a. 묵시적 초기화 implicit initalization Java에서는 데이터 타입별로 초기화값이 정해져있..

리터럴 Literal literal a. 문자 그대로의 리터럴은 변수나 상수에 저장되는 값 그 자체를 의미합니다. primitive type의 변수 또는 상수에 값을 할당할 때, 사용되는 값이 리터럴입니다. 정수형 리터럴 Integer literals 정수형 숫자 중 L/l로 끝난다면 long type, 그 외에는 int 타입입니다. 기본적으로 정수형 데이터 타입(byte,short,...)은 int 리터럴로부터 생성되며, int 범주를 벗어나면 long 리터럴로 표현됩니다. 또한, 자바 SE 7부터는 바이너리형태의 리터럴을 지원합니다. 진법에 따른 표현식은 다음의 예제와 같이 0x, 0b같은 접두사를 사용합니다. int decVal = 26; int hexVal = 0x1a; int binVal = 0..

Primitive type의 종류, 값의 범위, 기본값 Name Tags default value scope size boolean 논리형 false true, false 1 byte byte 정수형 0 -128 ~ 127 1 byte short 정수형 0 - 32,768 ~ 32,767 2 byte int 정수형 0 - 2,147,483,648 ~ 2,147,483,647 4 byte java8부터 unsigned 가능 (parseUnsignedInt()) long 정수형 0L - 9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 8 byte 약 20자리 float 실수형 0.0F (3.4 * 10^-38) ~ (3.4 * 10^38) 근사값 4 byte ..

이전 글에서는 클래스로더와 런타임 데이터 영역에 대해 알아보았다. 이번에는 JVM의 코드를 실행시키는 실행엔진에 대해 알아보자. JVM 실행 엔진(Execution Engine) Execution Engine은 실제로 클래스파일의 바이트코드를 머신코드로 변환하여 실행하는 부분이라고 할 수 있다. 그 외에도 최적화를 위한 Garbage Collector, JIT Compiler, 그리고 Java Native Method Interface로 구성된다. 1. 인터프리터 Interpreter Java클래스파일의 바이트코드를 한줄씩 읽어서 native code(기계어)로 변환하여 실행하도록 한다. 다른 인터프리터 언어에서 사용되는 그 인터프리터가 맞다. 인터프리팅 방식의 문제는 반복 호출되는 메소드를 매번 인터프..