[JAVA]_1일차

전희주·2023년 4월 5일
0

JAVA

목록 보기
1/24

시작

  • 강사명: 인경열
  • 이메일: inky4832@daum.net
  • github: http://github.com/inky4832
  • 강의 흐름: 자바_교재 목차 순으로 진행, 수업 중에는 예습해온 문법을 확인한다는 방식으로 참여할 것, 진행 과정 캡처 해 정리
  • 프로젝트 1차(내부), 2차(내부), 3차(회사 관계자 참여) 진행
  • 지필 시험 2회 => 필기, 20문제 4지 선다
  • 강의 주제:
    • 1) 자바 문법:
      - data 종류
      (기본형, 참조형(*클래스, 인터페이스, 배열)),
      - 변수 사용법(data 저장),
      - 연산자(산술, 비교 외 다양한 연산자),
      - 문장(2)
      - (실행문: 순차문, 제어문(조건문, 반복문), 비실행문: 주석문)
      - 배열
      +) [중요] 클래스는 자바의 최소 단위. 반드시 클래스 먼저 생성함
      - 메소드를 실행시키고자 하면, 클래스 먼저 생성시켜야 함
      - cf. C언어의 최소 단위는 함수 (자바에서는 C언어의 함수를 메소드라 칭함)
      - 클래스
      - 기본문법
      - 상속, 다형성, 은닉화
      - 인터페이스
      - 추상 클래스
      - 컬렉션 API (리스트, Stack, Queue, set) => data 저장
      - java data 저장 방법(3) :
      - 변수(하나의 값만 대입 가능),
      - 배열(배열 내 자료형 통일 필=> 한 번 크기가 정해지면 변경 불가),
      - 컬렉션(배열과 달리 여러 자료형 저장 가능 => java에서 가장 좋은 데이터 저장 방법)
      - java I/O(2): 파일 입출력, 표준 입출력(모니터 출력/ 키보드 입력)
      - DB 연동: java와 oracle 연동 방법 습득 => JDBC
      - 함수형 프로그래밍: 람다 lambda
      +) workshop, 디자인 패턴, 버전 관리(git), 추가 라이브러리(lombock, *mybatis)
      +) Mybatis jdbctype(마이바티스 Jdbctype)
      - jdbc(메모장), mybatis(워드) => 모두 db 연동 가능 tool, 현업에서는 mybatis 를 주로 활용

[JAVA]_자바 platform 종류

자바 언어를 이용한 프로그램 개발

  • 모든 자바 플랫폼은 JVM 과 API 로 구성된다.
    +)
  • JVM : 자바 프로그램은 완전한 기계어가 아닌 중간 단계의 바이트 코드이기 때문에, 이것을 해석하고 실행할 수 있게 해주는 가상의 운영체계
  • JVM의 메모리 영역
      1. 메모리 영역 : 클래스들을 클래스 로더로 읽어 클래스별로 런타임상수 풀, 필드 데이터, 메소드 데이터, 메소드 코드, 생성자 코드 등을 분류해서 저장한다.
      1. 힙 역역 : 객체와 배열이 생성되는 영역.JVM 스택 영역에서 생성된 변수나 다른 객체의 필드에서 이 곳에 있는 객체와 배열을 참조한다.
      1. JVM 스택 영역 : 스레드마다 하나씩 존재. 스레드가 시작할 때마다 JVM스택 영역이 할당된다.
  • 플랫폼(장치 device) 에 따른 3가지
    • 일반 pc: Java Standard Edition (Java SE)
      Java SE는 JDK를 설치하여 사용하는 핵심 라이브러리들이다.
      • 가장 일반적으로 사용하는 플랫폼은 Java SE
      • pc에서 실행되는 app 개발 (네트워크 및 db연동)
    • 서버(회사): 웹 서비스 Java Enterprise Edition (Java EE)
      • Java EE는 Java SE를 기반으로 large-scale, multi-tiered, scalable, reliable 및 secure network application을 개발하고 실행하기 위한 API 및 runtime 환경을 제공한다.
      • 웹사이트 개발, 예) 쿠팡, 지마켓, 옥션
    • 휴대용 (핸드폰, PDA) : Java Micro Edition (Java ME)

🔽 비교

[JAVA]_환경 설정 구축

환경 설정 구축

JDK ( Java Development Kit ) 설치

(1) 오라클 계정을 통해 접속 후 다운로드 진행

loli6893@hufs.ac.kr
Lsaporo99@@

windows 환경설정 추가

  • java jdk 관련

  • JAVA_HOME = C:\Program Files\Java\jdk1.8.0_361

    • 자바의 홈 디렉터리 경로 (1개만 존재)
  • PATH = 명령어 ; 명령어 ; ...

    • 명령어들의 경로
    • 세미콜론으로 연결해 여러 개의 명령어 실행 가능
    • 맨 앞에 세미콜론 붙여서 실행 ; 명령어 ; ...
  • 환경 변수 경로 지정 단계 별 진행 과정
    🔽 윈도우 키 우클릭 => 화면 우측 고급 선택

    🔽 환경 변수 클릭

    🔽 Path 더블 클릭 해 접속

    🔽

    🔽

  • 반드시 알아야하는 명령어: java, javac
    PATH = `C:\Program Files\Java\jdk1.8.0_361\bin
    🔽

    🔽
    PATH = %JAVA_HOME%\bin;

    🔽

    🔽 설정된 환경변수와 명령어 CMD창에서 확인 (관리자 권한으로 실행 필)
    업로드중..

[JAVA]_개발

java 개발

  • 1) 소스파일 : Test.java
    • Test => 클래스명(인터페이스명)
    • 첫 글자는 대문자로 작성
  • 2) 컴파일 (compile) : Test.class
    • 컴파일러(javac.exe)에 의해 컴파일 수행됨
    • javac Test.java => 컴파일 실행 문법 명령어
  • 3) 실행(interprete) : 결과 출력
    • 실행 결과 출력
    • 인터프리터(java.exe) 에 의해 수행
    • java Test => 인터프리터 실행 문법 명령어

java 개발 툴

  • 1) 이클립스(eclipse)

    • SE 개발 : 개인의 어플리케이션 개발
    • EE 개발 : 웹 사이트 개발
      +) STS (Sprint Tool Sulte): 자바의 프레임 워크 (spring framework) => framework에 최적화된 이클립스
  • 2) intellij

이클립스 설치


🔽 2021.03 ver 설치

🔽 java study에 다운 파일 복사

🔽 반디집으로 eclipse 파일에 압축 풀기

🔽 이클립스 설치 후 반드시 실행

  • 1) 한글을 처리하기 위한 인코딩 :
    UTF-8 = > 전세계 모든 언어의 문자열 표현 가능
  • 2)

+) 글꼴 및 크기 변경

🔽 새 프로젝트 진행

🔽 bin에 class 파일이 저장됨

java에서의 압축 파일

🔽 java에서의 압축 파일 => .jar

  • java에서의 압축 파일 (3)
    • .jar : 여러 개의 클래스 파일이 존재 (클래스 파일들을 압축) => SE
    • .war : wep application과 관련된 압축 파일
      => EE
    • .ear : .jar + .war 을 다시 압축

  • eclipse의 library tab의 jar가 수행하는 역할
    • jar파일은 클래스파일을 묶어놓은 것이다.
    • 미리 만들어서 제공하는 class 파일들(API)의 압축 파일
    • class를 미리 compile해서, 압축해서 우리에게 준 것!
    • API의 manual과 관련된 문서: API 문서
    • 특정 application 개발 시 사용하게끔 미리 만들어서 제공하는 것이 라이브러리의 역할

🔽 API 문서 (개발시 도움을 주는 class file)

java 새로운 라이브러리 설치

  • 삭제

  • 새로운 경로 적용

  • 새 프로젝트 추가

  • 컴파일 후

  • 정리
    api의 실제 이름은 rt.jar
    rt.jar 의 소스파일은 src.zip 내 존재
    (자바 프로그램이 실행하는데 필요한 클래스들을 묶어놓은 것이 rt.jar이다.)

  • 자바 패키지의 용도는 윈도우의 폴더와 동일

  • 클래스 명이 숫자로 시작하거나(끝에는 붙일 수 있음), 중간에 공백이 대입되면 안됨.

  • 특수문자 사용 불가 (예외: 언더바, 달러 표시)

    • _ 언더바 사용 가능
    • $ 사용 가능

자바 main 메서드 생성

  • main 메서드는 Java로 구현된 프로그램이 시작될 때 가장 먼저 실행되는 메서드입니다.

이클립스의 자동 컴파일 : ctrl + f11

  • 자바 프로그램 개발 과정
    1) 소스파일(~.java) 작성
    2) javac 명령어로 컴파일 수행
    3) java 명령어로 바이트 코드 파일(자바 소스 파일을 javac 명령어로 컴파일한 파일) 실행
    4) 실행결과 확인

  • .java를 class로 바꾼게 javac

  • 이클립스가 javac 명령어를 통해 컴파일 해줌

  • 이클립스는 기본적으로 .java를 컴파일 할 수 있는 환경

  • .java 소스를 저장할 때 자동으로 컴파일되도록 기본 설정되어 있음

  • 이클립스에서 바이트 코드 파일 실행 방법
    - 메뉴 -> Run -> Run As -> Java Application


    🔽 static, public 명령어 삭제시 (문법 오류는 없으나 컴파일 불가)

  • cf) c언어는 main 기재로 시작할 수 있었으나, java는 format을 정확히 기재해줘야 main 실행 가능

콘솔에 data 출력하는 3가지 방법

    1. println 메서드 : 새로운 라인을 생성하고 출력
		System.out.println("A");
		System.out.println("B");
		System.out.println();
    1. print 메서드 : 새로운 라인을 생성 안하고 출력
		System.out.print("A");
		System.out.print("B");
		System.out.println();
    1. printf 메서드: print 메서드 + 포맷 지정
    • print 와 동일하게 새로운 라인을 생성 안하고 출력
		// 이름: 홍길동 나이: 20 키 : 178.62 성별: 남 결혼 여부: true 
		System.out.printf("   ", "홍길동", 20, 178.6, '남', true);

🔽 실행 결과 출력

단축키

	-  sysout + ctrl + space
	-  명령어 대소문자 구분 필 
	-  ctrl+ f11 : 컴파일 단축키 
	-  ctrl + alt + 화살표: 한글 복사 단축키 
	-  ctrl + d : 한 줄 삭제 
	-  alt + 화살표 : 줄 이동 
    

[JAVA]_ [암기] data 자료형

[암기] java 자료형

  • java에서 사용 가능한 자료형

  • 정수형의 기본 자료형은 int

  • 실수형의 기본 자료형은 double

  • boolean의 기본 자료형은 false

  • Java의 데이터 유형은 8종류의 기본형(primitive type, PDT)과 참조형(reference type, RDT)으로 구성되어 있다.

Java Data 표현식

  • 실수는 지수 표현식도 가능
  • 정수는 1진수, 2진수, 8진수, 16진수 표현 가능
  • char 데이터 표현식
    • escape 문자
  • boolean 데이터 표현식
    • 소문자 false, true 만 사용 가능 (0, 1 사용 불가)
  • 데이터 값을 표현하는 용어 : literal

  • 기본형 8가지를 제외한 자료형 => 참조형(reference type, RDT)에 해당

    • class, array, interface => 모두 자료형에 해당

  • double 표현 (3)
    3.14
    3.14d
    3.14D

  • float 표현 (2)
    3.14f
    3.14F
  • 정수형 자료형은 모든 진수를 표현할 수 있다

기본형 데이터 출력


public class DataType {

	public static void main(String[] args) {
		// 1.기본형 데이터 출력 
		// 가. 수치형(정수)
		System.out.println("가. 수치형(정수)");
		System.out.println(10); // 10진수
		// 2진수: 0,1 		
		System.out.println(0b0); // 2진수
		System.out.println(0b1); // 2진수
		// 8진수: 0~7
		// 괄호 안에 있는 00을 정수 literal라고 칭함 
		System.out.println(00); // 8진수
		System.out.println(01); // 8진수
		System.out.println(02); // 8진수
		System.out.println(03); // 8진수
		System.out.println(04); // 8진수
		System.out.println(05); // 8진수
		System.out.println(06); // 8진수
		System.out.println(07); // 8진수
		//16진수: 0~9, A B C D E F => 0 ~ 15 표현 가능 
		System.out.println(0x0); // 16진수
		System.out.println(0x9); // 16진수
		System.out.println(0xA); // 16진수
		System.out.println(0xB); // 16진수
		System.out.println(0xC); // 16진수
		System.out.println(0xD); // 16진수
		System.out.println(0xE); // 16진수
		System.out.println(0xF); // 16진수

		// 나. 수치형(실수)
		// float 타입 
		System.out.println(3.14F);
		System.out.println(3.14f);
		
		// double 타입 
		System.out.println(3.14);
		System.out.println(3.14D);
		System.out.println(3.14d);
        
		//다. 문자: 하나의 문자, '', escape 문자, 유니코드 \u0000
		System.out.println('A');
		System.out.println('남');
		
		System.out.println("홍길동");
		System.out.println("홍\n길동");
		System.out.println("홍\t길동");
		System.out.println("홍\"길동");		
		System.out.println("홍\'길동");
		System.out.println("c:\\temp"); 
        
		// 유니코드 => properties 확장자 사용시 변환 가능 
		System.out.println('\uD64D');
        
        //라. 논리값
		System.out.println(true);
		System.out.println(false);
		

	}

}

🔽 실행 결과

참조형 데이터 출력

  • 반드시 new 기재 필
  • new는 메모리에 올리는 작업 수행 (객체 생성 작업)
2. 참조형 데이터 출력 => 반드시 new 기재 필
		System.out.println(new String()); // 클래스
		System.out.println(new int[] {1,2,3}); // 배열
		// System.out.println(new); // 인터페이스 표현 못함 

[참고] 자료형 저장 범위

package java01;

public class DataType2 {

	public static void main(String[] args) {
		// 4가지 종류의 정수 저장 범위 
		// -128~127 => 1byte 가 저장될 수 있는 범위 
		System.out.println("byte 최소값:" + Byte.MIN_VALUE);  
		System.out.println("byte 최대값:" + Byte.MAX_VALUE); 
		
		// -32768~32767 => 2byte 가 저장될 수 있는 범위 
		System.out.println("short 최소값:" + Short.MIN_VALUE);  
		System.out.println("short 최대값:" + Short.MAX_VALUE);
		
		// -2147483648 ~ 2147483647 => 4byte 가 저장될 수 있는 범위
		System.out.println("int 최소값:" + Integer.MIN_VALUE);  
		System.out.println("int 최대값:" + Integer.MAX_VALUE); 
		
		// -9223372036854775808 ~ 9223372036854775807 => 8byte 가 저장될 수 있는 범위
		System.out.println("long 최소값:" + Long.MIN_VALUE);  
		System.out.println("long 최대값:" + Long.MAX_VALUE);  
		
		//2가지 종류의 실수 저장 범위 
		System.out.println("float 최소값:" + Float.MIN_VALUE); //1.4E-45 
		System.out.println("float 최대값:" + Float.MAX_VALUE);  // 3.4028235E38
		
		System.out.println("double 최소값:" + Double.MIN_VALUE); // 4.9E-324 
		System.out.println("double 최대값:" + Double.MAX_VALUE);  // 1.7976931348623157E308
		
		

	}

}

🔽 실행 결과

[JAVA]_식별자

식별자

  • 식별자는 자바 코드 내에서 사용되는 각각의 단어를 의미한다.

식별자 지정규칙

첫 문자는 반드시 영문자이어야한다.
그 다음 문자부터는 숫자와 문자를 합쳐서 사용 가능하다.
단, _$는 첫문자로 사용할수 있는 특별한 문자다.
식별자에 대한 길이 제한은 없다.
JAVA는 대소문자를 구별한다.

시스템 정의 식별자 (예약어,키워드)

JAVA 언어 자체에서 특별한 의미를 가지는 식별자이다. - 따라서, 시스템(JAVA)이 미리 정의한 식별자이기 때문에 사용자 지정 식별자로서 사용이 불가능하다

  • 시스템 정의 식별자 사용 규칙
    • 반드시 일치해야 한다 => 다르면 에러 발생

🔽 예약어 종류
ex) public, protected, private, static, final, abstract, interface, classm transient, extends, implements

  • 자바 언어 자체에서 이미 예약한 단어라는 의미이다. 즉 자바에서 이미 사용하겠다고 예약어로 등록했기 때문에 사용자가 동일한 이름을 사용할 수 없다.

🔽 시스템 정의 식별자는 명칭 변경 불가능

사용자 정의 식별자 (예약어,키워드 제외)

사용자가 지정 가능한 식별자로서 클래스명,변수명,메소드명,상수 사용시 이름을 지정할 때 사용된다.

🔽 클래스, 변수명, 메서드명, literal

🔽 사용자 정의 식별자는 명칭 변경 가능

+) 리터럴과 상수의 차이

0개의 댓글