3. 연산자

1. 연산자의 종류

  1. 단항연산자 : ++, –, +, -, ~, !, (type)
  2. 산술연산자 : *, /, %, +, -, «, », »>
  3. 비교연산자 : >, <, >=, <=, instanceof, ==, !=
  4. 논리연산자 : &, ^, |, &&, |,
  5. 삼항연산자 : ?:
  6. 대입연산자 : =, *= /=, %=, +=, -=, «=, »=, »>=, &=, ^=, |=

2. 연산자의 우선순위

  • 산술 > 비교 > 논리 > 대입
  • 단항 > 이항 > 삼항
  • 단항연산자와 대입연산자를 제외한 모든 연산자의 진행방향은 좌-우 이다.

Continue reading

2. 웹프로그래밍 기초

  • 서블릿(Servlet)
    • 웹 개발을 위해 만든 표준
    • 서블릿 규약에 따라 만든 클래스
    • 서블릿을 만들기 위해서는 자바코드 작성, 코드를 컴파일해 클래스 파일 생성
      • 서블릿은 실행코드 방식
      • 화면에 출력되는 데이터를 바꾸고 싶은 경우
        • 코드 수정, 컴파일, 클래스를 알맞은 곳에 복사
        • 개발 효율성 하락
  • JSP
    • 서블릿의 단점을 보완하기 제작
    • 스크립트 방식
    • 서블릿 표준을 기반으로 만들어짐
    • 내부적으로 jsp파일이 번역되면 최종 결과물로 서블릿이 만들어짐

Continue reading

2. 변수와 자료형

1. 변수란

변수의 선언

  • 변수의 선언

    var 변수명;

  • 선언과 동시에 초기화

    var 변수명 = 값;

  • 변수의 선언 없이 필요한 곳에서 바로 사용 가능

    변수명 = 값;

  • 변수를 선언하고 값을 할당하지 않으면 기본적으로 undefined 라는 초기값을 가진다
  • 변수의 자료형을 정의하지 않아도, 코드를 실행할 때 자동으로 결정
  • 변수의 타입은 typeof 예약어로 확인 가능

Continue reading

2. DAO/DTO

  • DAO (Date Access Object)
    • 데이터베이스 작업을 전담하는 객체
    • 데이터베이스와 연계하여 처리할 프로그램을 정규화해 둔 클래스
    • 입력, 수정, 삭제, 검색등의 작업을 미리 캡슐화
    • CRUD
      • C : create, insert
      • R : read, select
      • U : update
      • D : delete
  • DTO (Data Tranfer Object)
    • 객체를 표현한 한 단위
    • 데이터를 전달하는 단위
    • 데이터를 하나의 객체로 관리할 목적으로 만들어 둔 클래스의 객체
    • 데이터베이스의 table과 거의 동일한 필드를 갖는다

Continue reading

2. 변수와 데이터타입, 형변환

1. 변수

1. 변수란

* 데이터를 저장하기 위해 메모리에 공간을 만들어 할당하고, 이름을 부여한 것
* 데이터의 저장과 참조를 위해 할당된 메모리 공간

1) 지역변수 (Local variables)

  • 메서드 내부에서만 사용 가능한 지역변수, 메서드 내에서 선언되는 변수
    • 메서드가 시작될 때 생성
    • 메서드를 빠져나갈 때 소멸
      • 블럭변수 : 메서드 내 또다른 블럭(if, for 등) 내에서 선언된 변수

2) 멤버변수 (instance 변수)

  • 클래스에서 선언된 변수
  • 클래스의 멤버역할을 하는 member field
  • 클래스 내의 여러 메서드에서 공통으로 사용 가능, 클래스 외부에서도 접근가능하게 할 수

3) 클래스변수 (static 변수)

2. 변수 선언

>데이터타입 변수명;   
>int num;

* int num;
    * int -데이터타입 / 정수를 저장할 메모리 공간을 할당하겠다.
    * num - 해당 변수에 접근할 때에는 num 이라는 이름을 사용하겠다.

3. 값 할당

* 변수 선언 후 값 할당
    > int a;   
    > a = 23;
* 선언과 동시에 초기화
    > int a = 23;
* 여러 변수 동시에 선언, 동시 할당
    > int a=10, b=20;
* 여러 변수 동시에 선언 후 할당
    > int a, b;   
    > a=10;    
    > b=20;
* 변수끼리의 할당
    >int a=10, b;   
    >b=a;
class VarTest{
    public static void main(String[] args){
        int a; //변수선언
        a = 10; // 값 할당

        int b = 20; //선언과 동시에 값 할당

        int c=30, d=40; //여러개 동시에 선언과 할당

        int e,f;
        e=100;
        f=200;

        int k=45;
        int n = kl
    }
}

4. 변수의 범위(Scope)

  • 중괄호{}로 묶인 블록내에서 선언된 변수는 블록을 나가면 소멸된다.

    단일블록
    {
    //code
    }

중첩블록
{
inti;
{
inti; //error 중첩 블록 내 동일한 변수 사용 불가능
}
}

다른 블록
{
int i
}
{
int i; // 블록이 달라 사용 가능
}

class ScopeTest 
{
	public static void main(String[] args) 
	{
		// 변수의 범위(Scope)
		//{} 블럭 내에서 선언된 변수는 블록을 빠져나가면 소멸
		//=> 메서드 내에서 선언된 변수는 해당 메서드가 종료되면 소멸

		int a=10;//main 메서드 내에서 사용 가능
		System.out.println(a);

		//for(int a=0;a<3;a++){} => error main메서드의 a변수 사용 불가
		for(int i=0;i<3;i++){
			System.out.println(a);
		}
		for(int i=0;i<4;i++){
			int k=30;
			System.out.println(k);
		}
		System.out.println(a);
		//System.out.println(i); i는 for 블록 탈출 후 소멸
		//System.out.println(k); k는 for 블록 탈출 후 소멸
	}
}

2. 데이터타입

  1. 기본자료형
    • byte - 1byte, 정수
    • short - 2byte, 정수
    • int - 4byte, 정수
    • long - 8byte, 정수
    • float - 4byte, 실수
    • double - 8byte, 실수
    • char - 2byte, 문자
      • 영문자나 한글과 같은 문자 하나를 저장해서 사용한다.
      • 실제로는 해당 문자의 유니코드 값이 저장된다.

        char a=’A’; => char a=65;

    • boolean - 1byte, 논리(참거짓)
  2. 참조형
    • String - 문자열
  3. 예제 - 숫자형
    public class VarTest{
     public static void main(String[] a){
         byte a = 127; //-128 ~ 127
         short b = 32000;
         int c = 2100000000; //21억
         long d = 21000000000L;//900경, int의 범위를 넘어설 경우 뒤에 L을 붙인다.
    
         long e=(long)a*b*c;
         //byte*short*int => int*int*int로 자동 형변환된다.
         //값이 int의 범위를 벗어나 잘못된 결과가 나오므로, (Long)을 이용해 형변환해준디.
     }
    }
    
  4. 예제 - 문자형
    public class VarTest{
     public static void main(String[] a){
         byte a = 127; //-128 ~ 127
         short b = 32000;
         int c = 2100000000; //21억
         long d = 21000000000L;//900경, int의 범위를 넘어설 경우 뒤에 L을 붙인다.
    
         long e=(long)a*b*c;
         //byte*short*int => int*int*int로 자동 형변환된다.
         //값이 int의 범위를 벗어나 잘못된 결과가 나오므로, (Long)을 이용해 형변환해준디.
     }
    }
    

3. 형변환

  1. 형변환 이란
    • 연산을 위해 서로다른 데이터타입을 통일하기 위해 변환
    • 연산 시
      • 피연산자 중 더 큰 데이터 타입을 이용해 연산
    • 대입 시
      • 좌우변의 타입이 일치해야 함
  2. 형 변환 종류
    • 자동 형변환
      • 작은 범위의 데이터를 큰 범위에 할당하는 경우
      • 값의 손실이 발생하지 않는 변환
    • 명시적 형변환
      • 큰 범위의 데이터를 작은 범위에 할당하는 경우
      • 값의 중요부분이 손실되지 않을 때만 수행해야함

자동 형변환 규칙
byte - short - int - long - float - double
char - int - long - float - double

명시적 형변환
float a = 3.14f;
int b = (int)a;

public class ConversionTest{
    public static void main(String[] a){
        long a = 2580L;
        float b = a; //자동형변환

        double c = 23.489;
        float d = (float)c; //명시적 형변환
    }
}
  1. wrapper 클래스
    • 자료형을 효율적으로 관리하기 위해 만들어진 자료형 대체클래스
    • 기본형 변수들도 객체로 다루어져야 하는 경우 사용된다.
    • Boolean / Character / Byte / Short / Integer / Long / Float / Double

      Integer.MAX_VALUE
      Integer.MIN_VALUE 등

    • 문자열 => 숫자 형변환

      String a = “12345”;
      int b = (int)a; //에러

      String a = “12345”;
      int b = Integer.parseInt(a); //문자열을 정수로 변환

      Float.parseFloat()
      Double.parseDouble()
      Byte.parseByte()

    • 숫자열 => 문자 형변환

      int a = 10;
      String b = Integer.toString(a);

      Double.toString()
      Long.toString()
      Float.toString()

Continue reading

2. CSS 선택자

1. 기본

  • 특정 html태그를 선택할 때 사용하는 기능
  • 선택자를 사용해 특정 태그를 선택하면 원하는 스타일 적용 가능

    선택자{스타일속성:스타일값;}

Continue reading

1. 데이터베이스란

  • 여러 응용시스템들이 공유할 수 있도록 통합 저장된 데이터의 집합
  • 중복을 최소화, 다수의 사용자가 공유할 수 있도록 데이터를 모아둔 시스템
  • 상호 공유가 가능해야한다
  • 필요에 따라 데이터를 신속하게 검색할 수 있어야 한다
  • 데이터의 독립성
    • 프로그램과 데이터 간의 독립성이 제공
  • 데이터의 무결성
    • 데이터베이스 안의 데이터는 오류가 있어서는 안된다
  • 한 조직체의 운영데이터 뿐만 아니라 데이터에 관한 설명까지 포함
    • 데이터베이스 스키마, 데이터베이스 구조
  • 효율적으로 접근이 가능하고 질의가 가능
  • 데이터베이스의 정의
    • integrated
      • 중복이 배제된 통합된 데이터의 집합
    • stored
      • 컴퓨터화되어 저장된 데이터
    • operational
      • 조직의 기능을 수행하는데 유지해야 할 운영데이터
    • shared
      • 한 조직에 있는 여러 응용시스템들이 공동으로 소유하고 유지하며 이용하는 공용데이터
  • 장점
    • 데이터 중복 최소화
    • 데이터 공유
    • 무결성 유지
    • 일관성 유지
    • 데이터의 보안 보장
  • 단점
    • 운영비 증대 : 만ㅇㅎ은 시스템 자원 요구
    • 자료 처리의 복잡 : 고급 프로그래밍 요구
    • 복잡한 예비와 회복 : 장애 발생 대비를 위한 작업 필요
    • 시스템의 취약성 : 시스템 성능에 따라 DBMS 성능이 좌우

Continue reading

1. 개요, 환경변수 설정 및 웹 어플리케이션 생성

개요, 환경변수 설정 및 웹 어플리케이션 생성

  • html
    • 클라이언트에서 실행
    • 사용자 컴퓨터의 브라우저 : html문서 요청
    • 웹서버 : 해당 html문서 탐색, 순수 html문서로 결과 응답
  • jsp
    • 웹서버에서 실행
    • 사용자 컴퓨터의 브라우저 : jsp문서 요청
    • 웹서버
      • 해당 jsp문서 탐색
      • 서블릿(java파일 생성)으로 변환 (parsing과정)
      • 컴파일 (class파일 생성) (jsp문서 해석, 가공)
      • 컴파일된 서블릿(class) 최종적으로 웹브라우저에 응답

Continue reading

1. JDBC

  • 자바 프로그램과 데이터베이스를 연결하는 프로그래밍 방식
  • java.sql
  • java프로그램은 JDBC를 통해 데이터베이스에 연결
    • 데이터를 검색, 입력, 수정, 삭제 가능
  • 드라이버 설치(ojdbc8.jar)
    • C:\app\Administrator\product\18.0.0\dbhomeXE\jdbc\lib\ojdbc8.jar 복사
    • c:\java\jdk1.8.0_65\jre\lib\ext 붙여넣기
      • 외부 jar 저장 경로
  • 환경변수
    • classpath
      • C:\Java\jdk1.8.0_321\jre\lib\ext\ojdbc8.jar 추가
      • 추가 후
        • %classpath%;.;C:\Java\jdk1.8.0_321\jre\lib\ext\ojdbc8.jar
  • 이클립스 사용 시
    • build path 라이브러리에 ojdbc8.jar 추가 buildpath1

Continue reading

1. 기본 골격과 구성

1. 구조

a.실행구조

  • 일반 프로그램 : 하드웨어 - 운영체제 - 프로그램
  • 자바 프로그램 : 하드웨어 - 운영체제 - 자바가상머신(JVM) - 자바프로그램
  • 운영체제의 차이를 jvm이 해결해주어 자바프로그램 하나로 서로다른 운영체제에서 실행이 가능하다.

b. 실행과정

  1. 소스코드 (파일명.java)
  2. 컴파일 (javac.exe)
  3. 결과물 (파일명.class)
  4. 실행 (java.exe)
  • 사용자가 작성한 소스코드를 기계가 이해할 수 있는 바이트 코드로 변환하는 것을 컴파일이라 한다.

c. JVM의 메모리구조

  • 자바 가상머신에 필요한 메모리는 운영체제가 할당
  • 운영체제가 할당한 메모리 기반
    • jvm 실행
    • 자바응용프로그램 실행

d. jvm의 메모리 모델

  • 운영체제로부터 메모리 할당
  • 데이터의 특성에 따라 메모리 공간 나눈 후 분류

e. 메모리 영역

  • 메서드영역
    • 클래스 사용 시, 클래스에 대한 정보 저장
    • 클래스변수 (static변수) 생성 후 저장
  • 힙(heap)
    • 인스턴스가 생성되는 공간
    • 인스턴스 변수 생성 후 저장
  • 호출스택 (call stack / execution stack)
    • 메서드 작업에 필요한 메모리 공간 제공
    • 지역변수들과 연산의 중간결과 저장
    • 메서드 작업 종료 후 메모리 공간 반환

f. 클래스패스

  • 클래스의 경로(클래스가 존재하는 경로)
    • 환경변수 path : 확장자가 exe인 파일을 찾는 경로
    • 환경변수 classpath : 확장자가 class인 파일을 찾는 경로
  • cmd 내 환경변수 확인
    • echo %classpath%
  • cmd 내 환경변수 임시 추가
    • set classpath=.;
      • 현재 디텍토리 추가
    • set classpath=.;.\sub
      • 현재디텍토리와, 현재 파일의 sub파일 추가

2. 골격

  • 최소한 하나 이상의 클래스가 있어야 한다.
  • 클래스의 이름은 파일명과 동일해야 한다.
  • 파일명과 동일한 클래스에 main 메서드가 있어야 한다.
public class Hello{
    public static void main(String[] args){
        System.out.println("Hello");
    }
}

- 파일명과 동일한 클래스 내에 main() 이라는 main메서드가 존재한다.

- 문장의 끝은 세미콜론 ‘;’을 붙여준다.


3. 주석

  • 컴퍼일의 대상에서 제외되는 문장
  • 특정 코드에 간단한 설명을 달 때 사용된다.

    /* ~ */ : 블록 단위 주석(여러 줄 주석)
    // : 행 단위 주석
    /** ~ */ : 자바 고유 Document 주석, 사용자 정의 Documentation Api를 만들 때 사용된다.

    public class Hello{
      public static void main(String[] args){
          System.out.println("Hello");
      }//주석은 컴파일에 영향을 미치지 않는다.
    }
    

4. package

  • 비슷한 유형의 클래스를 묶어놓은 것
  • 해당 package 내에 있는 클래스를 사용하려면 import 라는 예약어를 이용한다.

    import java.lnag.*;

    • java의 lang 패키지 안의 모든 클래스를 현재 파일에서 사용할 수 있도록 하겠다는 뜻

import 패키지명.클래스명;
import java.lang.String; import java.lang.System;
import java.io.File;
import java.util.Date; 등등

- java.lang 패키지는 사용빈도가 높아 자동으로 적용되어있다.

import java.lang.*; // import 예약어를 이용하여 java.lang의 모든 클래스를 적용
public class Hello{
    public static void main(String[] args){
        System.out.println("Hello");
    }
}

5. class

  • 여러 개의 클래스를 하나의 파일에서 사용할 수 있다.
  • public이라는 예약어를 사용할 수 있는 클래스는 *하나뿐이다.
  • main()메서드는 파일명과 동일한 클래스 내에 있어야 한다.
import java.lang.*;
public class Hello2{
    public static void main(String[] args){
        System.out.println("Hello Java!!");
        System.out.println("Hello Jsp!!");
    }
}

class Test{
    public void write(){
        System.out.println("Test Class!!");
    }
}

6. 명명 규칙

  • 클래스, 메서드, 필드
    • 첫 글자는 $, _, 영문자
    • 특수, 공백문자는 포함될 수 없다.
    • 숫자는 첫 글자가 아닐 경우 사용 가능하다.
    • 예약어는 사용할 수 없다.
  • 권장사항
    • 클래스 : 첫글자는 $, _, 대문자
    • 메서드 : 첫글자는 $, _, 소문자
    • 변수 : 소문자
    • 합성어의 첫글자는 대문자

      낙타표기법 - HelloJava

    • 상수 : 모든 문자를 대문자로 구성, 둘 이상의 단어는 _로 연결

      final int COLOR = 7;
      final int COLOR_RAINBOW = 5;

Continue reading

Pagination