객체 지향 언어
자바는 객체 지향 언어로, 프로그램을 객체로 나누어 만들고 객체들을 결합하여 프로그램을 완성하는 기법을 사용한다. 이를 통해 상속, 캡슐화, 다형성과 같은 객체 지향 특징을 제공한다.프로그래밍 언어의 종류
- 절차 지향 언어 (C언어) -> 위에서부터 아래로
- 객체 지향 언어 (Java, Python, C++) -> Object
단순성
자바는 C/C++을 기반으로 개발되었지만, 포인터와 같이 복잡한 기능은 없어서 단순하게 사용된다.
이식성
자바는 바이트코드를 생성하고 가상 머신(JVM : Java Virtual Machine)을 통해 실행되어, 어떤 운영체제에서도 동일한 결과를 얻을 수 있는 높은 이식성을 가지고 있다.
멀티 스레드(Multi-Thread)
CPU를 최대한 활용한다(CPU를 최대한 활용하기 위해 프로그램의 2가지 이상을 동시에 실행가능)
메모리 자동정리
가비지 컬렉터 Garbage Collector - 사용하지 않는 메모리를 주기적으로 자동으로 수거하고 관리
풍부한 오픈소스 라이브러리
매우 많은 코드가 공개 -> 오픈 소스(무료)
- 자바는 실행을 위해 자바 가상 머신을 거쳐야 하기 때문에 다른 언어에 비해 실행 속도가 상대적으로 느리다.
- 예외 처리는 잘 되어 있지만, 개발자가 처리를 명시적으로 지정해 주어야 하므로 편리함에 제약이 따른다.
HelloWorld.java
👉 작성한 파일 이름이 메인 클래스의 이름이 된다
메인 클래스
👉 public static void main 메소드를 갖는 클래스
main 메소드
👉 자바 프로그램의 시작 지점. 한 메인 클래스에 main 메소드는 2개 이상 있으면 안됨!
System.out.println()
👉 출력문 함수
📝 자바의 모든 문장의 끝에는 세미콜론(;)이 있어야 함!
int a = 20; -> int:정수, a:변수이름, =:대입, 20:수, ;:끝 -> 변수 선언 문
HelloWorld.java
public class HelloWorld {
public static int sum(int a, int b) {
return a + b;
}
// main 메소드 부터 시작한다 -> 주석 (comment) + 설명을 다는 용도
public static void main(String[] args) {
System.out.println("Hello World!");
int a = 20;
int b = 30;
System.out.println(sum(a, b));
}
}
코드 작성후, 코드를 실행하려면, 실행 단추 Run 을 클릭한다. 또는 단축키 fn command F11 (mac기준)
결과값은 :
Hello World!
,50
출처:멘토씨리즈_자바
자바 코드에서 사용되는 이름 규칙을 식별자라고 한다. 식별자는 클래스(파일 이름), 메소드, 변수 등의 요소를 가리키며, 코드 작성시 몇 가지 규칙을 따라야 한다.
int a = 20;
int hello world = 20; -> X
int $a = 20; -> O
int a = 20;
int 가 = 20; -> O
사용 불가 - if, for
int a1 = 20;
int 1a = 20; -> X
int a = 20;과 int A = 20;는 서로 다른 변수이다.
클래스 파일 이름은 첫 글자를 대문자로 시작하며, 각 단어의 첫 글자도 대문자로 작성한다.
예:HelloWorld.java
메소드 및 변수 이름 짓기:
메소드와 변수 이름은 첫 글자를 소문자로 시작하며, 나머지 단어의 첫 글자는 대문자로 작성한다.
예:sum, main, a, b, helloWorld, myGrade
상수 이름 규칙:
상수(값이 변하지 않는 변수)는 모든 글자를 대문자로 작성한다.
예:PI, E
Naming.java
public class Naming {
public static void main(String[] args) {
//특수문자 불가능, 공백 불가능 예외 _, $
int name;
int _a;
int $a;
//int a!; -> 불가능
//한글가
int 이름;
//키워드 불가능
// int if; -> 불가능
//대소문자 구분
int Public; // 소문자 public은 키워드
//숫자가 앞에 X
int a1;
//int 1a; ->불가능
}
}
출처:멘토씨리즈_자바
- 논리 타입 (boolean):
true, false
참/거짓을 표현하는 데 사용되며, 1비트(1바이트)의 크기를 가진다.
- 문자 타입 (char):
문자: a, b, c, 가, 나, 다
2바이트의 크기를 가진다
C/C++언어 1바이트 (문자 표현 방식 = ASCII 방식)
Java언어 2바이트 (문자 표현 방식 = Unicode 방식)
- 문자 타입을 표현할 때에는 반드시 '''작은따옴표'''로 표현
- 문자열을 표현할 때에는 반드시 """큰따옴표"""로 표현
정수 타입:
3. byte:-128부터 127까지, 1바이트
의 크기
4. short:-32768부터 32767까지, 2바이트
의 크기
5. int:-2147483648부터 2147483647
까지, 4바이트의 크기 (기본값)
6. long:-922경부터 922경
까지, 8바이트의 크기
실수 타입 (부동소수점 방식):
7. float:-3.410^38부터 3.410^38
까지, 4바이트의 크기
8. double:-1.710^308부터 1.710^308
까지, 8바이트의 크기
출처:멘토씨리즈_자바
레퍼런스 타입: 3개
- Array
- class
- interface
String 클래스 (문자열) (-> 레퍼런스 타입)
DataTyple.java
public class DataType {
public static void main(String[] args) {
// 기본타입
//논리타입
boolean b1 = true;
boolean b2 = false;
System.out.println(b1);
System.out.println(b2);
// 문자 타입
char c1 = 'a';
char c2 = '가';
String c3 = "Hello";
System.out.println(c1);
System.out.println(c2);
System.out.println(c3);
//정수타입
byte b3 = 100; //-128~127
short s1 = 32000; //-32768~ 32767
int i1 = 2100000000; //대충 -21억 ~ 21억 (0 8 개)
long l1 = 922000000000L; //대충 -992경 ~ 922경 (0 12개)
System.out.println(b3);
System.out.println(s1);
System.out.println(i1);
System.out.println(l1);
//실수타입
float f1 = 3.14F;
double d1 = 3.14;
System.out.println(f1);
System.out.println(d1);
//정수 리터럴
//10진수
int i2 = 15;
System.out.println(i2);
//2진수: 0 과 1
int i3 = 0b101;
System.out.println(i3);
// 8진수 : 0~7
int i4 = 017;
System.out.println(i4);
//16진수 : 0~9 + A~F
int i5 = 0x25;
System.out.println(i5);
int i6 = 0x1a;
System.out.println(i6);
int i7 = 0x1A;
System.out.println(i7);
}
}
출력값:
프로그램에 직접 표현한 값
- 정수 리터럴
long 변수의 값 뒤에 붙이는 L
long l = 100L;
2진수, 8진수, 16진수, 10진수
- 2진수 0b~~ (0또는1)
binary- 8진수 0~~ (0~7)
octal- 16진수 0x~~ (0~9, a~f)
0X~~ (0~9, A~F)
hexadecimal
Assignment1.java
public class Assignment1
{
public static void main(String[] args) {
// 1. Hello Java를 출력하는 코드를 작성하세요.
String print = "Hello Java";
System.out.println(print);
// 2. 식별자 이름 규칙 5개를 각각 만족하는 변수를 int형으로 5개 작성하세요.
int $a = 25;
int 가 = 25;
int a3 = 25;
int a = 25;
int A = 25;
System.out.println($a);
System.out.println(가);
System.out.println(a3);
System.out.println(a);
System.out.println(A);
// 3. 파이 (3.14) 값을 저장하는 상수 변수를 작성하세요.
final double PI = 3.14;
System.out.println(PI);
// 4. false 값을 저장하는 변수를 작성하세요.
boolean abc = false;
System.out.println(abc);
// 5. 200000 을 저장하는 변수를 두 개의 다른 자료형을 이용해 작성하세요.
int num = 200000;
System.out.println(num);
long num2 = 200000;
System.out.println(num2);
// 6. 10.24 를 저장한은 실수 변수를 두 개의 다른 자료형을 이용해 작성하세요.
float f = 10.24F;
double d = 10.24;
System.out.println(f);
System.out.println(d);
// 7. 출력 했을 때 40이 나오도록 16진수 리터럴 정수 변수를 작성하세요.
long l = 0x28; // 🌟 0x는 16진수를 나타냄, 28은 16진수로 40
System.out.println(l);
}
}