2022.04.15

java는 자바 소프트웨어의 실행 도구
javac는 자바 소프트웨어의 개발 도구

charset
character set
글자 조합
키보드 0과 1의 신호를 컴이 글자로 만든다
글자를 만드는 방법이 많다(수천개)
알파벳은 문제 없으나, 한글 조합이 문제!
글자 조합 방법 : utf8, ms949, euc-kr
이클립스 기본 글자 조합 방법 : ms949 : 범용성 없음
범용성 있는 글자 조합 방법 : utf8

eclipse.ini 파일의 마지막 줄에 추가
-Dfile.encoding=UTF-8

package : 포장하다
자바에서 패키지는 폴더를 의미합니다.
그런데, 자바는 컴파일을 해야 합니다.
컴파일 한 결과 생성되는 class 파일들은???
source는 소스끼리 폴더화 하고,
컴파일 한 결과 생성되는 class 파일들은
class 파일들끼리 폴더화 한다.
--->package 의 개념

1bit - 0 또는 1을 저장하는 공간
1byte - 8bit
1kb - 1000byte
1mb - 1000kb
1gb - 1000mb

컴이 이해하는 언어 - 0 1 011101011100111 (기계어)

만들 때는 인간이 이해하는 언어로 만들고 -> 변환 과정 -> 실행할 때는 0 1로 실행

High Level Language - 인간이 이해하기 쉬운 언어, java, phython

Low Level Language - 컴이 이해하기 쉬운 언어, assembly
assembly도 기계어는 아니라서 다시 assembler를 통해 기계어로 변환

High Level Language와 Low Level Language는 상대적 개념이다.

변환 과정인 compile을 거쳐서 기계어에 가깝게 변환.

자바의 변환 과정 : javac -> 주석과 공백 제거 + 기계어에 가깝게 변환.
javac를 통해 기계어에 가깝게 변환한 결과(byte code, 중간 코드)가 class 파일.

자바의 실행 : java

Test.java -> javac -> Test.class (byte code 중간 코드) -> java -> 기계어 실행

탐색기 파일 확장자 보고 싶을 때
탐색기 > 메뉴 보기 > 옵션 > 보기 > 알려진 파일 형식의 확장자 체크 해제

이클립스 단축키
ctrl + space bar = 자동 완성
ctrl + z = 코딩 취소 (이전 상태로 가기, 뒤로 가기)
ctrl + y = 코딩 취소 (앞으로 가기)
ctrl + d : 한 줄 삭제
F2 : 이름 바꾸기
코드 이동 : alt + 위방향, alt + 아래방향
ctrl + - 텍스트 크기 축소
ctrl + + 텍스트 크기 확대

//한 줄 주석
/*

  • 여러 줄 주석

  • 자바는 공백과 주석을 무한히 허용 -> 컴파일에서 제거

  • 주석과 공백을 최대한 활용하여 가독성 높은(readable, 읽기 쉬운) 코드를 만들어라
    /
    /

  • 작성일 : 2022.04.15.

  • 작성자 : rojaiho

  • 클래스 개요 : 오버뷰를 확인한다.

  • 요청자 : 임팀장

  • 요처 근거 : email, 공문 XX기관코드2022-04001호
    /
    package ch1;
    /

  • package

  • 소스는 소스끼리, 컴파일 결과 생성되는 class파일은 class파일끼리 묶어라.

  • 패키지 이름은 소문자로...

  • 패키지 이름 규칙은 안지켜도 에러는 안나지만, 현장에서 욕을 먹고 고쳐야 함.
    /
    public class Ch01Ex01 {
    /

    public : 보안 등급 : 누구나 접근 가능
    public - protected - default - private
    /
    /

    class : 설계도
    프로그램 : 진행 계획, 진행 순서.
    프로그래머 : 진행 계획이나 진행 순서를 계획하는 사람.
    class : 우리가 계획하는 진행 계획이나 진행 순서를 설계헤 놓는 문서.
    {} : 중괄호 : 영역 표시
    { : 영역 시작
    } : 영역 종료
    모든 자바의 코딩은 class 내부에 하여야 함.
    예외는 package, import의 단 두개.
    /
    /*
    Ch1Ex01 : 이름이 오는 자리
    여러분 맘대로 지으세요. 단, 규칙이 있음.
    class 이름을 만드는(명명) 규칙 - 파스칼 표기법(pascal case)
    - 첫문자 대문자
    - 이어지는 단어의 첫문자도 대문자
    - 나머지는 소문자
    - 숫자 가능하지만, 맨 앞은 안됨.
    - 특수문자는 $와 _만 가능하지만, 권장 X.
    - 파일 이름과 class의 이름이 대소문자 포함여 완전히 일치해야 한다.
    - 안지켜도 에러는 안나지만, 현장에서 욕을 먹고 고쳐야 함.
    /
    /

    class의 member (구성 요소)
    - variable (변수) : data. 정적이다.
    - method : 동작. 동적이다.
    /

    public static void main(String[] args) {
    	// void : 없다.
    	/*
    	 * public static void main(String[] args) - 시작 점
    	 * main : 메소드 이름 - 시작 메소드의 이름은 반드시 main.
    	 * 현재 클래스를 실행하면, main의 첫 줄에서 마지막 줄까지를 한 줄씩 순서대로 수행.
    	 * 이것이 시작 메소드의 의미.
    	 */
    	System.out.println(123);
    	System.out.print(456);
    	System.out.println(789);
    	/*
    	 * System
    	 *  - jdk가 제공하는 class.
    	 *  - 이 코드가 실행되는 컴퓨터를 지칭.
    	 * . : ~의 내부에.
    	 * out
    	 *  - jdk가 제공.
    	 *  - 이 코드가 실행되는 컴퓨터의 out buffer(출력 메모리)를 지칭.
    	 * print : 화면에 출력.
    	 * println : 화면에 출력한 다음에 줄 바꿈을 해라. print + line new.
    	 * print() : ()안의 내용을 출력해라.
    	 * ; : semicolon : 한 줄의 끝을 표시. 안 쓰면 에러.
    	 */
    	}//end of main//main
    
    }//end of class//class

    넓은 의미에서 데이터

  • 의미 있는 정보를 가진 모든 값
  • 어떠한 사실, 개념, 명령
  • 과학적인 실험이나 관측 결과로 얻은 수치나 정상적인 값
  • 실체의 속성을 숫자, 문자, 기호 등으로 표현한 것
  • 데이터는 특정한 의미가 부여되면 정보가 된다.
  • 데이터 자체는 단순한 사실에 불과
  • 일련의 처리과정에 따라 특정한 목적에 소용되는 정보를 만들기 위한 재료로 사용

데이터의 예 1
이름 홍길동, 나이 25세, 키 180cm, 몸무게 80kg, 혈액형 B형.

쇼핑몰A의 판매 데이터의 예 2
01.01. 고객 홍길동, 상품 생수2L, 수량 30개
02.01. 고객 홍길동, 상품 생수2L, 수량 30개
03.01. ...
04.01. ...

package ch02;

/*

  • 자바가 다루는 데이터의 형태

  • 정수 : 음수, 양수, 0을 포함하는 소수점이 없는 숫자.

  • 실수 : 음수, 양수, 0.0을 포함하는 소수점이 있는 숫자.

  • 논리 : true, false.(오직 두개)

  • 문자 : character : 오직 문자 하나.

  • 자바의 문자는 다국어 지원을 위해 유니코드(16bit)를 사용.

  • 문자열 : character string : 문자를 줄지어 놓은 것 : 문자 집합.
    */

    	public class Ch02Ex01 {
    
    	public static void main(String[] args) {
    
    		System.out.println(123);//정수
    		System.out.println(3.14);//원주율//실수
    		System.out.println(true);//논리
    		System.out.println('A');//문자
    		System.out.println('한');//문자
    		System.out.println("문자열");//문자열
    
    		}//main
    
    	}//class

/ 자바에서 데이터를 사용하는 방법.
- 변수를 적극 활용해라.
/
/

변수의 개념 : variable : various(다양함) + able(가능성)
- 다양한 값을 가질 수 있다.
- 데이터를 저장하는 저장 공간
- 데이터를 저장하는 공간에 들어 있는 값을 바꿀 수 있다.(반드시 바꾼다 아님.)
*/

package ch02;

public class Ch02Ex02 {

public static void main(String[] args) {

	int data1 = 9876;
	int data2 = 8765;

	System.out.println(data1 + data2);
	System.out.println(data1 - data2);
	System.out.println(data1 * data2);

	data2 = 4;
	System.out.println(data1 / data2);
	}//main

}//class

package ch02;

/*

  • 변수의 생성

    • 선언과 초기화로 구성
    • 변수의 선언 : 변수의 형태와 이름을 정하는 것.
    • 변수의 초기화 : 변수에 최초의 값을 넣는 것.(대입하는 행위)
    • 이 예제에서는 정수 타입의 데이터 int를 사용.
    • int : 자바에서 정수를 변수로 사용하는 방법 중의 하나.
      */

      	public class Ch02Ex03 {
      
      	public static void main(String[] args) {
      
      		int data1;
      		/*
      		 * int data1; //변수의 선언.
      		 *  - 메모리에 정수를 담는 공간 하나를 만들고, 그 공간의 이름을 data1이라고 해라.
      		 */
      		data1 = 9876;
      		/*
      		 * data1 = 9876; //변수의 초기화.
      		 *  - data1이라고 이름 붙은 공간에 9876을 넣어라.
      		 *  - equal 기호(=)는 같다라는 의미가 아니다.
      		 *  - equal 기호(=)는 대입 연산자.
      		 *  - equal 기호(=)는 우항의 값을 좌항에 넣어라.
      		 */
      		int data2 = 8765;//선언과 초기화를 한방에 할 수도 있다.
      
      		int a=1, b=2, c=3, d=4, e=5;//여러 개 동시 처리 가능.
      
      		}//main
      
      	}//class

      package ch02;

/*

  • 자바에서 사용하는 변수의 종류 : primitive data type : 자바의 기본 데이터 종류 8가지.

    • 정수 type(형태) : byte, short, int, long.
    • 실수 타입 : float, double.
    • 논리 타입 : boolean.
    • 문자 타입 : char.
    • 꼭 기억할 타입 : int, long, double, boolean.
      */

      	public class Ch02Ex04 {
      
      	public static void main(String[] args) {
      
      		byte byteVar = 127;//메모리에 정수 8bit 공간 확보.
      		short shortVar = 30000;
      		int intVar = 2100000000;
      		long longVar = 2200000000L;//L을 넣어야 long value.
      
      		float floatVar = 0.123456789F;//F를 넣어야 float value.
      		System.out.println(floatVar);
      		double doubleVar = 0.1234567890123456789D;//D를 넣지 않아도 됨.
      		System.out.println(doubleVar);
      
      		boolean boolVar = false;
      		System.out.println(boolVar);
      		System.out.println(longVar > intVar);//true
      
      		char charVar = 'A';
      		System.out.println(charVar);
      		}//main
      
      	}//class

/*

  • 정수 타입의 변수 - byte (8bit)

    • 부호비트(양수/음수 판별 비트)를 제외한 7bit로 수를 표현
    • 수의 표현 범위 : -2의7승 ~ 2의7승-1까지의 수를 표현 : -128 ~ 127
  • 정수 타입의 변수 - short (16bit)

    • 부호비트(양수/음수 판별 비트)를 제외한 15bit로 수를 표현
    • 수의 표현 범위 : -2의15승 ~ 2의15승-1까지의 수를 표현
  • 정수 타입의 변수 - int (32bit)

    • 부호비트(양수/음수 판별 비트)를 제외한 31bit로 수를 표현
    • 수의 표현 범위 : -2의31승 ~ 2의31승-1까지의 수를 표현
    • 정수 변수의 기본형은 int. (아무 생각 없이 코딩하면 다 int가 된다.)
    • 단점 : 21억 정도만을 표현한다.
  • 정수 타입의 변수 - long (64bit)

    • 부호비트(양수/음수 판별 비트)를 제외한 63bit로 수를 표현
    • 수의 표현 범위 : -2의63승 ~ 2의63승-1까지의 수를 표현
    • 수를 대입할 때 영문자 L 또는 l을 사용해야 한다.
    • 22억 이상의 수를 표현한다.
      /
      /
  • 변수와 메소드의 이름을 만드는(명명) 규칙 - 카멜(Camel) 표기법

    • 첫 문자는 소문자
    • 이어지는 단어의 첫문자는 대문자
    • 나머지는 소문자
    • 숫자는 가능하지만 맨 앞은 안됨
    • 특수문자 권장하지 않음
      */

      package ch02;

      public class Ch02Ex05 {

      	public static void main(String[] args) {
      
      		byte byteVar1 = 1, byteVar2 = 2;
      		//byte byteVar3 = byteVar1 + byteVar2;//왜 에러일까?
      		// -> 정수 변수의 기본형은 int. (아무 생각 없이 코딩하면 다 int가 된다.)
      		// -> 연산을 할 때 int형으로 변화가 발생.
      		byte byteVar4 = 1 + 2;
      		byte byteVar5 = byteVar1;
      
      		short shortVar1 = 1, shortVar2 = 2;
      		//short shortVar3 = shortVar2 - shortVar1;
      		// -> 정수 변수의 기본형은 int. (아무 생각 없이 코딩하면 다 int가 된다.)
      		// -> 연산을 할 때 int형으로 변화가 발생.
      		short shortVar4 = 1 + 2;
      		short shortVar5 = shortVar1;
      
      		long longValue1 = 1L, longValue2 = 2L;
      		long longValue3 = longValue1 * longValue2;
      
      		}//main
      
      	}//class

/*

  • Wrapper class

    • primitive data type을 쉽게 사용할 수 있도록 JDK가 제공하는 도구.
  • 정수형 Wrapper class

    • Byte, Short, Integer, Long.
      */

      package ch02;

      public class Ch02Ex06 {
      public static void main(String[] args) {

      		System.out.println(Byte.MIN_VALUE + " ~ " + Byte.MAX_VALUE);
      		System.out.println(Short.MIN_VALUE + " ~ " + Short.MAX_VALUE);
      		System.out.println(Integer.MIN_VALUE + " ~ " + Integer.MAX_VALUE);
      		System.out.println(Long.MIN_VALUE + " ~ " + Long.MAX_VALUE);
      
      		}//main
      
      	}//class

      package ch02;

/*

  • 실수 타입의 변수

    • 소수점 9를 표현 못해서, 소수점 숫자 오류 가능성 있음.
    • float (32bit)
    • 값을 대입할 때, 영문자 F 또는 f를 붙인다.
    • float는 소수점 5번째까지 신뢰.
    • double (64bit)
    • double이 기본형. (아무 생각없이 코딩하면 다 double이 된다.)
    • double는 소수점 15번째까지 신뢰.
      */

      	public class Ch02Ex07 {
      
      	public static void main(String[] args) {
      
      		float floatVar1 = 0.9F, floatVar2 = 0.5F;
      		System.out.println(floatVar1);
      
      		double doubleVar1 = floatVar1;
      		System.out.println(doubleVar1);
      
      		double doubleVar2 = floatVar1 + floatVar2;
      		System.out.println(doubleVar2);
      
      		}//main
      
      	}//class 

package ch02;

/*

  • Data Type Casting : 데이터의 형태를 바꾼다.

    • int -> long 또는 int -> short.
  • Promotion, 자동 형태 변환, 묵시적 형태 변환

    • 작은 데이터 타입이 큰 타입에 들어갈 때,
    • 자동으로 데이터 타입을 변경해 주는 것.
    • byte를 int에 담을 때.
    • 부작용이 없으니까 자동으로 변환.
  • Demotion, 강제 형태 변환, 명시적 형태 변화

    • 큰 데이터 타입을 작은 타입에 넣을 때,
    • 형태 변환 표현을 만들어서 강제로 형태를 변환 하는 것.
    • int를 byte에 담을 때.
    • 데이터가 손실될 수 있는 부작용을 각오해야 한다.
      */

      	public class Ch02Ex08 {
      
      	public static void main(String[] args) {
      
      		byte byteVar1 = 1, byteVar2 = 2;
      		int intVar1 = byteVar1;
      		System.out.println(intVar1);
      
      		byte byteVar3 = (byte) intVar1;
      		System.out.println(byteVar3);
      
      		byte byteVar4 = (byte) (byteVar1 + byteVar2);//연산을 하면 자동으로 int.
      		System.out.println(byteVar4);
      
      		int intVar2 = 129;
      		byte byteVar5 = (byte) intVar2;
      		System.out.println(byteVar5);
      		}//main
      
      	}//class

좋은 웹페이지 즐겨찾기