목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료

 

 

 

배열이란?

동일 타입의 값을 여러개 취급할 수 있는 기능

  • 인덱스라고 불리는 [] 로 감싼 0 부터 시작하는 정수를 사용하여 배열의 길이나 순서를 나타낼 수 있다.
  • 배열도 결국은 타입에 따라 default value로 채워진다.
    • 참조의 경우  => null
    • int / short / byte / long => 0
    • float / double => 0.0
    • bool => false
    • char => \u0000

 

 

 

 

 

 

반응형

참고자료

 

 

객체지향의 탄생 배경

  • 컴퓨터는 초창기에 미사일 실험과 같은 곳에서 사용 되었다. 그 과정에서 과학자들은 실제 세계와 유사한 가상 세계를 컴퓨터 속에 구현하고자 노력하였으며, 이러한 노력은 객체지향 이론을 탄생시켰다.
**"실제 세계는 사물(객체)로 이루어져 있으며, 발생하는 모든 사건들은 사물간의 상호작용이다"**

 

 

 

객체지향언어란

  • 객체지향언어는 기존의 것에서 다른것이 아닌 몇 가지 새로운 규칙을 추가한 발전된 형태의 것
  • 규칙들을 이용해서 코드 간에 서로 관계를 맺어 줌으로써 보다 유기적인 프로그램 구성

 

객체지향 언어의 주요 특징

**1. 코드의 재사용성이 높다.**
      => 새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성할 수 있다.

**2. 코드의 관리가 용이하다.**
      => 코드간의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경할 수 있다.

**3. 신뢰성이 높은 프로그래밍을 가능하게 한다.**
      => 제어자와 메서드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,
           코드의 중복을 제거하여 코드의 불일치로 인한 오동작을 방지할 수 있다.

 

여기서 가장 큰 장점은 "코드의 재사용성이 높고 유지보수가 용이하다."는 것이다.

객체지향언어는 개발과 유지보수에 드는 시간과 비용을 획기적으로 개선하였다.

 

 

어떻게 객체지향언어를 공부해야할까

너무 객체지향개념에 얽매여서 고민하기 보다는 일단 프로그램을 기능적으로 완성한 다음

어떻게 하면 보다 객체지향적으로 코드를 개선할 수 있을지 고민하며 점차 개선해 나가는 것이 좋다.

⇒ 이론을 많이 안다고 해서 좋은 설계를 할 수 있는 것은 아니다.

번외 ⇒ 객체지향은 인간 지향이다.(링크)

 

클래스와 객체

**클래스의 정의** 클래스란 객체를 정의해 놓은 것이다.
**클래스의 용도** 클래스는 객체를 생성하는데 사용된다.

클래스는 '객체의 설계도 또는 틀'

 

객체란?

사전에서의 객체

객체(Object)의 사전적인 정의는, '실제로 존재하는 것'이다.

우리가 주변에서 볼 수 있는 책상, 의자, 자동차와 같은 사물들이 곧 객체이다.

객체지향이론에서의 객체(Object)

사물과 같은 유형적인 것뿐만 아니라, 개념이나 논리와 같은 무형적인 것들도 객체로 간주한다.

프로그래밍에서의 객체

클래스에 정의된 내용대로 메모리에 생성된 것을 뜻한다.

**객체의 정의** 실제로 존재하는 것, 사물 또는 개념
**객체의 용도** 객체가 가지고 있는 기능과 속성에 따라 다름
**유형의 객체** 책상, 의자, 자동차, TV와 같은 사물
**무형의 객체** 수학공식, 프로그램 에러와 같은 논리나 개념

 

 

클래스와 객체의 관계

통상적으로 클래스설계도, 객체제품으로 설명한다.

 

  • 클래스를 정의하고 클래스를 통해 객체를 생성하는 이유는 설계도를 통해서 제품을 만드는 이유와 같다. 하나의 설계도만 만들어 놓으면 제품을 만드는 일이 쉬워진다.
  • 매번 객체를 생성할 때마다 어떻게 객체를 만들어야 할지를 고민하지 않아도 된다.

클래스와 객체의 관계 결론

  • 클래스와 객체의 관계를 대략적으로 알고 코드로 구현해봐야 알 수 있다.
  • 객체지향언어의 규칙과 개념은 우선 외우고 뭔가 구현해보면서 대입해봐야 한다.
  • 클래스와 객체의 관계를 붕어빵 기계 붕어빵의 개념이 아니라고 하는게 있다. ⇒ 자바의 정석 저자님 말로는 붕어빵 기계와 붕어빵은 단순히 설명을 위한 예시
  • 붕어빵은 맛있다.

 

 

 

객체와 인스턴스

클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화(instantiate)라고 하며,

어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 한다.

ex) TV 클래스로부터 만들어진 객체를 TV클래스의 인스턴스라고 한다.

  • 객체: 소프트웨어 세계에 구현할 대상 ⇒ '클래스의 인스턴스'
    • 객체는 모든 인스턴스를 대표하는 포괄적인 의미를 갖고있다.
  • 인스턴스: 설계도 바탕으로 소프트웨어 세계에 구현된 구체적인 실체
    • 어떤 클래스로부터 만들어진 것인지 강조하는 보다 구체적인 의미

 

객체의 구성요소 - 속성과 기능

객체는 속성과 기능, 두 종류의 구성요소로 이루어져 있으며, 일반적으로 객체는 다수의 속성과 다수의 기능을 갖는다.

즉 객체는 속성과 기능의 집합이라고 할 수 있다.

그리고 객체가 가지고 있는 속성과 기능을 그 **객체의 멤버(구성원, member)**라 한다.

 

 

 

속성(property): 멤버변수(member variable), 특성(attribute), 필드(field), 상태(state)

기능(function): 메서드(method), 함수(function), 행위(behavior)

 

 

 

 

 

 

 

객체 생성 후 메모리

 

 

메소드(Method)

  • 특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것이다.
  • 기본적으로 수학의 함수와 유사하다.
  • 어떤 값을 입력하면 이 값으로 작업을 수행해서 결과를 반환한다.

메소를 사용하는 이유?

  1. 높음 재사용성(reusuability) ex) Java API에서 제공하는 메서드
  2. 중복된 코드의 제거 ⇒ 반복되는 문장들 대신 메서드 호출하는 한 문장으로 대체할 수 있다.
  3. 프로그램의 구조화 ⇒ 메인 메서드에 모든 코드를 작성하는게 아니라 분리해서 구조화 시킨다.

 

생성자(Constructor)

  • 인스턴스가 생성될 때 호출되는 '인스턴스 초기화 메서드'이다.
  • 인스턴스 변수의 초기화 작업에 주로 사용되며, 인스턴스 생성 시에 실행되어야 할 작업을 위해서도 사용된다.
  • 메서드처럼 클래스 내에 선언되며, 구조도 메서드와 유사하지만 리턴값이 없다는 점이 다르다. ⇒ 그렇다고 해서 생성자 앞에 리턴값이 없음을 뜻하는 키워드 void를 사용하지 않는다.

 

  • 개발자가 아무런 생성자도 만들지 않으면 자바는 인자가 없는 기본 생성자를 자동으로 만들어준다. ⇒ 기본 생성자(default constructor)
  • 인자가 있는 생성자를 하나라도 만든다면 자바는 기본 생성자를 만들어 주지 않는다.
  • 객체 생성자 메서드라고도 불린다.

 

 

 

반응형

 

 

# 인터페이스란?

  • 일종의 추상클래스이다.
  • 추상클래스처럼 추상메서드를 갖지만 추상클래스보다 추상화 정도가 높다.
    => 추상클래스와 달리 몸통을 갖춘 일반 메서드 또는 멤버변수를 구성원으로 가질 수 없다.
         오직 추상메서드와 상수만을 멤버로 가질 수 있다.
  • 인터페이스는 구현된 것은 아무것도 없고 밑그림만 그려진 '기본 설계도'

 

interface 인터페이스이름 {
    public static final 타입 상수이름 = 값;
    public abstract 메서드이름(매개변수목록);
}

 

인터페이스 멤버들의 제약사항

  • 모든 멤버변수는 public static final ,이어야 하며, 이를 생략할 수 있다.
  • 모든 메서드는 public abstract 이어야 하며, 이를 생략할 수 있다.
    => 단, static 메서드와 디폴트 메서드는 예외(JDK1.8부터)

 

 

interface PlayingCard {
    public static final int SPADE = 4;
    final int DIAMOND = 3;    // public static final int DIAMOND = 3;
    static int HEART = 2;        // public static final int HEART = 2;
    int CLOVER = 1;              // public static final int CLOVER = 1;

    public abstract String getCardNumber();
    String getCardKind();        // public abstract String getCardKind();
}
  • 인터페이스에 정의된 모든 멤버에 예외없이 적용되는 사항이기 때문에 제어자를 생략할 수 있는 것이며,
    편의상 생략하는 경우가 많다. 생략된 제어자는 컴파일 시에 컴파일러가 자동적으로 추가해준다.

 

 

 

# 인터페이스 구현

  • 인터페이스도 추상클래스처럼 그 자체로는 인스턴스를 생성할 수 없다.
  • 인터페이스는 자신에 정의된 추상메서드의 몸통을 만들어주는 클래스를 작성해야 한다.
  • 추상클래스는 확장한다는 의미의 키워드 'extends', 인터페이스는 구현한다는 의미의 키워드 'implements'
  • 인터페이스의 이름은 주로 Fightable과 같이 '~ 을 할 수 있는'의 의미인 able로 끝나는 경우가 많다.

 

class 클래스이름 implements 인터페이스이름 {
    // 인터페이스에 정의된 추상메서드를 구현해야 한다.
}


class Fighter implements Fightable {
    public void move(int x, int y)   {  /* 내용 생략 */ }
    public void attack(Unit u)       {  /* 내용 생략 */ }
}

 

 

 

# 인터페이스의 장점

  • 개발시간을 단축시킬 수 있다.
  • 표준화가 가능하다.
  • 서로 관계없는 클래스들에게 관계를 맺어 줄 수 있다.
  • 독립적인 프로그래밍이 가능하다.
    - 클래스의 선언과 구현을 분리시킬 수 있기 때문에 실제구현에 독립적인 프로그램을 작성하는 것이 가능하다.

 

 

 

반응형

 

 

목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료

 

Java의 정석:최신 Java 8.0 포함

COUPANG

www.coupang.com

 

 

# 타입 변환의 종류

 

  • 캐스팅 => 명시적 형 변환, 강제 형 변환
  • 프로모션 => 묵시적 형 변환, 암시적 형 변환, 자동 형 변환

 

 

 

 

# 형 변환(캐스팅, casting) 이란?

 

"형 변환이란, 변수 또는 상수의 타입을 다른 타입으로 변환하는 것"

 

 

  •  같은 타입이 아닌 서로 다른 타입 간의 연산을 수행할 때,
    이럴 때는 같은 타입으로 일치시켜야 한다.
    => 이때 변수나 리터럴의 타입을 다른 타입으로 변환하는 것을 '형 변환(casting)'이라고 한다.

 

 

 

# 형 변환 방법

 

(타입)피연산자

 

형 변환하고자 하는 변수나 리터럴의 앞에 변환하고자 하는 타입을 괄호와 함께 붙여주기만 하면 된다.

여기에 사용되는 괄호()는 '캐스트 연산자' 또는 '형 변환 연산자'라고 한다.

 

class CastingEx1 {
	public static void main(String[] args) {
    	double d= 85.4;
       	int score = (int)d;      // double 타입의 변수 d를 int타입으로 형변환

        System.out.println("score="+score);  // score=85
        System.out.println("d="+d); // d=85.4 <--형변환 후에도 피연산자에는 아무런 변화가 없다.
    }      
}
  • 형 변환 연산자는 그저 피연산자의 값을 읽어서 지정된 타입으로 형 변환하고 그 결과를 반환할 뿐이다.
    => 피연산자인 변수 d의 값은 형 변환 후에도 아무런 변화가 없다.

 

 

기본형간의 형변환

  • float타입의 값을 int타입으로 변환할 때 소수점 이하의 값은 반올림이 아닌 버림으로 처리된다.

 

 

# 정수형 간의

  • int타입(4 byte)의 값을 byte타입(1 byte)으로 변환하는 경우는 크기의 차이만큼 잘려나간다.
    => 경우에 따라 '값 손실(loss of data)'이 발생할 수 있다.
    ex) int -> byte로 형 변환 시

 

 

 

# 실수형 간의 형 변환

  • 정수형처럼 작은 타입에서 큰 타입으로 변환하는 경우, 빈 공간을 0으로 채운다.

 

float를 double로 형변환

 

 

  • 반대로 double타입에서 float타입으로 변환하는 경우,
    double의 가수 52자리 중 23자리만 저장되고 나머지는 버려진다.

double d = 1.0e100;  // float의 최대값보다 큰 값을 d에 저장(1.0x10^100)
float f = (float)d;  // d의 값을 float로 형변환해서 f에 저장. f는 무한대가 된다.

double d = 1.0e-50;  // float의 최소값보다 작은 값을 d에 저장(1.0x10^-50)
float f = (float)d;  // f의 값은 0이 된다.
  • float타입의 범위를 넘는 float로 형 변환하는 경우는 '+-무한대' 또는 '+-0'을 결과로 얻는다.

 

 

 

# 정수형과 실수형 간의 형 변환

 

int타입과 float타입의 저장형식 비교

 

  • 정수형과 실수형은 저장형식이 완전히 다르기 때문에 정수형간의 변환처럼 간단히 값을
    채우고 자르는 식으로 할 수 없다 => 좀 더 복잡한 변환 과정을 거쳐야 한다.

 

 

정수형을 실수형으로 변환

  • 정수는 소수점 이하의 값이 없으므로 비교적 변환이 간단하다.
  • 정수를 2진수로 변환한 다음 정규화를 거쳐 실수의 저장 형식으로 저장될 뿐이다.
  • 실수형은 정수형보다 훨씬 큰 저장 범위를 갖기 때문에, 정수형을 실수형으로 변환하는 것은 별 무리가 없다.

 

실수형을 정수형으로 변환

  • 실수형을 정수형으로 변환하면, 실수형의 소수점 이하 값은 버려진다.
    => 정수형의 표현 형식으로 소수점 이하의 값은 표현할 수 없기 때문

 

 

# 자동 형 변환

  • 경우에 따라 편의상의 이유로 형 변환을 생략할 수 있다
    그렇다고 해서 이루어지지 않는 것은 아니다.
    => 컴파일러가 생략된 형 변환을 자동적으로 추가한다.

 

자동 형 변환의 규칙

  • 컴파일러는 기존의 값을 최대한 보존할 수 있는 타입으로 자동 형 변환시킨다.
  • boolean을 제외한 나머지 7개의 기본형은 서로 형 변환이 가능하다.
  • 기본형과 참조형은 서로 형 변환할 수 없다.
  • 서로 다른 타입의 변수 간의 연산은 형 변환을 하는 것이 원칙이지만,
    값의 범위가 작은 타입에서 큰 타입으로의 형 변환을 생략할 수 있다.

 

 

 

반응형

 

목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료

  • 프로그래머스 자바 입문 강의 => 링크
  • [java]클래스 변수, 인스턴스 변수 차이 => 링크

 

 

# 변수의 스코프란?

 

스코프는 영역이라는 뜻을 가지고 있습니다.

프로그램상에서 사용되는 변수들은 사용 가능한 범위를 가진다. 그 범위를 변수의 스코프라고 한다.

변수의 유효 범위(scope)라고도 불리며, 해당 변수가 접근할 수 있는 변수, 객체 그리고 함수의 집합을 의미합니다.

 

 

 

public class ValableScopeExam {
    static int staticVal = 7;	// 스태틱 변수
    int globalScope = 10;	// 전역변수, 인스턴스 변수
    
    public void scopeTest(int value) {
    	int localScope = 10;	// 지역변수
        System.outprintln(localScope);	// 오류 X
    }
    
    public static void main(String[] args) {
    	System.outprintln(globalScope);	// 오류발생
    	System.outprintln(localScope);	// 오류발생
    	System.outprintln(staticVal);	// 사용가능
    }
}

 

지역 변수(Local variable)

  • 특정 스코프({}) 내에서 생성되어 그 스코프 안에서만 사용 가능하다.
  • ex) 함수 속에 선언되어 해당 함수 속에서만 사용이 가능한 변수

 

 

전역 변수(Global variable)

  • 클래스의 속성으로 선언된 변수 globalScope의 사용 범위는 클래스 전체이다.
  • 메인 메소드가 같은 클래스 안에 있어도 globalScope 변수를 사용할 수 없다.
  • 인스턴스 변수(Instance variable)와 클래스 변수(class variable)가 있다.
    => 클래스변수는 클래스가 메모리에 올라갈때,
         인스턴스 변수는 인스턴스가 생성되었을 때 생성된다.
  • 객체 생성 시마다 매번 새로운 변수가 생성된다.

* main은 static한 메소드이다. static한 메서드에서는 static 하지 않은 필드를 사용 할 수 없다.

 

 

클래스 변수(static 멤버)

  • 클래스 내에 static 키워드로 선언된 변수
  • 처음 JVM이 실행되어 클래스가 메모리에 올라갈 때 ~ 프로그램이 종료될 때까지 유지
  • 동일한 클래스의 모든 객체들에 의해서 공유된다.
  • main 메소드는 static 이라는 키워드로 메소드가 정의되어 있다. 이런 메서드를 static 한 메소드 라고 한다.
  • static한 필드(필드 앞에 static 키워드를 붙힘)나, static한 메소드는 Class가 인스턴스화 되지 않아도 사용할 수 있다.
  • static한 변수는 공유된다.
    => static하게 선언된 변수는 값을 저장할 수 있는 공간이 하나만 생성된다.
         그러므로, 인스턴스가 여러개 생성되도 static한 변수는 하나다.

 

 

ValableScopeExam v1 = new ValableScopeExam();
ValableScopeExam v2 = new ValableScopeExam();

v1.globalScope = 20;
v2.globalScope = 30;

System.outprintln(v1.globalScope);	// 20 이 출력된다.
System.outprintln(v1.globalScope);	// 30 이 출력된다.

v1.staticVal = 10;
v2.staticVal = 20;

System.outprintln(v1.staticVal);	// 20 이 출력된다.
System.outprintln(v2.staticVal);	// 20 이 출력된다.
  • globalScope 같은 변수(필드)는 인스턴스가 생성될 때 생성되기 때문에 인스턴스 변수라고 한다.
  • staticVal 같은 static한 필드를 클래스 변수라고 한다.

 

 

반응형

 

목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료

 

Java의 정석:최신 Java 8.0 포함

COUPANG

www.coupang.com

 

 

 

 

# 변수(variable)란?

 

  • 수학에서 변수(변하는 수) 의 개념과는 다르다.
  • 프로그래밍 언어에서는 값을 저장할 수 있는 메모리상의 공간을 의미한다.
    => 이 공간에 저장된 값은 변경될 수 있기 때문에 '변수' 라는 수학용어의 정의와
    상통하는 면이 있어서 이렇게 이름을 붙여졌다.

 

변수란, 단 하나의 값을 저장할 수 있는 메모리 공간."

 

* 하나의 변수에 단 하나의 값만 저장할 수 있으므로, 새로운 값을 저장하면 기존의 값은 사라진다.

 

 

 

# 변수의 선언과 초기화

 

 

 

 

변수타입

  • 변수에 저장될 값이 어떤 '타입(type)'인지를 지정하는 것이다.
  • 지정하고자 하는 값의 종류에 맞게 변수의 타입을 선택해서 적어주면 된다.
  • 자바는 정수형, 실수형, 문자형 등 다양한 타입을 제공한다.

 

변수이름

  • 말 그대로 변수에 붙인 이름이다.
  • 변수는 '값을 저장할 수 있는 메모리 공간'이므로 변수의 이름은 메모리 공간에 이름을 붙여주는 것이다.
    => 그 이름을 이용해서 저장공간(변수)에 값을 저장하고, 저장된 값을 읽어오기도 할 수 있다.
  • 서로 구별될 수 있게 지어야 한다.

 

 

 

변수의 초기화

  • 변수를 선언한 이후부터는 변수를 사용할 수 있으나, 그 전에 반드시 변수를 '초기화(initialization)'해야 한다.
    => 메모리는 여러 프로그램이 공유하는 자원이므로 전에 다른 프로그램에 의해 저장된
         '알 수 없는 값(쓰레기값, garbage value)'이 남아있을 수 있기 때문이다.

 

 

 

"변수의 초기화란, 변수를 사용하기 전에 처음으로 값을 저장하는 것"

 

 

 

 

반응형

 

목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료

 

Java의 정석:최신 Java 8.0 포함

COUPANG

www.coupang.com

 

 

 

# 리터럴이란(literal)?

 

원래 12, 123, 3.14, 'A'와 같은 값들이 상수이다.

프로그래밍에서는 상수를 값을 '한번 저장하면 변경할 수 없는 저장공간' 으로 정의 해서 다른 이름으로 불러야만 했다.

그래서 상수 대신 리터럴이라는 용어를 사용한다.

=> 리터럴은 기존에 알던 '상수' 의 다른 이름일 뿐이다.

 

변수(variable) : 하나의 값을 저장하기 위한 공간

상수(constant) : 값을 한번만 저장할 수 있는 공간

리터럴(literal) : 그 자체로 값을 의미하는 것

 

 

 

# 리터럴의 타입과 접미사

변수에 타입이 있는 것처럼 리터럴에도 타입이 있다.

 

 

  • 리터럴은 접미사를 붙여서 타입을 구분한다.
  • 정수형의 경우, long타입의 리터럴에 접미사 'l' 또는 'L'을 붙이고,
    접미사가 없으면 int 타입의 리터럴이다.

 

 

 

# 2, 8, 16진수로 표현된 리터럴

 

int octNum = 010;     // 8진수 10, 10진수 => 8

int hexNum = 0x10;   // 16진수 10, 10진수 => 16

int binNum = 0b10;   // 2진수 10, 10진수 => 2

 

 

 

# 큰 숫자를 편하게 읽게 만드는법

 

long big = 100_000_000_000L;           // 접미사 f 대신 F를 사용해도 된다.

long hex = 0xFFFF_FFFF_FFFF_FFFFL;    // 접미사 d 대신 D를 사용해도 된다.

 

 

# 실수형 (float, double)

 

float pi = 3.14f;            // 접미사 f 대신 F를 사용해도 된다.

double rate = 1.618d;    // 접미사 d 대신 D를 사용해도 된다.

 

* 접미사가 붙은 타입은 long, float, double 뿐인데, double은 생략가능므로 long과 float만 신경쓰면 된다.

 

 

 

# 타입의 불일치

리터럴의 타입은 저장될 변수의 타입과 일치하는 것이 보통이지만,

타입이 달라도 저장범위가 넓은 타입에 좁은 타입의 값을 저장하는 것은 혀용된다.

 

int i = 'A';           // OK, 문자 'A' 의 유니코드인 65가 변수 i에 저장된다.

long l = 123;       // int보다 long 타입이 더 범위가 넓다.

double = 3.14f;    // OK, float보다 double타입이 더 범위가 넓다.

 

 

그러나 리터럴의 값이 변수인 타입의 범위를 넘어서거나,

리터럴의 타입이 변수의 타입보다 저장범위가 넓으면 컴파일 에러 발생한다.

 

int i = 0x123456789;   // 에러.  int 타입의 범위를 넘는 값을 저장

float = f = 3.14;         // 에러.  float 타입보다 double 타입의 범위가 넓다.

 

* float는 접미사나 정밀도 등신경 쓸 것이 많다. 이런 것들이 귀찮다면 그냥 double을 사용하자.

 

 

# 문자, 문자열 리터럴

 

char ch = 'J';              // char ch = 'Java'; 이렇게 할 수 없다.

String name = "Java";   // 변수 name에 문자열 리터럴 "Java"를 저장

 

 

 

 

반응형

 

 

자바의 정석을 참고해서 아래의 글을 작성했습니다.

 

https://coupa.ng/b93eFX

 

Java의 정석:최신 Java 8.0 포함

COUPANG

www.coupang.com

 

 

 

 

 

# 규칙

  1. 클래스 이름의 첫 글자는 항상 대문자로 한다.
    - 변수와 메서드의 이름의 첫 글자는 항상 소문자로 한다.
  2. 여러 단어로 이루어진 이름은 단어의 첫 글자를 대문자로 한다.
    - lastIndexOf, StringBuffer

  3. 상수의 이름은 모두 대문자로 한다. 여러 단어로 이루어진 경우 '_' 로 구분한다.
    - PI, MAX_NUMBER

 

 

위의 규칙들은 반드시 지켜야 하는 것은 아니지만, 코드를 보다 이해하기 쉽게 하기 위한

자바 개발자들 사이의 암묵적인 약속이다.

 

반응형

 

목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료들

 

 

# 프리미티브(기본형) 타입

프리미티브 타입(기본형 변수, primitive type)은 언어에서 사전 정의 되어있는 데이터 타입입니다.

자세한 내용은 링크 를 참고해 주시기 바랍니다.

 

 

 

# 레퍼런스(참조형)타입

  • 기본형을 제외한 나머지 타입.
  • 배열(array[]), 열거(enum), 클래스(class), 인터페이스(interface) 등
  • 참조 값(주소)를 가지는 자료형.
  • 자바 API에서 제공되거나 프로그래머에 의해 만들어진 클래스를 자료형으로 선언하는 경우
  • 참조변수는 클래스 이름을 가지고 만들 수 있다.

 

 

 

# 기본형과 참조형의 차이점

  • 기본형 변수 안에는 직접 값들을 넣을 수 있지만,
    참조형은 변수 안에 값들을 저장하고 있는 객체를 가르키는 주소를 가지고 있습니다.
반응형

 

목표

- 자바의 프리미티브 타입, 변수 그리고 배열을 사용하는 방법을 익힙니다.

 

학습할 것

 

참고 자료들

 

 

# 기본형 타입(Primitive type)

  • 자바(Java)는 총 8가지의 기본형 타입을 미리 정의하여 제공합니다.
  • 기본값이 있기 때문에 Null이 존재하지 않습니다.
  • 기본형 타입에 Null을 넣고 싶다면 래퍼 클래스(Wrapper Class)를 활용해야 합니다.
  • 실제 값을 저장하는 공간으로 스택(Stack) 메모리 영역에 저장 됩니다.
  • 각 타입의 데이터 범위를 벗어나면 컴파일 에러가 발생합니다.

 

 

   자료형  크기  기본값 저장 가능한 범위
 논리형  boolean  1 byte (8bit)  false  true, false
 정수형  byte  1 byte (8bit)  0  -128 ~ 127
 short  2 byte (16bit)  0  -32,768 ~ 32,767
int(기본) 4 byte (32bit)  0  -2,147,483,648 ~ 2,147,483,647
 long  8 byte (64bit)  0L  -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807
 실수형  float  4 byte (32bit)  0.0F  (3.4 X 10-38) ~ (3.4 X 1038) 의 근사값
 double(기본)  8 byte (64bit)  0.0  (1.7 X 10-308) ~ (1.7 X 10308) 의 근사값
 문자형  char  2 byte (16bit)  '\u0000'   0 ~ 65,535

 

 

반응형

+ Recent posts