[JAVA] 쉽게 배우는 자바1

JAVA의 작동원리, 데이터 타입, 기본연산, 클래스, 메소드, 조건문, 반복문 등등

Posted by iheese on January 06, 2022 · 12 mins read

JAVA의 작동 원리

  1. title.java (java source code; 우리가 친 코드)

    • Compile: java코드를 기계어로 바꿔주는 과정
  2. title.class 변환 (java appilication; 컴퓨터가 이해할 수 있는 언어로 바꿈)

    • Run :실행
  3. Java Virtual Machine(자바 가상 머신; class 파일 읽음

    • Run: 실행


JAVA의 데이터 타입

public class Datatype{ //파일명대로 설정해주어야한다. 
public static void main(String[] args) {
 System.out.println(6); // Number
 System.out.println("six"); // String

 System.out.println("6"); // String 6

 System.out.println(6+6); // 12; 계산 가능
 System.out.println("6"+"6"); // 66

 System.out.println(6*6); // 36
 // System.out.println("6"*"6"); 
// 문자열끼리는 계산이 안된다. 

 System.out.println("1111".length()); // 4 문자열 길이 구하는 메소드

 }
}


JAVA 기본 연산, Math 클래스

public class Number {

    public static void main(String[] args) {
        // Operator
        System.out.println(8 + 2); // 10
        System.out.println(8 - 2); // 6
        System.out.println(8 * 2); // 16
        System.out.println(8 / 2); // 4

        System.out.println(Math.PI); // 3.141592653589793
        System.out.println(Math.floor(Math.PI)); //4
        System.out.println(Math.ceil(Math.PI)); //3
        System.out.println(Math.round(1.6)); //2

    }

}


JAVA 문자열 연산

public class StringOperation {

    public static void main(String[] args) {
   // Character VS String 
        System.out.println("Hello World"); // String
        System.out.println('H'); // Character 한개의 문자
        System.out.println("H"); 

        // new line
        System.out.println("Hello \nWorld"); //줄바꾸긱

        // escape \"\" 이런 식으로 큰 따옴표 출력 가능
        System.out.println("Hello \"World\"");// Hello "World" 

        //길이
        System.out.println("Hello World".length()); // 11
        //대체하기
        System.out.println("Hello, [[[name]]] ... bye. ".replace("[[[name]]]", "hs"));
        // Hello, hs ... bye. 
    }

}


JAVA Casting(데이터 타입 변환)

public class Casting {

    public static void main(String[] args) {

        double a = 1.1; //실수
        double b = 1;
        int c = 5; //정수
        double b2=(double) 1; //상관없다.     

        System.out.println(b2); //1

        // int c = 1.1;
        double d = 1.1;
        int e = (int) 1.1; //버리는 값이 생기므로 정확히 명시해줘야 한다.
        System.out.println(e); //1

        // 1 to String 
        String f = Integer.toString(1);
        System.out.println(f.getClass()); //string  

        //String to double
        String str ="55";
        double str1 = Double.parseDouble(str);
        System.out.println(str1);

        //Double to string
        double num=12.11;
        String num1 = Double.toString(num);
        System.out.println(num1);
        System.out.println(num1.getClass());//class java.lang.String
    }

}
  • 정수에서 실수로 변경할 때는 버리는 값이 없어서 딱히 명시해줄 필요없다.

  • 실수에서 정수로 변경할 때는 버리는 값이 생기므로 반드시 명시해줘야한다.

  • casting 하는 다양한 방법이 있다. (reference 참고)


JAVA 클래스

  • 정의하고자 하는 변수들과 메소드들의 묶음

  • 클래스라는 팀이 있다면, 그 속의 다양한 역할을 맡은 팀원들이 메소드가 된다.

  • 이클립스 상단의 Window - Show View - Outline 의 클래스의 포함된 변수와 메소드 확인 가능


JAVA 메소드

  • 클래스의 동작을 나타내는 함수

  • 예를 들어 Math의 floor, ceil / PrintWriter의 write, close 등이 메소드

  • Refactor-Extract Method (Alt+Shift+M) 로 메소드를 만들 수 있다.

  • Refactor - Convert Local Variable to Filed로 지역 변수(Filed)를 전역 변수로 변경해 메소드의 파라미터를 없앨 수 있다. 전역변수로 변경하고 main 메소드 안에서 값을 지정해주면 된다.


JAVA 인스턴스

  • 클래스를 컴퓨터 상에서 실체화한 것
//클래스 
public class Animal {
...
}
//객체와 인스턴스 
public class Main {
  public static void main(String[] args) {
    Animal cat, dog; // '객체'

    // 인스턴스화
    cat = new Animal(); // cat은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
    dog = new Animal(); // dog은 Animal 클래스의 '인스턴스'(객체를 메모리에 할당)
  }
}
  • 인스턴스는 객체에 포함되는 개념이다.

  • 인스턴스는 어떤 원본(추상적인 개념)으로부터 ‘생성된 복제본’을 의미한다.

  • 다양한 값을 넣어 똑같은 클래스를 여러 번 사용하고 싶을 때 사용한다.

  • 여러 번 사용할 클래스의 static 키워드를 제거해주어야 사용 가능하다.


JAVA 조건문

     if(income >= 10000.0) {
            dividend1 = income * 0.6;
            dividend2 = income * 0.3;
            dividend3 = income * 0.1;
        } else if(income>=5000.0 && income<10000.0){
            dividend1 = income * 0.5;
            dividend2 = income * 0.3;
            dividend3 = income * 0.2;
        } else{
            dividend1 = income * 1.0;
            dividend2 = income * 0;
            dividend3 = income * 0;
        }
  • 논리 연산자

    • and: &&

    • or: ||

    • not: !

  • 비트 연산자(이진법)

    • &: 같은 위치에 모두 1이 존재해야 1이 된다.(and 과 비슷)

    • ex) 1001 & 0001 == 0001

    • |: 어떤 위치든 1이 있으면 1이된다. (or 과 비슷)

    • ex) 1000 | 0001 == 1001


JAVA 배열

     public class AccountingArrayApp {

        public static void main(String[] args) {
       // string 역시 배열이다.     

     // ....     

         double[] dividendRates = new double[3]; // 배열 길이 
        dividendRates[0] = 0.5;
        dividendRates[1] = 0.3;
        dividendRates[2] = 0.2;

        double dividend1 = income * dividendRates[0]; //인덱스 0부터 시작 
        double dividend2 = income * dividendRates[1];
        double dividend3 = income * dividendRates[2]; 
      //인덱스로 접근 가능   


JAVA while 문

     double[] dividendRates = new double[3];
        dividendRates[0] = 0.5;
        dividendRates[1] = 0.3;
        dividendRates[2] = 0.2;

        int i = 0; 
        while (i < dividendRates.length) { //조
            System.out.println("Dividend : " + income * dividendRates[i]);
            i = i + 1;
        }

//        double dividend1 = income * dividendRates[0];
//        double dividend2 = income * dividendRates[1];
//        double dividend3 = income * dividendRates[2];

//        System.out.println("Dividend 1 : " + dividend1);
//        System.out.println("Dividend 2 : " + dividend2);
//        System.out.println("Dividend 3 : " + dividend3);


JAVA 접근 제한자

  • public : 외부 클래스가 자유롭게 사용 가능

  • protected: 같은 패키지 또는 자식 클래스에서만 사용 가능

  • private: 개인적인 것이라 외부에서 사용 불가능


JAVA static, final, static final

  • static: 객체마다 가질 필요가 없는 공용으로 사용하는 필드, 인스턴스 필드를 포함하지 않는 메소드

  • final: 한 번 값이 정해지면 바꿀 수 없는 필드

  • static final: 모든 영역에서 고정된 값으로 사용하는 상수

Reference: