Java Basic

2023년 09월 25일

TOC

Java

자바(Java)는 썬 마이크로시스템즈의 제임스 고슬링(James Gosling)과 다른 연구원들이 개발한 객체 지향적 프로그래밍 언어이다. 1991년 그린 프로젝트(Green Project)라는 이름으로 시작해 1995년에 발표했다. 처음에는 가전제품 내에 탑재해 동작하는 프로그램을 위해 개발되었지만 현재 웹 애플리케이션 분야에 가장 많이 사용하는 언어 중 하나이고, 안드로이드를 비롯한 모바일 기기용 소프트웨어 개발에도 널리 사용되고 있다.

개요

Java 의 역사

  • 1991년 선마이크로시스템스(오라클에 인수됨)의 제임스 고슬링이 C 언어를 모델로 연구 시작
  • 1995년 JDK(Java Development Kit) 1.0 발표
  • 1997년 JDK 1.1이 발표되면서 완전한 프로그래밍 언어의 모습을 갖춤

Java의 특징

  • 구문이 간결함
  • 명료한 객체지향 언어
  • 이식성이 높고, 기계에 중립적
  • 분산처리지원
  • 멀티스레드(Multi-thread) 언어

기본 문법

변수와 데이터 형식

public class example {
    public static void main(String args[]) {
        int var1 = 10;
        float var2 = 10.1f;
        double var3 = 10.2;
        char var4 = '안';
        String var5 = "안드로이드";
        System.out.println(var1);
        System.out.println(var2);
        System.out.println(var3);
        System.out.println(var4);
        System.out.println(var5);
    }
}

char : 2byte를 사용하며 한글 또는 영문 1개만 입력

String : 여러 글자의 문자열을 입력

byte : 1byte를 사용하며 -128~+127 까지 입력

short : 2byte를 사용하며 -32768~+32767까지 입력

int : 4bvte를 사용하며 약 21억~+21억까지 입력

long : 8byte를 사용하며 상당히 큰 정수까지 입력 가능

float : 4bvte를 사용하며 실수를 입력

double : 8byte를 사용하며 실수를 입력. float보다 정밀도가 높음

boolean : true 또는 false를 입력

조건문: if, switch()~case

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

        int count = 85;

        if (count >= 90) {
            System.out.println("if statement: pass (A)");
        } else if (count >= 60) {
            System.out.println("if statement: pass");
        } else {
            System.out.println("if statement: fail");
        }

        int points = (count / 10) * 10;

        switch (points) {
            case 100, 90 -> System.out.println("switch statement: pass (A)");
            case 80, 70, 60 -> System.out.println("switch statement: pass");
            default -> System.out.println("switch statement: pass");
        }
    }
}

메소드와 전역변수, 지역변수

  • 전역변수(global variable) : 모든 메소드에서 사용 가능함
  • 지역변수(local variable) : 메소드 내부에서만 사용 가능함
public class example {
    static int var = 100;
    public static void main(String[] args) {
        int var = 0;
        System.out.println(var);

        int sum = addFunction(10, 20);
        System.out.println(sum);
    }

    static int addFunction(int num1, int num2) {
        int hap;
        hap = num1 + num2 + var;
        return hap;
    }
}

예외 처리: try~catch

  • 프로그램 실행 중에 발생하는 오류를 Java는 try~catch문을 통해 처리
public class example {
    static int var = 100;

    public static void main(String[] args) {
        int num1 = 100, num2 = 0;

        try {
            System.out.println(num1 / num2);
        } catch (java.lang.ArithmeticException e) {
            System.out.println("Divide by Zero");
        }
    }
}

클래스와 인스턴스

클래스 정의와 인스턴스 생성

  • 객체지향 프로그래밍(Object-Oriented Programming, OOP)
  • Java, C++, C# 등에서 사 용되는 프로그래밍 기술
  • 클래스(class) = 변수(필드) + 메소드
class Car {
    String color;
    int speed = 0;

    int getSpeed() {
        return speed;
    }

    void upSpeed(int value) {
        if (speed + value >= 200)
            speed = 200;
        else
            speed = speed + value;
    }

    void downSpeed(int value) {
        if (speed - value <= 0)
            speed = 0;
        else
            speed = speed - value;
    }

    String getColor() {
        return color;
    }
}

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

        Car myCar1 = new Car();
        myCar1.color = "red";
        myCar1.speed = 0;

        Car myCar2 = new Car();
        myCar2.color = "blue";
        myCar2.speed = 0;

        Car myCar3 = new Car();
        myCar3.color = "green";
        myCar3.speed = 0;

        myCar1.upSpeed(50);
        System.out.println("The color of myCar1 is " + myCar1.getColor() + ", velocity is " + myCar1.getSpeed() + " km.");

        myCar2.downSpeed(20);
        System.out.println("The color of myCar2 is " + myCar2.getColor() + ", velocity is " + myCar2.getSpeed() + " km.");

        myCar3.upSpeed(250);
        System.out.println("The color of myCar3 is " + myCar3.getColor() + ", velocity is " + myCar3.getSpeed() + " km.");s

        myCar3.downSpeed(20);
        System.out.println("The color of myCar3 is " + myCar3.getColor() + ", velocity is " + myCar3.getSpeed() + " km.");
    }
}

생성자로 인스턴스 만들기

public class Car {
    String color;
    int speed
    Car(String color, int speed) {
        this.color = color;
        this.speed = speed;
    }

    ...

public class example {
    public static void main(String[] args) {
        Car myCar1 = new Car("red", 0);
        Car myCar2 = new Car("blue", 0);
        Car myCar3 = new Car("green", 0);

    ...

메소드 오버로딩

  • 클래스 내에서 메소드의 이름이 같아도 파라미터의 개수나 데이터형만 다르면 여러 개 선언 가능
public class Car {
    String color;
    int speed;

    Car(String color, int speed) {
        this.color = color;
        this.speed = speed;
    }

    Car(int speed) {
        this.speed = speed;
    }

    Car() {
    }

    void upSpeed(double value) {
        if (speed >= 200)
            speed = 200;
        else
            speed = speed + (int) value;
    }

    int getSpeed() {
        return speed;
    }

    void upSpeed(int value) {
        if (speed >= 200)
            speed = 200;
        else
            speed = speed + value;
    }

    void downSpeed(int value) {
        if (speed <= 0)
            speed = 0;
        else
            speed = speed - value;
    }

    String getColor() {
        return color;
    }
}

정적 필드, 정적 메소드, 상수 필드

  • 정적 필드(static field) : 클래스 자체에서 사용되는 변수
  • 정적 메소드(static method) : 메소드 앞에 static 붙여 사용. 인스턴스 없이 ‘클래스명.메소드명()’으로 호출해서 사용
  • 상수 필드 : 정적 필드에 초기값을 입력하고 final을 앞에 붙임
public class Car {
    String color;
    int speed;
    static int carCount = 0;
    final static int MAXSPEED = 200;
    final static int MINSPEED = 0;

    static int currentCarCount() {
        return carCount;
    }

    Car(String color, int speed) {
        this.color = color;
        this.speed = speed; carCount++;
    }
    Car(int speed) {
        this.speed = speed;
    }
    Car() {
    }

    void upSpeed(double value) {
        if (speed >= 200)
            speed = 200;
        else
            speed = speed + (int) value;
    }
    int getSpeed() {
        return speed;
    }
    void upSpeed(int value) {
        if (speed >= 200)
            speed = 200;
        else
            speed = speed + value;
    }
    void downSpeed(int value) {
        if (speed <= 0)
            speed = 0;
        else
            speed = speed - value;
    }
    String getColor() {
        return color;
    }
}

정적 구성 요소 추가

public class example {
    public static void main(String[] args) {
        Car myCar1 = new Car("red", 0);
        Car myCar2 = new Car("blue", 0);
        Car myCar3 = new Car("green", 0);

        System.out.println("The number of car produced (static field) ==> " + Car.carCount);
        System.out.println("The number of car produced (static method) ==> " + Car.currentCarCount());
        System.out.println("The upper limit of velocity ==> " + Car.MAXSPEED);
        System.out.println("The value of PI ==> " + Math.PI);
        System.out.println("3 to the 5th power ==> " + Math.pow(3, 5));
    }
}

Reference

Java (programming language)

IT CookBook, Android Studio를 활용한 안드로이드 프로그래밍(8판)

Written by

yhuj79

🌱 Junior Developer