자바 컴파일러
자바 실행 라이브러리
자바 가상 머신(JVM)
오라클 Open JDK, Adoptium Eclipse Temurin, Amazon Corretto(AWS에 최적화)에서 자바 표준 스펙을 갖고 각 회사들의 스타일에 맞게 구현한다. 표준 스펙에 맞게 개발되어 있기 때문에 대부분 문제 없이 동작한다.
Hello.java와 같은 자바 소스 코드를 개발자가 작성한다.
자바 언어는 대소문자를 구분한다.
public class HelloJ {
public static void main(String[] args){
System.out.println("hello java");
}
}
Hello.java와 같은 자바 소스 코드를 작성한다.
자바 컴파일러를 사용하여 소스 코드를 컴파일 한다.
자바가 제공하는 javac라는 프로그램을 사용한다.
.java -> .class 파일이 생성된다.
자바소스 코드를 바이트코드로 변환하며 자바 가상 머신에서 빠르게 실행될 수 있도록 최적화하고 문법 오류도 검출한다.
자바 프로그램 실행
자바 가상 머신(JVM)실행되면서 프로그램이 작동
IDE를 통해 자바 설치를 편리하게 할 수 있다.
일반적인 프로그램은 다른 운영체제에서 실행할 수 없다.
하지만 java는 다른 운영체제에서 실행이 가능하다.
운영체제의 독립성에 의해 각각 환경에 맞춰 설치가 가능하다.
psvm -> main메서드 단축키
sout -> println 단축키
soutv -> 가까운 변수의 값을 출력해준다.
ctrl + r : 마지막에 실행했던 코드가 실행된다.
Complete current statement : ctrl+shift+enter : 문장을 완성시켜준다. 세미콜론을 사용해서
소괄호 : ()
중괄호 : {} block범위이다.
대괄호 : []
들여쓰기가 적용되는 것을 확인할 수 있다.
한 줄 주석 : //
여러 줄 주석 : /* */
패키지를 만든다.
자바 파일을 구분하기 위한 폴더이다.
variable라는 패키지를 만들었다면
package variable;
소속된 패키지를 선언해야 하고, 선언의 위치가 같아야 한다. 데이터를 담을 수 있는 그릇이 필요하다.
int b = 2; 변수 선언과 초기화 한번에
int c = 3, d = 4; 이렇게 작성 하는것도 가능하다.
메모리는 여러 시스템이 함께 사용하는 공간이다.
java는 변수가 초기화되지 않았다는 오류이다.
초기화를 하지 않으면 이상한 값이 출력될 수도 있다. 변수를 초기화 하도록한다.
ctrl + D : 바로 아랫줄에 코드를 붙여넣기 한다.
- 정수
byte b = 127; // -128 ~ 127
short s = 32767; // -32,768 ~ 32,767
int i = 2147483647; // -2,147,483,648 ~ 2,147,483,647 (약 20억)
log l = 9223372036854775807L; => 반드시 L을 써줘야 한다.
// -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807 (20억 이상부터)
- 실수
float f = 10.0f;
double d = 10.0;
메모리를 작게 사용하면 작은 숫자 표현, 많이 사용하면 큰 숫자를 표현할 수 있다.
산술 연산자 : +, -, , /, %
증감 연산자 : ++, --
비교 연산자 : ==, !=, >, <, >=, <=
논리 연산자 : &&, ||, !
대입 연산자 : =, +=, -=, =, /=, %=
삼항 연산자 : ? :
연산자 : 연산기호
피연산자 : 연산대상
문자열 더하기
String result1 = "hello " + "world";
System.out.println(result1);
문자열과 숫자 더하기
(숫자를 문자열로 변경된다.)
String result3 = "a + b = " + 10;
System.out.println(result3);
// a + b = 10이 출력된다.
연산자 우선순위에 의해 곱셈이 먼저 계산되고, 우선순위를 변경하려면 ()괄호를 사용하면 된다.
1) 괄호 ()
2) 단항 연산자 ++, --, !, ~, new, (type)
3) 산술 연산자 , /, %, +, -
4) Shift연산자 <<, >>, >>>
5) 비교 연산자 <, <=, >, >=, instanceof
6) 등식 연산자 ==, !=
7) 비트 연산자 &, ^, |
8) 논리 연산자 &&, ||
9) 삼항 연산자 ? :
10) 대입 연산자 =, +=, -=, =, /=, %= 등등
++, --로 표현되며, 1만큼 증가시키거나 감소시킨다.
연산자의 위치에 따라 연산이 수행되는 시점이 달라진다
++a : 전위 연산자는 증감 연산자를 피연산자 앞에 둘 수 있다.
증감 연산이 먼저 수행된 후 나머지 연산이 수행된다.
a++ : 후위 연산자는 증감 연산자를 피연산자 뒤에 둘 수 있다.
다른 연산이 먼저 수행된 후 증감 연산이 수행된다.
비교 연산자를 사용하면 참 또는 거짓이라는 결과가 나온다. boolean형을 사용한다.
= : 대입 연산자이고, 변수에 값을 대입하는 것이다.
== : 동등한지 확인하는 비교 연산자이다.
instanceof 연산자 : 객체 타입을 확인한다.
그외 : new, [] 배열인덱스, .객체 멤버 접근, ()메소드 호출
삼항연산자 : String name = (num%2==0) ? "짝수" : "홀수";
문자열이 같은지 비교할 때는 ==연산자가 아니라, .equals()메서드를 사용해야 한다.
String str1 = "문자열1";
String str2 = "문자열2";
boolean result2 = str1.equals("문자열1"); // 문자열 변수, 리터럴 비교
boolean result3 = str1.equals(str2); // 문자열 변수를 비교하는 것이다.
boolean형인 true, false를 비교하는데 사용한다.
System.out.println(true || true);
System.out.println(!true)
System.out.println(!a); // false
boolean result = a > 10 && a < 20; // 변수의 위치를 변경해도 결과는 같다.
int num1 = 10, num2 = 20, num3 = 30;
+=, -=, *=, /=, %=
실무에서 거의 사용할 일이 없다.
&, |, ^, ~, <<, >>, >>>