java 기초문법

2020-06-30

.

JAVA_TIL(20200630)

  • study program : youtube 생활코딩 채널 ‘JAVA1’

  • 학습환경 : Ubuntu 18

[학습노트]

  • 먼저 아래와 같이 프로젝트 폴더를 만들고 자바파일을 하나 생성해준다.

1

  • 그리고 아래와 같이 코딩해서 실행해본다.

자바에서 문자열과 숫자를 처리할때를 구분할 수 있어야 한다.

public class datatype{
    public static void main(String[] args) {
        System.out.println(777); // 숫자 777을 출력할때
        System.out.println("seven seven seven"); // 문자열 seven seven seven 을 출력할때
        System.out.println("777"); // 문자열 777을 출력할때
    }
}
[출력결과]

777
seven seven seven
777
  • 아래와 같이 코딩하여 문자열과 숫자 데이터의 처리가 어떻게 되는지 확인해본다.
public class datatype{
    public static void main(String[] args) {
        System.out.println(6+6); // 출력값으로 숫자 12가 출력될 것이다. --> 숫자 더하기 연산
        System.out.println("6"+"6"); //출력값으로 문자열 66이 출력될 것이다. --> 결합 문자열 연산
    }
}
[출력결과]

12
66
  • 당연한거지만 아래와 같이 “문자열 *(곱셈연산) 문자열”을 코딩해서 실행하면 Error가 발생할 것이다.
public class datatype{
    public static void main(String[] args) {
        System.out.println("6"*"6");
    }
}
[출력결과]

Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The operator * is undefined for the argument type(s) java.lang.String, java.lang.String

at datatype.main(datatype.java:3)
  • 아래와 같이 .length()를 이용해서 문자열의 길이를 추출할 수도 있다.
public class datatype{
    public static void main(String[] args) {
        System.out.println("7777".length());
    }
}
[출력결과]

4
  • 역시 당연한 얘기지만 .length()를 이용해서 숫자의 길이를 추출하려고 하면 Error가 발생한다.
public class datatype{
    public static void main(String[] args) {
        System.out.println(7777.length());
    }
}
[출력결과]

Exception in thread "main" java.lang.Error: Unresolved compilation problems:
Syntax error on token "7777.", . expected after this token
Cannot invoke length() on the primitive type double

at datatype.main(datatype.java:3)
  • 그러면 숫자데이터에 대한 연산을 해보자

아래와 같이 java 파일을 만들어본다. 이 방법은 기존의 방법과 동일하지만 class를 생성해서 만든다는점에서 기존의 방법과 약간 다르다. 결국에는 .java 를 만든다는 점에서는 같은 방법이다.

make java pjt file 2

  • 그런다음에 아래와 같이 코딩해서 간단한 숫자연산을 실행해보자.
public class Number {

    public static void main(String[] args) {
        System.out.println(5 + 3); // 덧셈연산, 출력값은 숫자 8이 될 것이다.
        System.out.println(5 - 3); // 뺄셈연산, 출력값은 숫자 2가 될 것이다.
        System.out.println(5 * 3); // 곱셈연산, 출력값은 숫자 15가 될 것이다.
        System.out.println(6 / 3); // 나눗셈연산, 출력값은 숫자 2가 될 것이다.
    }

}
[출력결과]

8
2
15
2
  • 아래 그림과 같이 자바에서 Math라는 함수를 통해 예를 들어서 파이 같은 자주쓰는 수학 연산을 할 수 있다.

Math를 이용해서 절대값 등 다양한 숫자연산을 할 수 있다.

image

public class Number {

    public static void main(String[] args) {
        System.out.println(Math.PI);
    }

}
[출력결과]

3.141592653589793
  • 이 Math 함수를 응용해서 숫자를 연산할 수도 있다.
public class Number {

    public static void main(String[] args) {
        System.out.println(Math.floor(Math.PI)); // 3.141592 여기에서 뒤에 소수점을 내리고 싶을때
        System.out.println(Math.ceil(Math.PI)); // 3.141592 여기에서 뒤에 소수점을 올리고 싶을때
    }

}
[출력결과]

3.0
4.0
  • 문자열에 대해서도 아래와 같이 기초문법을 실습해본다.
public class Number {

    public static void main(String[] args) {

        // string vs character
        System.out.println("Hello World"); // 문자가 모여있는 열=문자열=string 이다.

        // 자바에서는 string과 character를 엄격하게 구분한다.
        // 예를 들어서 아래와 같이 작성하고 실행하면 Error가 난다.
        // System.out.println('Hello World');

        System.out.println('H'); // Character=한글자를 표현하는 데이터 타입
                                   // 참고로 string은 character들이 모여있는 형태를 말한다.

        System.out.println("H"); // H라는 한글자지만 큰따옴표("")안에 명시가 되어 있으므로 string이다.

        // Hello world를 줄바꿈하고 싶을때 아래와 같이 코딩하면 줄바꿈이 될까?
        // 아니다. 그대로 Hello World가 된다.
        System.out.println("Hello "
        + "World");

        // 줄바꿈을 하고 싶다면 \n를 이용하면 된다.
        System.out.println("Hello \nWorld");

        // escape = 예를들어서 Hello "World" 를 출력하고 싶을때
        System.out.println("Hello \"World\"");

    }

}
[출력결과]

Hello World
H
H
Hello World
Hello
World
Hello "World"
  • 문자열을 치환하는 실습도 해보자.
public class Number {

    public static void main(String[] args) {

        System.out.println("Hello World".length()); // 빈칸포함해서 character가 몇개인지 counting

        // 문자열을 replace해보자
        System.out.println("Hello minman !! Hello minman !! Hello minman !!");
        System.out.println("Hello minman !! Hello minman !! Hello minman !!".replace("minman","minsu"));

        System.out.println("Hello [[name]] !! Hello [[name]] !! Hello [[name]] !!".replace("[[name]]","park"));

    }

}
[출력결과]

11
Hello minman !! Hello minman !! Hello minman !!
Hello minsu !! Hello minsu !! Hello minsu !!
Hello park !! Hello park !! Hello park !!
  • 변수를 할당해서 출력하는 실습도 해보자.
public class Number {

    public static void main(String[] args) {

        // 자바는 변수 지정시에 어떤 데이터 타입인지 명시해줘야 한다.
        // 그리고 그 데이터 타입에 맞게 변수를 정의해야 한다.

        int a = 1; // integer(정수)
        System.out.println(a);

        double b = 1.1; // real number(실수)
                         // 만약에 예를들어 int b = 1.1; 로 코딩하면 애러가 날 것이다.

        System.out.println(b);

        String c = "Hello World";
        System.out.println(c);

    }

}
[출력결과]

1
1.1
Hello World
  • 변수를 이용한 실습을 해보자.

변수는 값에 이름을 매기는 것이다. 그래서 누구나 이해할 수 있도록 올바른 변수이름을 정의해줘야 한다.

public class Number {

    public static void main(String[] args) {

        // 문자열 변수를 할당해서 새로운 문자열을 표현하는 실습
        // 저 name이라는 변수가 많으면 많을 수록 우리가 작성한 코딩이 효율적인 것이다.
        String name = "minman";
        System.out.println("Hello, " + name + " ... " + name + " ... " + " park ... bye ");

        // 코딩을 할때 변수를 어떻게 작성하느냐가 중요하다.
        // 결국에는 사람이 읽는 언어이기 때문이다.
        // 아래와 같이 VAT = 10.0이라고 표현을 한것은 다른사람이 봤을때
        // "아 부가가치세 10프로를 말하는 구나"라고 이해할 수 있어야 한다는 것이다.
        double VAT = 10.0;
        System.out.println(VAT);

    }

}
[출력결과]

Hello, minman ... minman ...  park ... bye
10.0
  • 어떤 데이터 타입을 다른 데이터 타입으로 변환하는 casting 실습을 해보자.
public class Number {

    public static void main(String[] args) {

        // 자바는 데이터 변수에 대한 타입을 엄격하게 통제하기 때문에 관련해서 명확하게 구분해서 알고 있어야 한다.

        // 1은 정수지만 b라는 변수에 담길때 b가 double 즉, 실수형태이기 때문에 자동으로 1이 double형 1.0으로 변경된다.
        // 정수 1을 실수 1.0으로 바꾸는데 데이터 손실이 잃어나지 않는다.
        double b = 1;
        System.out.println(b);

        // int c = 1.1; 은 1.1이라는 실수를 정수형 데이터 타입에 담으려고 하니까 Error가 날 것이다.
        // c는 정수형태이기 때문에 1은 들어가는데 0.1은 잃어버린다. 즉, 데이터 손실이 잃어난다.

        // (int) 1.1 --> 1.1은 실수인데 강제로 int로 변환하겠다는 의미이다.
        // 데이터 손실을 감수하고, 명시적으로 강제로 int로 바꾸겠다.
        int e = (int) 1.1;
        System.out.println(e);

        // 마찬가지로 1이라는 정수를 강제로 1.0 실수로 바꾸겠다는 의미이다.
        double b1 = (double) 1; // double b = 1; 와 같은 의미다.
        System.out.println(b);

        // 1이라는 정수를 string으로 변환해보자.
        String f = Integer.toString(1);
        System.out.println(f.getClass()); //.getClass() 는 해당 변수가 어떤 데이터 타입인지 알려주는 함수

    }

}
[출력결과]

1.0
1
1.0
class java.lang.String