[자바의 정석] ch01 자바를 시작하기 전에, ch02 변수

CastleSilver·2022년 5월 30일
0

자바의 정석

목록 보기
1/5
post-thumbnail

ch01. 자바를 시작하기 전에


자바의 특징

1. 운영체제에 독립적이다(Write once, run anywhere)

자바가상머신(JVM)을 통해 운영체제에 독립적일 수 있다. 자바 응용프로그램은 운영체제나 하드웨어가 아닌 JVM하고만 통신하고 JVM이 자바 응용프로그램으로부터 전달받은 명령을 해당 운영체제가 이해할 수 있도록 변환하여 전달한다. 자바로 작성된 프로그램은 운영체제에 독립적이지만 JVM은 운영체제에 종속적이다.

2. 객체지향언어(object-oriented programming language)이다

객체지향개념의 특징인 상속, 캡슐화, 다형성이 잘 적용된 객체지향언어이다.

3. 자동 메모리 관리(Garbage Collection)

자바로 작성된 프로그램이 실행되면, 가비지컬렉터가 자동적으로 메모리를 관리해준다.

4. 멀티쓰레드(multi-thread)를 지원한다

자바에서 개발되는 멀티쓰레드 프로그램은 시스템과는 관계없이 구현 가능하며, 관련된 라이브러리(Java API)가 제공되므로 구현이 쉽다. 그리고 여러 쓰레드에 대한 스케줄링(scheduling)을 자바 인터프리터가 담당하게 된다.

5. 동적로딩(Dynamic Loading)을 지원한다

자바는 동적 로딩을 지원하기에 실행 시에 모든 클래스가 로딩되지 않고 필요한 시점에 클래스를 로딩하여 사용할 수 있다.

주석

  1. 범위 주석(/* */)
  2. 한줄 주석(//)
  3. 여러줄 주석(/** */)

ch02. 변수


변수

변수(variable)란?

단 하나의 값을 저장할 수 있는 메모리 상의 공간

변수의 선언과 초기화

변수의 선언 방법

int age; //'int' 변수 타입의 'age'라는 이름을 가진 변수를 선언
  • 변수 타입 : 변수에 저장될 값이 어떤 '타입'인지를 지정. 자바는 정수형, 실수형, 문자형 등의 타입을 제공한다.
  • 변수 이름 : 같은 이름의 변수가 여러개 존재해서는 안된다.
int a, b;
int x = 0, y = 0;

타입이 같은 경우 콤마를 구분자로 여러 변수를 한 줄에 선언하기도 한다.

변수의 초기화

  • 변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것이다.
  • 변수를 선언한 후에는 변수를 사용할 수 있으나, 그 전에 반드시 변수를 초기화해야 한다. 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된 '알 수없는 값 ( 쓰레기 값, garbage value )가 남아있을 수 있기 때문이다.
  • 변수를 초기화할 때는 대입 연산자( = )를 이용한다. 이는 오른쪽의 값을 왼쪽( 변수 )에 저장하라는 뜻이다.
  • 지역변수는 사용되기 전에 초기화를 반드시 해야 하지만 클래스변수와 인스턴스변수는 초기화를 생략할 수 있다.

변수의 명명규칙

변수의 이름처럼 프로그래밍에서 사용하는 모든 이름을 '식별자'라고 하며 다음과 같은 규칙을 지켜야 한다.

  1. 대소문자가 구별되며 길이에 제한이 없다.
  2. 예약어를 사용해서는 안된다.
  3. 숫자로 시작해서는 안된다.
  4. 특수문자는 '_', '$'만 허용한다.

변수의 타입

자료형(data type)은 크게 '기본형'과 '참조형'으로 나눌 수 있다. 기본형은 실제 값을 저장하는 반면, 참조형은 객체의 주소를 저장한다.

기본형

  • 기본형에는 모두 8개 타입이 있으며, 크게 논리형, 문자형, 정수형, 실수형으로 구분된다.
  • 실수형은 정수형과 저장형식이 달라서 같은 크기라도 훨씬 큰 값을 표현할 수 있으나 오차가 발생할 수 있다는 단점이 있다. 정밀도가 높을수록 발생할 수 있는 오차의 범위가 줄어든다.
  • float의 정밀도는 7자리, double의 정밀도는 15자리 이다.
1byte2byte4byte8byte
논리형boolean
문자형char
정수형byteshortintlong
실수형floatdouble

참조형

  • 참조형 변수를 선언할 때는 변수의 타입으로 클래스의 이름을 사용하므로 클래스의 이름이 참조변수의 타입이 된다.
Date today = new Date(); // Date객체를 생성해서, 그 주소를 today에 저장
  • 객체를 생성하는 연산자 new의 결과는 생성된 객체의 주소이다.

형변환

형변환이란?

변수 또는 상수의 타입을 다른 타입으로 변환하는 것

방법

(타입)피연산자

double d = 85.4;
int score = (int)d;
int score = 85;
  • boolean을 제외한 나머지 타입들은 서로 형변환이 가능하다
  • 기본형과 참조형간의 형변환은 불가능하다

자동 형변환

  • 서로 다른 두 타입간의 덧셉에서는 두 타입 중 표현번위가 더 넓은 타입으로 형변환하여 타입을 일치시킨 다음에 연산을 수행한다.
profile
우당탕탕 비전공자 개발자

0개의 댓글