[Book Review] JAVA의 신 (1)

Tony Kim·2021년 10월 3일
0
post-thumbnail

[Book Review] JAVA의 신 (1)

CH1. 프로그래밍이란 무엇인가?

클래스
자바의 가장 작은 단위
상태(state)와 행동(behavior)을 수반

상태 = 클래스의 특성을 결정짓는 것 / 클래스 안에 메소드 밖에 정의
행동 = 메소드 (어떤 값을 주고 결과를 넘겨주는 것 = 함수)

예약어 (reserved word)




CH2. Hello God Of Java

자바 컴파일 및 실행 절차
소스 -> 컴파일러 -> 바이트코드 -> 디스크 -> 바이트 코드 -> JVM -> 기계어 -> 운영체제

main() 메소드

public static void main(String[] args) { }

public : 접근 제어자
static : 객체를 생성하지 않아도 호출 가능한 예약어
void : 돌려줄 것이 없을 때
main : 메소드 이름 (반드시 main)
(Sting[] args) : 메소드 이름 옆에 소괄호 안에 있는 것들은 매개변수, main() 메소드에 전달되는 매개변수는 반드시 String[] args / String옆에 대괄호 열었다 닫은 것은 args라는 변수가 배열이라는 의미

에러 안남

public class HelloGodOfJava {
  public static void main(String [] args) {
    }
}

print

System.out.println(“hello java!”);

System클래스에 있는 static한 out필드에서 println() 메소드 호출
매개변수가 hello java!가 되는 것임

print : 줄바꿈 X
println : 줄바꿈 O

주석
한줄 주석 : //
블록 주석 : /* /
문서용 주석 : /**
/

메소드 (method)
1) 제어자 (modifier) : main() 메소드에 있는 public static과 같은 메소드의 특성을 정하는 부분
2) 리턴 타입 (return type) : 메소드가 끝났을 때 돌려주는 타입
3) 메소드 이름 (method name) : 소괄호 앞에있는 메소드 이름
4) 매개 변수 목록 (parameter list) : 소괄호 안에 있는 매개변수의 목록
5) 예외 목록 (exception list) : 메소드의 소괄호가 끝나는 부분과 중괄호가 시작하는 부분 사이에 예외목록이라는 것을 선언 가능
6) 메소드 내용 (method body) : 중괄호 안에 있는 내용들




CH3. 자바 객체

클래스와 객체는 다름
class CarManager // 클래스
Car dogCar = new Car(); // 객체

new Car()
1) Car() : 생성자 = 객체를 생성하기 위한 도구 / Car()처럼 매개변수가 없는 생성자는 만들지 않아도 클래스 컴파일 시 javac를 실행하면서 클래스파일 안에 자동으로 만들어짐 = 기본생성자 (defaul constructor)
2) new : 예약어 클래스 생성자 지정

public class Car {
  int speed;
  int distance;
  String color;
  ㅤ
  public Car() {
  }
  ㅤ
  public void speedUp() {
    speed = speed + 5
  }
  ㅤ
  public void breakDown() {
    speed = speed-10;
  }
ㅤ
  public int getCurrentSpeed() {
    return speed;
  }
}
public class CarManager {
  public static void main(String args[] ) {
    Car dogCar = new Car();
    Car catCar = new Car();
    dogCar.speedUp();
    System.out.println(dogCar.getCurrentSpeed());
  }
}
public class Calculator {
  public static void main(String [] args) {
    System.out.println("Calculator class is started");
    Calculator calc = new Calculator();
    int a = 10;
    int b = 5;
    System.out.println("add="+calc.add(a,b));
    System.out.println("subtract="+calc.subtract(a,b));
    System.out.println("multiply="+calc.multiply(a,b));
    System.out.println("divide="+calc.divide(a,b));
  }
  public int add(int a, int b) {
    return a+b;
  }
  public int substract(int a, int b) {
    return a-b;
  }
  public int multiply(int a, int b) {
    return a*b;
  }
  public int divide(int a, int b) {
    return a/b;
  }
 }




CH4. 정보의 저장

변수
네 가지 변수
1) 지역 변수 (local variables)
2) 매개 변수 (parameters)
3) 인스턴스 변수 (instance variables)
4) 클래스 변수 (class variables)

1) 지역변수
중괄호 내에서 선언된 변수
지역변수를 선언한 중괄호 내에서만 유효하다

2) 매개변수
메소드에 넘겨주는 변수
메소드가 호출될 때 생명이 시작되고, 메소드가 끝나면 소멸된다 (일단 이렇게 알고있)

3) 인스턴스 변수
메소드 밖에, 클래스 안에 선언된 변수, 앞에는 static이라는 예약어가 없어야한다
객체가 생성될 때 생명이 시작되고, 그 객체를 참조하고 있는 다른 객체가 없으면 소멸된다.

4) 클래스 변수
인스턴스 변수처럼 메소드 밖에, 클래스 안에 선언된 변수 중에서 타입 선언 앞에 static이라는 예약어가 있는 변수
클래스가 처음 호출될 때 생명이 시작되고, 자바프로그램이 끝날 때 소멸된다

자바는 가비지 콜렉터(garbage collector)가 메모리 청소해줌

동일한 중괄호 내 동일한 변수 선언 X (레벨을 봐야함)

변수선언

  • 길이 제한 X
  • 첫문자 (유니코드문자/알파벳/$/_) 가능
  • 두문자 (유니코드문자/알파벳/$/_) 가능
  • 보통 메소드 이름처럼 지정 (소문자 시작 두번째 단의 대문자 시작)
  • 상수의 경우 모두 대문자, 단어 사이 로 구분 (상수가 아니면 X 권고)
    기본자료형 (primitive data type) : 초기화할 때 값 바로 적음
    참조자료형 (reference data type) : 초기화할 때 new이용 초기화

기본자료형 8개

1) 정수형
byte
short
int
long
char
-> char제외 순서대로 해당 타입 범위 정해짐

1byte = 8bit = 0과1로 표현할 수 있는 공간 8개
-128 ~ 127 (10000000을 0이 아닌 -128로)

보통 byte short 보다 int long이 많이 사용됨
long을 사용할 경우 숫자뒤에 L붙여주기

char
아스키코드

값지정 3가지 방법
1) char a = ‘a’; char b = ‘가’;
2) char a = ‘\u1188’; //16진수
3) char a = 999; // 유니코드 (0~65,535)

2) 소수형
float double

float : 32bit
double : 64bit

돈계산에선 사용 X -> 제공 범위 넘어서면 값의 정확성 보장 X
-> 이럴 땐 java.math.BigDecimal 클래스 사용

보통 double 많이 사용

3) bool (불리언)
boolean a = true / false;


자바의 모든 자료형은 값을 지정하지 않으면 기본값 사용
BUT 지역변수로 기본자료형 사용할 때는 기본값 X 컴파일 X

기본값이 있지만 초기화하는 버릇 가지기

profile
Back-end-dev

0개의 댓글