1. 연산자의 종류
- 단항연산자 : ++, –, +, -, ~, !, (type)
- 산술연산자 : *, /, %, +, -, «, », »>
- 비교연산자 : >, <, >=, <=, instanceof, ==, !=
- 삼항연산자 : ?:
- 대입연산자 : =, *= /=, %=, +=, -=, «=, »=, »>=, &=, ^=, |=
2. 연산자의 우선순위
- 산술 > 비교 > 논리 > 대입
- 단항 > 이항 > 삼항
- 단항연산자와 대입연산자를 제외한 모든 연산자의 진행방향은 좌-우 이다.
Continue reading
1. 키워드
- 각각의 스타일 속성에 따라 별도의 키워드 존재
- display : block,inline, compact, grid 등
Continue reading
0. DESC
Continue reading
- 서블릿(Servlet)
- 웹 개발을 위해 만든 표준
- 서블릿 규약에 따라 만든 클래스
- 서블릿을 만들기 위해서는 자바코드 작성, 코드를 컴파일해 클래스 파일 생성
- 서블릿은 실행코드 방식
- 화면에 출력되는 데이터를 바꾸고 싶은 경우
- 코드 수정, 컴파일, 클래스를 알맞은 곳에 복사
- 개발 효율성 하락
- JSP
- 서블릿의 단점을 보완하기 제작
- 스크립트 방식
- 서블릿 표준을 기반으로 만들어짐
- 내부적으로 jsp파일이 번역되면 최종 결과물로 서블릿이 만들어짐
Continue reading
1. 변수란
변수의 선언
- 변수의 선언
var 변수명;
- 선언과 동시에 초기화
var 변수명 = 값;
- 변수의 선언 없이 필요한 곳에서 바로 사용 가능
변수명 = 값;
- 변수를 선언하고 값을 할당하지 않으면 기본적으로 undefined 라는 초기값을 가진다
- 변수의 자료형을 정의하지 않아도, 코드를 실행할 때 자동으로 결정
- 변수의 타입은 typeof 예약어로 확인 가능
Continue reading
- DAO (Date Access Object)
- 데이터베이스 작업을 전담하는 객체
- 데이터베이스와 연계하여 처리할 프로그램을 정규화해 둔 클래스
- 입력, 수정, 삭제, 검색등의 작업을 미리 캡슐화
- CRUD
- C : create, insert
- R : read, select
- U : update
- D : delete
- DTO (Data Tranfer Object)
- 객체를 표현한 한 단위
- 데이터를 전달하는 단위
- 데이터를 하나의 객체로 관리할 목적으로 만들어 둔 클래스의 객체
- 데이터베이스의 table과 거의 동일한 필드를 갖는다
Continue reading
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. 데이터타입
- 기본자료형
- byte - 1byte, 정수
- short - 2byte, 정수
- int - 4byte, 정수
- long - 8byte, 정수
- float - 4byte, 실수
- double - 8byte, 실수
- char - 2byte, 문자
- 영문자나 한글과 같은 문자 하나를 저장해서 사용한다.
- 실제로는 해당 문자의 유니코드 값이 저장된다.
char a=’A’; => char a=65;
- boolean - 1byte, 논리(참거짓)
- 참조형
- 예제 - 숫자형
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)을 이용해 형변환해준디.
}
}
- 예제 - 문자형
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. 형변환
- 형변환 이란
- 연산을 위해 서로다른 데이터타입을 통일하기 위해 변환
- 연산 시
- 피연산자 중 더 큰 데이터 타입을 이용해 연산
- 대입 시
- 형 변환 종류
- 자동 형변환
- 작은 범위의 데이터를 큰 범위에 할당하는 경우
- 값의 손실이 발생하지 않는 변환
- 명시적 형변환
- 큰 범위의 데이터를 작은 범위에 할당하는 경우
- 값의 중요부분이 손실되지 않을 때만 수행해야함
자동 형변환 규칙
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; //명시적 형변환
}
}
- 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
1. 기본
- 특정 html태그를 선택할 때 사용하는 기능
- 선택자를 사용해 특정 태그를 선택하면 원하는 스타일 적용 가능
선택자{스타일속성:스타일값;}
Continue reading
- 여러 응용시스템들이 공유할 수 있도록 통합 저장된 데이터의 집합
- 중복을 최소화, 다수의 사용자가 공유할 수 있도록 데이터를 모아둔 시스템
- 상호 공유가 가능해야한다
- 필요에 따라 데이터를 신속하게 검색할 수 있어야 한다
- 데이터의 독립성
- 데이터의 무결성
- 데이터베이스 안의 데이터는 오류가 있어서는 안된다
- 한 조직체의 운영데이터 뿐만 아니라 데이터에 관한 설명까지 포함
- 효율적으로 접근이 가능하고 질의가 가능
- 데이터베이스의 정의
- integrated
- stored
- operational
- 조직의 기능을 수행하는데 유지해야 할 운영데이터
- shared
- 한 조직에 있는 여러 응용시스템들이 공동으로 소유하고 유지하며 이용하는 공용데이터
- 장점
- 데이터 중복 최소화
- 데이터 공유
- 무결성 유지
- 일관성 유지
- 데이터의 보안 보장
- 단점
- 운영비 증대 : 만ㅇㅎ은 시스템 자원 요구
- 자료 처리의 복잡 : 고급 프로그래밍 요구
- 복잡한 예비와 회복 : 장애 발생 대비를 위한 작업 필요
- 시스템의 취약성 : 시스템 성능에 따라 DBMS 성능이 좌우
Continue reading
개요, 환경변수 설정 및 웹 어플리케이션 생성
- html
- 클라이언트에서 실행
- 사용자 컴퓨터의 브라우저 : html문서 요청
- 웹서버 : 해당 html문서 탐색, 순수 html문서로 결과 응답
- jsp
- 웹서버에서 실행
- 사용자 컴퓨터의 브라우저 : jsp문서 요청
- 웹서버
- 해당 jsp문서 탐색
- 서블릿(java파일 생성)으로 변환 (parsing과정)
- 컴파일 (class파일 생성) (jsp문서 해석, 가공)
- 컴파일된 서블릿(class) 최종적으로 웹브라우저에 응답
Continue reading
1. 자바스크립트란
Continue reading
- 자바 프로그램과 데이터베이스를 연결하는 프로그래밍 방식
- 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 붙여넣기
- 환경변수
- 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 추가
Continue reading
1. 구조
a.실행구조
- 일반 프로그램 : 하드웨어 - 운영체제 - 프로그램
- 자바 프로그램 : 하드웨어 - 운영체제 - 자바가상머신(JVM) - 자바프로그램
- 운영체제의 차이를 jvm이 해결해주어 자바프로그램 하나로 서로다른 운영체제에서 실행이 가능하다.
b. 실행과정
- 소스코드 (파일명.java)
- 컴파일 (javac.exe)
- 결과물 (파일명.class)
- 실행 (java.exe)
- 사용자가 작성한 소스코드를 기계가 이해할 수 있는 바이트 코드로 변환하는 것을 컴파일이라 한다.
c. JVM의 메모리구조
- 자바 가상머신에 필요한 메모리는 운영체제가 할당
- 운영체제가 할당한 메모리 기반
d. jvm의 메모리 모델
- 운영체제로부터 메모리 할당
- 데이터의 특성에 따라 메모리 공간 나눈 후 분류
e. 메모리 영역
- 메서드영역
- 클래스 사용 시, 클래스에 대한 정보 저장
- 클래스변수 (static변수) 생성 후 저장
- 힙(heap)
- 인스턴스가 생성되는 공간
- 인스턴스 변수 생성 후 저장
- 호출스택 (call stack / execution stack)
- 메서드 작업에 필요한 메모리 공간 제공
- 지역변수들과 연산의 중간결과 저장
- 메서드 작업 종료 후 메모리 공간 반환
f. 클래스패스
- 클래스의 경로(클래스가 존재하는 경로)
- 환경변수 path : 확장자가 exe인 파일을 찾는 경로
- 환경변수 classpath : 확장자가 class인 파일을 찾는 경로
- cmd 내 환경변수 확인
- cmd 내 환경변수 임시 추가
- set classpath=.;
- set classpath=.;.\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
1. DOCTYPE
Continue reading
Continue reading