java 기초문법
2020-06-30
.
JAVA_TIL(20200630)
-
study program : youtube 생활코딩 채널 ‘JAVA1’
-
학습환경 : Ubuntu 18
[학습노트]
- 먼저 아래와 같이 프로젝트 폴더를 만들고 자바파일을 하나 생성해준다.
- 그리고 아래와 같이 코딩해서 실행해본다.
자바에서 문자열과 숫자를 처리할때를 구분할 수 있어야 한다.
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 를 만든다는 점에서는 같은 방법이다.
- 그런다음에 아래와 같이 코딩해서 간단한 숫자연산을 실행해보자.
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를 이용해서 절대값 등 다양한 숫자연산을 할 수 있다.
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