본문 바로가기
IT/JAVA

JAVA 1일차

by 삐약 개발자 2024. 11. 19.
반응형

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;
    }

}

 

 


리터럴

프로그래밍에서 리터럴이란 문자가 가리키는 값 그 자체를 의미함

리터럴을 사용할 때 알아두어야 하는 사항 두 가지가 있음

  1. float 타입의 변수에 실수형 리터럴을 할당할 때, 리터럴 뒤에 접미사 f를 붙여줌.
  2. 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