JAVA 의 특징은??
- 운영체제에 독립적 ★
- 객체 지향 언어 ★
모든 기능은 객체로 만들어 사용해야 함. 객체는 프로그램이 동작하는 부품.
여러 부품들을 만들고 조립하여 하나의 프로그램을 실행하는 개념 = OOP
▶ 유지보수가 쉽고 확장성이 높음
- 함수형 프로그래밍 지원
코드가 간결해지는 장점이 있음
람다 표현식, 스트림 등을 사용
- 자동 메모리 관리
JVM (Java Virtual Machine)
특정 프로그래밍 언어를 기계가 이해할수 있는 언어로 옮기는 번역 과정
바이트 코드를 운영체제에 맞는 기계어로 변환
JVM의 경우 JDK 나 JRE 설치하면 자동으로 설치됨
자바는 무조건 JVM 을 거치기 떄문에 C 나 C++에 비해서 속도가 느린편임
JDK(Java Development Kit)
실행만 하게 되면 깔 필요 없지만 프로그램을 개발할때는 필요함
가장많이 쓰는 버전 (8, 11, 17)
JDK8
- 람다식 및 메서드 참조 도입
- 컬렉션에 Stream API 사용 가능
- 인터페이스 내부에 default 메서드 선언 가능
- Optional 클래스 도입 등
JDK11
- String 클래스에 strip, isBlack, lines 메서드 추가
- Files 메서드에 readString 메서드 추가
- 람다식의 인수 선언 시 var 키워드 사용 가능
- 소스 파일을 javac을 통한 컴파일 없이 스크립트로 실행 가능
- 차세대 가비지 콜렉터 도입 등
JDK17
- 텍스트 블록 추가
- 의사 난수 생성기 기능 향상
- switch 문 기능 향상
- 봉인 클래스 추가 등
메서드
메서드란?
어떤 기능을 하는 코드를 묶음으로 묶은 것을 의미함.
즉, 메서드는 어떠한 기능을 수행하기 위한 일련의 코드들의 집합체
public -> 접근제어자
static -> 제어자
void -> return 하는 값이 없는 함수
main -> 메서드 이름
public class Main {
public static void main(String[] args) {
}
}
기본적인 메서드 시그니처
클래스 명 규칙 -> 제일 앞글자는 무조건 대문자!!!!
폴더(패키지)는 무조건 소문자!!!!
public class Main {
public static void main(String[] args) { //psvm
System.out.println("Hello World!"); //sout
//바로 출력
System.out.println(add(1,2));
//선언하고 출력함
int num = add(10,20);
System.out.println(num);
}
//아래에 있는게 위로 올라가도 무관함
public static int add(int number1, int number2){
return number1 + number2;
}
}
int -> 실수 못들어옴 정수타입이기에!!
변수
변수 선언만 가능
선언하고 값할당해서 초기화 가능 , 재할당도 가능
변수를 선언하면서 동시에 초기화도 가능
변수 이름 규칙
1. 카멜 케이스(camelCase)
2. 영문자, 숫자, _ , $를 사용할 수 있음
3. 영문자는 대소문자 구별됨
4. 숫자로 시작하는 변수명은 사용할수 없음
5. 예약어 사용 불가능
상수
변하지 말아야 할 데이터를 임시로 저장하기 위한 수단
ex) 원주율, 요일(월요일,화요일...), 월(1월,2월....12월)
final 이라는 키워드를 사용해서 선언이 가능
재할당은 할수 없음
상수 이름 규칙
대문자에 언더바(_)를 넣어 구분하는 SCREAMING_SNAKE_CASE를 사용
final double CALCULATOR_PI = 3.14;
CALCULATOR_PI = 1.23;
타입
타입에 따라 값이 차지하는 메모리의 공간의 크기 결정
또한 값이 저장되는 방식도 결정
- 기본타입
정수타입, 실수타입, 문자타입(작은 따옴표), 논리타입
※문자열 큰 따옴표
▷정수타입
byte(0,1 이진법) -> short -> int -> long
1byte = 2의8승 -1 -> -128 ~ 127까지
short = 2의16승 35536
int = 2의 32승 -> 기본
long = 2의 64승
여기서 잠깐!
int 는 몇 바이트 일까요?? 4바이트 (32비트)
byte 와 Byte 의 차이점은??? Byte는 null 포함 -> 래핑클래스는 null을 포함함
▷실수타입(소수점) -> 실수안에는 정수도 포함이 되어 있음
float(2의 32승)
double(2의 64승)
▷문자타입 char (Character)
▷논리타입 true, false
래핑(wrap)클래스 -> Byte, Integer, Long, Float, Double
- 참조타입
(지금까지 실습 한곳에 모아둠)
public class Main {
static final double PI = 3.14;
public static void main(String[] args) { //psvm
System.out.println("Hello World!"); //sout
//바로 출력
System.out.println(add(1,2));
//선언하고 출력함
int num = add(10,20);
System.out.println(num);
//상수는 재할당이 불가능하다
System.out.println(PI);
byte byteNumber = 100;
System.out.println(byteNumber);
Interger nums = null;
Character c = 'a';
}
//아래에 있는게 위로 올라가도 무관함
public static int add(int number1, int number2){
return number1 + number2;
}
}
리터럴
프로그래밍에서 리터럴이란 문자가 가리키는 값 그 자체를 의미함
리터럴을 사용할 때 알아두어야 하는 사항 두 가지가 있음
- float 타입의 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 f를 붙여줌.
- long 타입의 변수에 정수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 L을 붙여줌.
- 소문자 l을 붙여도 되지만, 숫자와의 혼동을 방지하기 위해 보통 대문자 L을 사용함.
float weight = 74.5f;
final long LIGHT_YEAR = 9460730472580L;
float = 9460730472580.0F;
double = 9460730472580.0D;
정수형의 오버플로우와 언더플로우
오버플로우 예시
public class Main {
static final double PI = 3.14;
public static void main(String[] args) { //psvm
byte byteNum = 127;
byteNum++;
System.out.println(byteNum); //-128
}
}
언더플로우 예시
public class Main {
static final double PI = 3.14;
public static void main(String[] args) { //psvm
byte byteNum = -127;
byteNum -= 2;
System.out.println(byteNum); // 127
}
}
범위를 벗어나게 되면 순환 하게 됨!
실수형의 오버플로우와 언더플로우
오버플로우의 예시 = 무한대
언더플로우의 예시 = 0
문자타입
문자타입은 2Byte 크기의 char 형 하나만 있음.
문자형 리터럴을 작성할때는 반드시 작은 따옴표를 사용해야 함!!!!!!!
큰따옴표는 문자형 리터럴이 아니라 문자열 리터럴로 인식이 되기 떄문
char letter1 = 'a';
char letter2 = 'ab'; // 에러 : 단 하나의 문자만 할당할 수 있습니다.
char letter3 = "a" // 에러 : 작은따옴표를 사용해야 합니다.
자바는 유니코드로 문자를 저장함.
유니코드란? 표준 문자 전산 처리 방식임.
char letter = 65;
System.out.print(letter); // 출력 결과 : A
char letter2 = 'A' - 7; //65 - 7 = 58
System.out.print(letter2); // 출력 결과 : : <- 58의 유니코드가 : 이거 이기에 이렇게 출력이 됨
왜 이렇게 나올까요?? 65의 유니코드가 A 이기에 출력이 A 로 됨
타입 변환
String 타입
기본적으로 String 타입은 큰 따옴표로 감싸진 문자열을 의미함
마무리 작업중...
'IT > JAVA' 카테고리의 다른 글
Java - 형변환 정리 (0) | 2024.11.21 |
---|---|
JAVA - break (0) | 2024.11.21 |
JAVA - 연산자 (1) | 2024.11.20 |
JAVA - [변수, 타입, 문자열] 문제풀이 정리 (0) | 2024.11.20 |
JAVA - 문자열(2일차) (0) | 2024.11.20 |