Java

eunheelog·2024년 6월 4일
0

Beyond SW

목록 보기
5/15

1. 자바란?

  • 1995년 썬 마이크로시스템즈의 제임스 고슬링과 연구원들에 의해 개발된 객체지향 프로그래밍 언어로 전 세계적으로 다양한 분야에서 사용되고 있다.
  • 2009년 4월 20일 썬 마이크로시스템즈가 오라클과 인수 합병되면서 자바는 오라클로 넘어가게 되었다.

2. 특징

  • 객체 지향 프로그래밍 언어
    : 객체들을 만들고 이러한 객체들을 연결해서 전체 프로그램을 완성하는 기법
  • 운영체제에 독립적
    : 자바 언어로 개발된 프로그램은 소스를 수정하지 않아도, 자바 실행 환경(JRE)이 설치되어 있는 모든 운영체제에서는 실행 가능
  • 자동으로 메모리 관리
    : 자바는 개발자가 직접 메모리에 접근할 수 없도록 설계되었으며, 메모리는 자바가 가비지 컬렉터를 활용하여 직접 관리

3. JVM(Java Virtual Machine)

  • Windows, Linux, MacOS와 같은 운영체제(OS)에서는 자바 프로그램을 직접 실행할 수 없으며 JVM을 통해 자바 프로그램 실행 가능
  • JVM 은 JDK 또는 JRE 를 설치하면 자동으로 설치되는데 JDK 와 JRE 는 운영체제에 별도로 제공되고 운영체제에 맞게 설치해야함
  • JVM 이 설치된 환경에서 자바 프로그램을 실행하기 때문에 운영체제와 상관없이 자바 프로그램 개발 가능

4. 실행 단계(47p, 57p)

  • 확장자가 .java인 소스파일 작성
  • 작성된 소스파일을 자바 컴파일러로 컴파일하여 확장자가 .class인 바이트코드(기계어)로 번역
  • 번역된 바이트코드(기계어)를 JVM에서 실행

자바 개발 환경 구축


1. 자바 설치

  • JDK(Java Development Kit)
    - 자바 프로그램 개발하기 위해서는 JDK를 설치해야함
  • JRE(Java Runtime Environment) → 자바 실행 환경
  • JDK 의 종류
    - Java SE
    • Java EE
    • Java ME
  • JDK 설치

CMD 창에서 javac Application.java 할 경우 Application.class 파일 생성

java Application.java 할 경우 파일에 있는 내용 출력

java 명령어 → JVM 에서 실행되도록 해줌

  • JRE 추가 → C > Program Files > Eclipse Adoptium > jdk-21.0.3.9-hotspot


→ Content Types 에서 Text 인코딩 설정 !

- perspective 설정하면 메뉴도 바뀜

- 패키지 이름 → 도메인의 역순


→ 만들 때 public 체크하면 class 만들어줌 !


→ 변수를 선언하고 사용하지 않거나 초기화하지 않은 경우에 왼쪽에 노란 경고 표시가 뜬다

단축키


ctrl + N : 파일 생성

ctrl + F11 : 실행

ctrl + alt + 방향키 : 한 줄 복사

ctrl + d : 한 줄 삭제

변수


	// 정수형 변수 선언
	byte bnum;
	short snum;
	int inum;
	long lnum;

	// 실수형 변수 선언
	float fnum;
	double dnum;

	// 논리형 변수 선언
	boolean isTrue;

	// 문자형 변수 선언
	char ch;

	// 문자열 변수 선언
	String str;

⛧메모리 사용 영역(188p)


  • 메소드 영역 : JVM이 시작할 때 생성되고, 모든 스레드가 공유하는 영역
  • 힙 영역 : 객체와 배열이 생성되는 영역
  • JVM 스택 영역 : 메소드를 호출할 때마다 프레임을 추가하고 메소드가 종료되면 해당 프레임을 제거하는 동작 수행

변수 명명 규칙

1) 대소문자 구분

	int number;
	// String number; // 자료형이 달라도 변수명이 같으면 에러 발생
	int NUMBER;
	int Number;

2) 숫자로 시작 X

	// int 1age; → 불가능
	int a1g2e3;

3) 특수 문자는 _, $만 가능

	int _age;
	int ag_e_;
	int $age;
	int a$ge$;
	// int %age; → 불가능
	// int age*; → 불가능

4) 예약어 사용 X

	// int double;
	// int class;
	// int public;
	// int void;
→ 다 불가능

형변환


1) 자동 형 변환

	byte bNum = 10;
	short sNum = 12;
	int iNum = sNum; // short -> int 자동 형 변환
	long lNum = iNum; // int -> long 자동 형 변환
	// float 타입이 long 타입보다 표현 가능한 수의 범위가 더 크기 때문에
	// 자동 형 변환 가능
	float fNum = lNum;
	double dNum = fNum;

⛧ 더 큰 범위로 변환됨(값의 범위가 작은 자료형 → 값의 범위가 큰 자료형)

2) 강제 형 변환

	double dNum = 4.234567893456789;
	float fNum = (float)dNum;
	int iNum = fNum;
	
	System.out.println("dNum : " + dNum);
	System.out.println("fNum : " + fNum);
	System.out.println("iNum : " + iNum);
	System.out.println((byte)290);
	System.out.println();
		
	// int sum = (int)(iNum + dNum);
	int sum = iNum + (int)dNum;
	System.out.printf("sum : ", sum);

→ 값의 표현 범위가 큰 자료형 → 작은 자료형 강제 변환 !

출력


	System.out.print("안녕하세요.");
	System.out.print(12345);
	System.out.print(false);
		
	System.out.println();
		
	System.err.print("에러입니다.");


→ 에러 메시지는 빨간색으로 출력 !

	System.out.printf("%f\t%f", 3.14, 4.12345);

→ 소수점 6자리로 나타내는데 부족한 경우 0으로 채우고 더 길 경우 반올림해서 표현

  • 따옴표 출력하려면 역슬래쉬 사용하기
profile
⛧1일 1알고리즘⛧

0개의 댓글