
java
java의 기본코드시작
public class Main {
public static void main(String[] args) {
}
}
1.변수
int number = 5;
System.out.println(number);
String sonhs = "hello";
System.out.println(sonhs);
}
}
int는 변수 '숫자' 자료형의 이름이고,
String은 변수 '문자' 자료형의 이름이다.
실행한 결과는?
5
hello
2.상수
final int finalNumber = 1;
System.out.println(finalNumber);
finalNumber = 2;
System.out.println(finalNumber);
JAVA는 상수값이 재할당이 안된다.위 코드처럼 실행할경우
C:\Users\thsgu\OneDrive\���� ȭ��\�� ����\son_java\src\main\java\Main.java:12: error: cannot assign a value to final variable finalNumber
finalNumber = 2;
^
1 error
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':compileJava'.
이렇게 오류가 뜬다.
그렇다면 문자열로는 재할당이 가능한가??
final int finalNumber = 1;
System.out.println(finalNumber);
sonhs = "good bye!";
System.out.println(sonhs);
이런식으로 finalNumber값 밑에 sonhs라는 새로운 재할당값 문자열을 줬다. 실행을 하면
1
good bye!
입력한 순서대로 실행이 잘 된다.
tip:각 언어마다 보이지않는 룰같이 정해진 단어가 있다.
ex)파이썬의 경우 'final_number'와 같이 쓰는반면, JAVA에서는 camelCase(낙타 등모양이 구불한거처럼) 형식으로 첫번째는 무조건 맨앞에 소문자, 두번째 단어에는 대문자형식으로 'finalNumber' 이렇게 쓴다.
3.자료형
자료형에는 크게 두가지로 나뉜다. Primitive Type(기본 자료형)과 Reference Type(참조 자료형)으로 나뉜다.
(1)기본 자료형
->숫자
short s = 1;
System.out.println(s);
int a =3;
System.out.println(a);
long b = 4;
System.out.println(b);
float f = 5.5F;
System.out.println(f);
double d = 5.5F;
System.out.println(d);
System.out.println(Short.MAX_VALUE);
System.out.println(Short.MIN_VALUE);
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
System.out.println(Long.MAX_VALUE);
System.out.println(Long.MIN_VALUE);
System.out.println(Float.MAX_VALUE);
System.out.println(Float.MIN_VALUE);
System.out.println(Double.MAX_VALUE);
System.out.println(Double.MIN_VALUE);
short는 2바이트로 표현할 수 있는 숫자 변수다.
숫자를 칭하는 변수는 앞서 말한 int가 있다. 하지만 더 큰 숫자를 위해선 long이라는 변수가 있다. int 는 +- 20억까지, long은 더 크게 표현하고 싶을때 쓸 수 있다.
float 은 소수점을 표현하고 싶을때 쓴다. 그리고 값뒤에 대문자F를 붙혀야만 실행했을때 제대로 값을 볼 수 있다.
double 역시 long처럼 더 큰 소수점을 표현하고 싶을때 쓴다.
맨 밑에 있는 코드같은 경우는 각 자료형에서 볼 수 있는 최대,최솟값이다.
위코드를 실행한결과
1
3
4
5.5
5.5
32767
-32768
2147483647
-2147483648
9223372036854775807
-9223372036854775808
3.4028235E38
1.4E-45
1.7976931348623157E308
4.9E-324
이렇게 각 자료형의 값,최대값,최솟값을 가져올 수 있다.
->문자
char c = 'A';
System.out.println(c);
문자는 char으로 표현한다. char은 무조건 문자 한 글자만 가져올 수 있다. 그래서 값에 두글자 이상을 넣으면 오류 및 실행이 되지 않는다.
출력결과는 당연히 'A'
->논리
boolean fact = true;
fact = false;
System.out.println(fact);
boolean 이라는 변수명을 이용해 참 거짓의 값을 변수로 선언할 수 있다. 조건문과 반복문에서 자주 사용한다.
출력결과는 마지막에 쓴대로 'false'.
->바이트
byte data = 'd';
System.out.println(data);
바이트는 값을 바이트형식 즉 숫자로 표현해준다. 숫자로 나오는 이유는 십진법 아스키코드를 사용하기 때문이다.
'd'라는 문자를 아스키코드를 사용하면 숫자 '100'
출력결과도 당연히 '100'이다.
(2)참조자료형
String sonhs = "Hello";
System.out.println(sonhs);
int[] intArray = new int[] {1,2,3,4,5};
System.out.println(Arrays.toString(intArray));
자바에서 참조 자료형은 기본 자료형이 아닌 모든 것을 참조 자료형이라고 한다. 정확히는 참조 자료형이란 자바의 인스턴스를 가리킬 수 있는 자료형이다.
위코드를 실행하면
Hello
[1, 2, 3, 4, 5]
hello와 배열이나온다.
4.연산자
(1)산술연산자
int num1 =10;
int num2 = 20;
System.out.println(num1 + num2);
System.out.println(num1 - num2);
System.out.println(num1 * num2);
System.out.println(num1 / num2);
System.out.println(num1 % num2);
산술 연산자는 비교적 간단하다. 그냥 할당값에 기본 기호를 넣어주면 된다.
(2)대입연산자
int num1 = 10;
int num2 = 5;
num1 += num2; // num1 = num1 + num2
System.out.println(num1);
num1 -= num2; // num1 = num1 - num2
System.out.println(num1);
num1 *= num2; // num1 = num1 * num2
System.out.println(num1);
num1 /= num2; // num1 = num1 / num2
System.out.println(num1);
num1 %= num2; // num1 = num1 % num2
System.out.println(num1);
대입연산자는 변수 하나에 값을 대입해서 계산하는방식이다 .
맨 위에있는 num1 = num1+num2 라는뜻이다
출력결과는
15
10
50
10
0
(3)관계연산자
int num1 = 10;
int num2 = 20;
int num3 = 10;
System.out.println(num1 > num2); // 10 > 20
System.out.println(num1 >= num3); // 10 >= 10
System.out.println(num1 < num2); // 10 < 20
System.out.println(num1 <= num2); // 10 <= 20
System.out.println(num1 == num3); // 10 == 10
System.out.println(num1 != num2); // 10 != 20
관계연산자는 true/false로 맞는지 틀린지 판단해주는 연산자이다.
출력결과는
false
true
true
true
true
true
(4)논리연산자
boolean a = true;
boolean b = false;
System.out.println(a && b);
// &&는 두가지 모두 참일 경우에는 true를, 그렇지 않을 경우에는 false를 반환합니다.
System.out.println(a || b);
// ||는 두가지 모두 거짓일 경우에는 false를, 그렇지 않을 경우에는 true를 반환합니다.
System.out.println(!b);
// !는 피연산자의 논리값을 바꿉니다. true는 false로 , false는 true로 반환합니다.
&&는 두가지 모두 참일 경우에는 true를, 그렇지 않을 경우에는 false를 반환한다.
||는 두가지 모두 거짓일 경우에는 false를, 그렇지 않을 경우에는 true를 반환한다.
!는 피연산자의 논리값을 바꾼다. true는 false로 , false는 true로 반환한다.
출력결과는
false
true
true
5.조건문
(1)if문
JAVA에서의 if문은 매우 직관적이고 간단하다. 맨윗줄부터 차례로 읽히고 실행된다는 점만 기억하자.
int check = 100;
int num1 = 150;
if (num1 > check) {
System.out.println("100보다 큰 수입니다");
}
코드 출력결과는 당연히 >'100보다 큰 수입니다'
(2)switch문
switch문은 이미 조건을 정하고 간다는 의미로 보면 편하다.
'score'의 변수값은 'A',sout밑에 break를 써주면 바로 그 위에 있는 결과까지만 가져온다. 출력을 하면 "A등급입니다"라는 결과가 나온다.
char score = 'A';
switch (score) {
case 'A':
System.out.println("A등급입니다.");
break;
case 'B':
System.out.println("B등급입니다.");
break;
case 'C':
System.out.println("C등급입니다.");
break;
default:
System.out.println("C등급보다 낮은 등급입니다.");
break;
}
만약 break를 안쓰고 그대로 출력하면
A등급입니다.
B등급입니다.
C등급입니다.
C등급보다 낮은 등급입니다.
(3)삼항연산자
말그대로 코드에 수식이 3개 들어가있는 뜻이다
int a = 5;
String reuslt = (a < 10) ? "10보다 작습니다." : "10보다 큽니다.";
System.out.println(reuslt);
a는 5이다.당연히 10보다 작다.그렇다면 true.코드를 출력하면 결과값은
"10보다 작습니다"라고 나온다. 만약 a가 10보다 큰값으로 설정해두면 당연히 false값인 "10보다 큽니다" 라는 출력결과가 나온다.
삼항연산자의 기본코드 구조
(조건식) ? A : B
6.반복문
개인적으로 제일 이해안가는 부분이다. 파이썬과 자바스크립트의 반복분 구성은 비슷비슷하지만 조금씩 다르다.
(1)if문
int sum = 0;
for (int i = 0; i < 10; i++) {
sum += (i + 1);
}
System.out.println(sum);
1부터 10까지의 합을 구하는 예제다. 변수 i는 1부터 10까지 변할 때까지 1씩 더해진다. i가 증감식에 의해 11이 되면 조건문에 위배되기 때문에 더이상의 반복문 실행은 진행 되지 않고 출력된다.
(2)each문
String[] days = {"Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday", "Sunday"};
for (String day: days){
System.out.println(day);
배열의 값들이 하나씩 출력된다. 즉, for-each문은 배열의 값들을 하나하나 변수에 담아서 출력한다고 생각하면 편하다.
(3)while문
int i = 0;
int sum = 0;
while (i < 10) {
sum += i + 1;
i += 1;
}
System.out.println(sum);
위의 for 반복문과 똑같은 결과를 반환하는 예제다. i가 1,2,3,이렇게 증가하다 11이 되면 조건식에 부합하지 않기 때문에 while 반복문이 종료되고 출력된다.