<jsp:useBean id="memMgr" class="hewon.MemberDBMgr" />
와  MemberDBMgr memMgr = new MemberDBMgr();

같은 것을 의미한다

 

Posted by 공돌공돌
,

12일차

개발개발/자바 2013. 9. 10. 17:24

12일차(super의 개요,생성자호출방법,
                           접근지정자,추상클래스)

과제)OpTest.java로 저장
실행결과)
Scanner클래스

첫번째수 입력? 4 (nextInt)
두번째수 입력?7 (nextInt)
연산자[+,-,*,/]+ //nextLine(),next()
4+7=11

next()의 경우
문자를 입력하세요?
fkffkf gggag
s=fkffkf

nextLine()
문자를 입력하세요?
dada ddagag
s=ㅇ아dada ddagag

next()
첫수를 입력?->nextInt()
12
두번째수를 입력?->nextInt()
45
연산자[+,-,*,/]?->next()
+
12+45=57
===============
두번째방법

 입력받은값을 nextLine()으로 입력
 =>적절하게 숫자,소수점형으로 변환->저장

        System.out.println("첫수를 입력?");
        //a=input.nextInt(); 방법1
        a=Integer.parseInt(input.nextLine());//"34"->34
       
        System.out.println("두번째수를 입력?");
        //b=input.nextInt(); 방법1
        b=Integer.parseInt(input.nextLine());
       
        //"+"->'+'
        System.out.println("연산자[+,-,*,/]?");
        String s=input.nextLine();/

"50.3"->50.3
->Double.parseDouble(input.nextLine());
===========================
  j0910->SuperTest.java
   
상속->오버라이딩->파일덮어쓰기
==================
상속과 생성자와의 관계=>생성자 호출매카니즘
=========================
super=>부모클래스의 객체를 가리키는 예약어
            <->this
super()->부모클래스의 기본생성자를 호출
             <->this()->자식클래스의 기본생성자호출
super(1)
super("홍길동")

  A
   |
   B
    |
   C==>A,B의 기능
 
super();
=>생략이 가능
=>기본생성자를
    없으면 만들어서호출

 super(1)
 super("홍길동")

->인수가 있는 부모클래스
의 생성자를 호출할 경우
=>인수에 맞는 생성자가
반드시 부모클래스에
 존재해야 호출이 가능하다
(생략이 불가능)

=>생성자의 기본기능->데이터에 다양한 방법을 값을
                                 저장
 =>부모,자식간의 클래스->객체를 생성=>데이터를
             
==========   
    j0910                                         저장
 Employee.java
 Company.java

super->부모클래스의 객체를 가리키는
             예약어

super.멤버변수=>부모클래스가 가지고있는
                         멤버변수의 값을 불러올때
super.메서드명()=>부모클래스가 가지고있는
                         메서드를 호출하라.
=========================
=>중복된 코드를 줄이는 기법

상속과 접근지정자
=>접근권한=>도표

==============
추상클래스와 인터페이스=>설계(모델2->spring)
==============
 접근권한자=>영업부,관리부,개발부
                =>서로 각각 다른 폴더에 저장된
                    자바프로그램(클래스)=>어떻게
                    연결-->실행
==========================
1.private접근권한자

 j0910
    |
     -private

j0910.jprivate
   class A,   class B(main)
================
두클래스 사이에서
A<---B
  ----->

A클래스에서 B클래스에 접근을 할수없다
=>객체를 생성할 수가 없어서
     접근하고자하는 멤버변수에 데이터를
     저장할수 없거나,,,메서드를 호출불가

private접근권한자

같은 패키지
다른 패키지,상속을 받든 다 접근불가
같은 클래스내부에서만 멤버변수와 메서드를
호출이 가능하다.
========================

default접근권한

1.같은 클래스내부에서는 접근이 가능
2.같은 패키지내부에서는 접근이 가능
=====================
3.다른 패키지내부에서는 접근불가
4.상속을 받은 자식클래스의 객체를
   통해서도 접근이 불가


 j0910.jdefault.packageA
               |
                -A.java,<--- B.java

 j0910.jdefault.packageB
               |
                -C.java(외부패키지),  Sub_A.java(상속)

1.접근하고자하는 자바클래스가 어디에
   있는지 모를때 발생하는 에러메세지
  ->import구문을 줘서 위치

A cannot be to resolved to a type

2.위치는 알고 있지만 접근권한때문에
   접근하지못하는 경우

The Type A is not Visible
======================

protected접근권한

1.같은 클래스내부에서는 접근이 가능
2.같은 패키지내부에서는 접근이 가능
=====================
3.다른 패키지내부에서는 접근불가
4.예외조항)
   상속을 받은 자식클래스의 객체를
   통해서도 접근이 가능하다.(default차이점)
  =>public 권한과 연관이 있기때문

public class A { //일단 외부에서 접근을 하기위해서
                        public class로 작성해야 된다.
 
 protected int i;//멤버변수=>외부에서 접근차단
 protected void protected_method(){
   System.out.println(" protected i="+i);
  }
==========================
  
    j0910.jprotected.packageA
               |
                -A.java,<--- B.java==>default패키지복사
            (protected)

    j0910.jprotected.packageB
               |
                -C.java(외부패키지),  Sub_A.java(상속)
==============================
public 접근권한

전제조건)반드시 public class로 작성을 해야 된다.
 개발시에 작성한 클래스들을 다른 부서에서
 자유롭게 사용하기위해서는 반드시
 public class로 작성하고, 멤버변수,와메서드는
 public권한을 줘야 된다.

public class A {//외부패키지에서 접근이 가능하다
 
 public int i;
 public void public_method(){
   System.out.println(" public i="+i);
  }

같은 클래스내부에서 접근이 가능
같은 패키지내부에서 접근이 가능
상속을 받은 자식클래스내부에서도 접근이 가능
다른 패키지내부에서도 접근이 가능
=========================

  j0910.jpublic.packageA->A.java<--B.java

  j0910.jpublic.packageB->B.java
===========================

  추상클래스와 인터페이스=>예습

 

'개발개발 > 자바' 카테고리의 다른 글

11일차  (0) 2013.09.10
10일차  (0) 2013.09.10
9일차  (0) 2013.09.10
8일차  (0) 2013.09.10
7일차  (0) 2013.09.10
Posted by 공돌공돌
,

11일차

개발개발/자바 2013. 9. 10. 17:23

11일차(문제풀이,상속의 개요및
                        오버라이딩개요,생성자호출방법)
============================
 
  j0909

=>1)추상화->2)캡슐화->3)다형성->배열

과제>문자열을 입력받아서->대->소,소->대
 ConvertTest2.java
1.문자열을 입력? aabG===>for(;;),while(true)
                        AABg
   문자열을 입력?=>문자열의 내용을  비교해주는 메서드?
   ...
  E or e을 입력->System.exit(0);//프로그램 종료
                       adab123Ggg
     =>숫자는 입력하면 안됩니다.->강제종료(return)
          =>isXXXX =>문자인지,숫자인지를 체크해주는
                               메서드를 찾기
 
  ->Character클래스->isDigit('2')->true
                                 isDigit('a')->false
  ->
isSpace(char ch) ==>공백이 있는지를 체크?

 "aba dga"   ->'a  '
Deprecated.  --->앞으로 이메서드 사용하지
                          마세요
Replaced by isWhitespace(char).

 

2.Repeat.java로 저장
===============
<실행 결과>
1.반복할 문자를 입력? a=>nextLine()->String
 "a"->charAt(0)='a'
===========================

2.반복할 횟수를 입력? 3
       ->nextInt().
   aaa
 =>caller,worker=>문자,횟수->매개변수
     ->메서드작성
========================
  StringTest.java=>중요메서드를 정리
========================
문자열을 입력?
agGAdgag
s.concat('test')=agGAdgagtest
s.replace('a','c')=cgGAdgcg
s.endsWith('gag')true
s.length()=8
s.indexOf('G')=2
s.trim()=agGAdgag
===>substring(첫번째인덱스번호)
         =>첫번째인덱스번호부터 끝까지 문자열을
         =>뽑아낼때 사용
    0123
  "abcd" ->substring(2)="cd"
-->substring(첫번째인덱스번호,두번째인덱스번호)
     =>첫번째인덱스번호는 포함하고
          두번째인덱스번호 앞번호까지 포함
   "abcd"->substring(2,3)="c"

s.substring(2)=GAdgag
s.substring(2,5)=GAd

=>상속의 개요->상속의 오버라이딩의 개요
========================
=>상속=>재산(돈,부동산)=>소유권이전
=>자바의 상속=>멤버변수,메서드

추상화,캡슐화,다형성,상속성

상속=>개발시간이 단축
===>전에 개발한 내용을 다시 한번 반복해서
                                     사용
 =>회원로그인(회원가입),방명록,게시판,
      파일업로드,다운로드,
========================
 =>다음번 사이트개발->재활용
========================
=>회사에 입사->전산->부서에 배치=>급여

  사원에 대한정보->class Employee
=======================
  팀장에 대한 정보=>class Manager
                             public class Company (main())
  =================
 
class A=>1000 라인 ,
    class B=>중복되는 700라인 (복사)
                           +
                   새로운 코딩 300라인
======================1000라인
                   상속기법
                         +300라인

중복된 데이터를 코딩=>재활용->코딩양이줄어듬
                                         ->개발시간이 단축

class 자식클래스 extends 부모클래스
       (=서브클래스)         (=슈퍼(Super)클래스)
===========================

1.상속배제
   private 멤버변수->멤버변수명앞에 private붙어
                             있어서 상속불가
   private 메서드명->상속불가->자기 클래스내부
                                             에서만 사용
   생성자=>접근권한자와 무관하게 상속이 안된다.
    public Employee(){}

2.상속->단일상속(하나의 부모클래스), 만 지원
           =>인터페이스(다중상속을 흉내)
=======================
            다중상속(동시에 부모클래스 2개로부터,,,)

   class Child extends Father,Mother
                                (sub(),   sub())
   =>프로그램이 복잡->지원불가(C++은 지원가능)

 메서드의 호출유형

1.정적(main())->일반메서드->객체명.일반메서드()
2.정적->정적메서드->클래스명.정적메서드
                           ->정적메서드
3.생성자->생성자->this(),this(1),,,,
=======================
4.일반메서드->일반메서드=>객체명.일반메서드명()
                                        객체명을 생략
                                        this.일반메서드명();
                                      
 =>상속기법을 사용할려면
  class 자식클래스명 extends 부모클래스명

==========================
   부모,자식사이에 is a관계가 성립이 되는것만
   extends예약어를 사용=>상속

ex) p->q=>p이면 q이다(참)
                  q이면 p이다(참 또는 거짓이 나오면)
                                    거짓
             p                         q
class Manager extends Employee
=>팀장은 그회사의 직원이다.(참)
     직원은 그회사의 팀장이다.(거짓)

    class 무선전화기 extends 전화기(일반,보편)
             (특별)
    class 노트북 extends 컴퓨터

관리자의 정보
이름=박길수
부서명=영업부
보너스=4500.0
부하직원수=3
=========
이름=홍길동
나이=25
=========
직원의 이름=홍길동
나이=25
성별=남
주소=서울시 강남구
급여=1500
=========
이름=이길수
나이=32
=========
직원의 이름=이길수
나이=32
성별=남
주소=서울시 강북구
급여=1700
=========
이름=이기자
나이=28
=========
직원의 이름=이기자
나이=28
성별=여
주소=대전시 중구
급여=2000

class NotebookComp extends Computer
   //Owner,
  //calculate(){~}

   this.calculate();

=>상속은 누적제==>기능이 많아진다.(메서드)
06)oop4대-상속-super.ppt->1일차(javapp)
  =>owner(Computer),battery(NotebookComp)

상속의 개요,
오버라이딩=>부모로부터 물려받은 메서드가
                   자식클래스에 맞지않을때 자식클래스에
                   맞게 내용을 수정하는 기능
(Overridding)==>ex) 파일 덮어쓰기
============================
상속과 생성자와의 관계=>캡슐화(private,public)
                                           protected,default
                                    추상클래스,인터페이스

1.자바에서는 클래스를 새로 작성하면
   무조건 java.lang.Object클래스를 상속을 받게
   되어있다.

2.상속을 받은 상태(부모,자식관계)에서
   자식클래스의 객체를 생성->부모클래스의 생성자를
    호출==>나중에 자식클래스의 생성자가 호출
    (=>상속과 생성자와의 관계)
   =>생성자 호출 매카니즘


   ==>InheriTest.java
Father객체생성
난 Father기본생성자호출
f=j0909.Father@2a163765

child객체생성

난 Father기본생성자호출
난 Child기본생성자호출
c=j0909.Child@4b6e3f87

this->현재 생성된 객체를
         가리키는 예약어
      (자식클래스의 객체)

<->super->부모클래스
              객체를 가리키는
              예약어

this()->기본생성자호출
<->super()
  부모클래스의 기본생성자
  호출
============
=>super와super() 예습
=>접근권한자(p387)
 p379,상속과 생성자
 p381 super
=>매개변수가 있는경우
==============
=>추상클래스
==============
과제)OpTest.java로 저장
실행결과)
Scanner

첫번째수 입력? 4 (nextInt)
두번째수 입력?7 (nextInt)
연산자[+,-,*,/]+ //nextLine()
4+7=11
==================

 

 

'개발개발 > 자바' 카테고리의 다른 글

12일차  (0) 2013.09.10
10일차  (0) 2013.09.10
9일차  (0) 2013.09.10
8일차  (0) 2013.09.10
7일차  (0) 2013.09.10
Posted by 공돌공돌
,

10일차

개발개발/자바 2013. 9. 10. 17:23

10일차(중간점검(문제풀이)=>12장 콘솔로 입력->처리,
                2차원배열,상속의 개요 및 작성법)
==>j0906
           |
            -SaveAs ArgTest->ArgTest2

1.int tot=(int)str+(int)str2+(int)str3;
 ->String(참조형)->int(기본형)==>형변환이 안됨.

2.public static void main(int [] args)

=>main()의 매개변수는 수정할 수가 없기때문에
오류: j0906.ArgTest2 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오.
   public static void main(String[] args)

=============================
 자바 API문서를 이용해서 문자열->숫자로 변환
  하는메서드를 찾아서 코딩?

 http://java.sun.com
Java SE 7 Documentation
=>로컬로 압축풀어서 볼 경우

Download

 Documentation

61.2 MB 

 jdk-7u25-apidocs.zip=>index.html을 실행

자바프로그래밍 기본
=>java.lang패키지(폴더)

 =>문자열->String
 =>숫자->Integer=>문자->숫자
 ->소수점->Double
  ...

  Field Summary=>멤버변수
  Constructor Summary=>생성자
  Method Summary=>메서드

public static int parseInt(String s)
                    throws NumberFormatException

Parses the string argument as a signed decimal integer
문자열->10진수
                         10=Integer.parseInt("10")
                         "10"=?(10)

1.java.lang패키지를 찾음
2.관련된 클래스중에서 메서드를 찾을때
    매개변수의 갯수,반환형을 고려해서 찾을것.
3.메서드의 용도->예제를 볼것.
4.정적메서드->클래스명.정적메서드명
   일반메서드->객체명.일반메서드
========================
     10=Integer.parseInt("10")
     10.3=String.valueOf("10.3")->Double.parseDouble("10.3")

5.이클립스에서 자바의 API문서를 찾는방법
  찾는 클래스를 입력->shift+f2(단축키)->탭제공

6.찾고자하는 메서드-->데이터를 수정?
                 setXXX으로 시작하는 메서드를 찾을것
   저장된 데이터를 조회?--->getXXX으로 찾을것.
   반환형이 boolean인 경우->isXXX로 시작하는경우

=>ex)창의 확대를 금지시켜주는 메서드?
    java.awt패키지
                 Frame

7.새로운 클래스를 찾을때 ->생성자를 먼저 봐서
         객체를 생성

  ->메서드 찾기
Scanner(InputStream source) //키보드(System.in)
String,Integer=>기본 패키지(java.lang->자동인식)

java.lang패키지를 제외한 나머지 무조건
불러올때 import 최상위패키지명.하위패키지명...참조할 클래스명

=>#include <stdio.h>
import java.lang.String;

  자동정렬->ctrl+shift+f
  자동import->ctrl+shift+o

public int nextInt()

 숫자를 입력->nextInt()
 문자열을 입력->nextLine()
===========================
<문제1>키보드로 숫자를 입력을 받아서 구구단을
             출력하시오.(GuTest.java)

<실행결과>
   몇단을 입력할까요?7
   7*1=7
    ...
   7*9=63

<문제2>키보드로 입력을 받아서 별을 출력하시오.
<실행결과> =>StarPrint.java

   별을 출력할 수를 선택?[1-3] 3
   ***
    **
   *
   다른 수입력->숫자입력에서 오류발생!
출력할 별의수?[1-3]
7
숫자입력오류

<문제3>InputTest.java(Scanner)
<실행결과>
     1.이름을 입력?
        홍길동
     2.국어점수?
         90

   홍길동:수
===================
<문제4>배열과 키보드입력문제->ArrayCalc.java
 연속해서 5과목을 입력을 받아 총합,평균을 구하시오.
5과목 점수를 입력?
45
78
90
34
56
총합=303
평균=60.6

====================
제어문,메서드문제,배열,키보드입력,
String클래스에 대한 메서드
StringBuffer,,,
Eclipse사용법
====================
....2문제(인터넷검색)+2문제
============================
<문제5>키보드로 문자열을 입력을 받아서
소문자->대문자로,대문자->소문자로 출력하시오.

 ConvertTest.java->ConvertTest2.java(과제)

실행결과

문자를 입력?
                   0123456789
                  "abDadkadAg"-->문자열 길이
                      |
                     'a'=>대,소문자인지 판별?
                             'a'->'A'
                             'A'->'a'

                문자열의 길이=>length()->10
                문자열에서 문자->charAt(인덱스번호)
                  ABdADKADaG

   Character클래스

 1.문자->대문자인지 소문자인지를 체크해주는 메서드
                     isUpperCase(char ch)=>대문자인지
static boolean isLowerCase(char ch)=>소문자인지

             true=Character.isLowerCase('a')

   소문자->대문자로 변환=>toUpperCase(char)
                소문자로 변환=>tuLowerCase(char)

     type mismatch  convert String to int
              소->대문자,대->소문자
=======================
   Adb
   aDB

  B
  b
문자열을 입력?
dadkGadgAgaGa
DADKgADGaGAgA
==================================
2차원배열->DoubleArrayTest
자바의 2차원배열.ppt

과제>문자열을 입력받아서->대->소,소->대
 ConvertTest2.java
1.문자열을 입력? aabG===>for(;;),while(true)
                        AABg
   문자열을 입력?=>문자열의 내용을  비교해주는 메서드?
   ...
  E or e을 입력->System.exit(0);//프로그램 종료
                       adab123Ggg
     =>숫자는 입력하면 안됩니다.->강제종료(return)
          =>isXXXX =>문자인지,숫자인지를 체크해주는
                               메서드를 찾기

2.Repeat.java로 저장
===============
<실행 결과>
1.반복할 문자를 입력? a

2.반복할 횟수를 입력? 3
       ->nextInt().
   aaa
 =>caller,worker=>문자,횟수->매개변수
     ->메서드작성
==========================
===>문제
주말동안 ->2문제->제어문,배열,String클래스
 ->String클래스(subString(),trim(),concat()...예제)
   메서드문제...=>2문제
=============================

 

'개발개발 > 자바' 카테고리의 다른 글

12일차  (0) 2013.09.10
11일차  (0) 2013.09.10
9일차  (0) 2013.09.10
8일차  (0) 2013.09.10
7일차  (0) 2013.09.10
Posted by 공돌공돌
,

9일차

개발개발/자바 2013. 9. 10. 17:23

9일차(생성자 오버로딩과 메서드호출방법,this,배열)
    ==>오버로딩 문법(추가->배열,확장 for문)
=>자바 API문서를 참조->Math,String클래스,,,
=============================
 j0905
    |
     -PersonTest.java
      PrintTest.java 복사

  (),(name),(age),(sex),
    (name,age),(age,sex),(name,sex),
    (name,age,sex)==>이상적
===========================
p289 =>추상화(설계도)->캡슐화(올바른값 저장?)
        =>다형성(메서드의 오버로딩)
        ====================
         this->메서드의 호출방식

        업무=>팀장(과장)--->보고서작성->동료
                  caller              worker---->worker
                                         (caller)

1.main()(caller)--->일반메서드 호출
   (정적)==>객체를 생성->객체명.일반메서드명()

2.main()---------->정적메서드 호출
   (정적)====>클래스명.정적메서드명()
                        정적메서드명()
===========================
3. this를 이용하는 경우
=================
   Student.java(학생)

자동으로 정렬=>ctrl+a(전체복사)
                   =>ctrl+shift+f

 this의 용도
 
  (1)
  메서드를 호출해서 멤버변수에 값을 저장할때
   멤버변수와 매개변수가 같으면 멤버변수를 구분
  하기위해서 멤버변수앞에 this를 써서 구분해준다.

  public void setName(String name){
          name=name;
  }

  (2)현재 생성된 객체를 가리키는 예약어
       =>p2,p4==>this로 대신사용이 가능하다.
===========================
  this=>멤버변수와 매개변수를 구분하기위해 사용
            현재 생성된 객체 대신용도

  this()=>매개변수가 없는 기본생성자를 호출하라
 생성자->일반메서드

 메서드 호출 방식의 3 번째
 3. 일반메서드->일반메서드 호출
      생성자---->일반메서드 호출

 4.생성자-->자기 클래스 내부에 존재하는
                   다른 생성자를 호출
    this()=>매개변수가 없는 기본생성자를 호출
    this(1);==>매개변수가 1개면서 정수형
    this("홍길동")=>매개변수 1개,문자열
    this(2,"이길수")-->매개변수 2개
    .....==>다양한 방법으로 데이터를 저장하기위해서
 
    Person p5=new Person()
                  -->new Person("임시2",27,"여자")
  
              public  Person(){
  this("임시2",27,"여자");//맨앞에 코딩
  System.out.println("난 기본생성자호출됨!");
 }

             public Person(String name,int age,String sex){
  //p4.name="테스트임시";
  this.name=name;
  this.age=age;
  this.sex=sex;
  System.out.println("인수 3개짜리");
 }


    main()--->new Person()---->Person("~",27,"여")
              <---                   <----

인수 3개짜리
난 기본생성자호출됨!
이름=임시2
나이=27
성별=여자 
 
  추상화->캡슐화->다형성==>중간점검
 =>p291->p292=>String클래스
 =>배열까지->API문서
=========================
->ArrayTest

성적처리 프로그램

과목수->3,5,
점수,==총점,평균,석차==>1.변수
                                       2.자료형
  int score=0,tot=0,avg=0,,,
==========================
메서드 오버로딩+배열의 의미+확장 for문
 =>새로운 JDK문법
==========================
 다음중 성격이 다른 것은?

1. char c='A';
2. int a=23;
3. int su[]; //참조형
4. boolean b=false;

객체=레퍼런스변수=인스턴스=참조변수
                   배열명.length
for(int i=0;i<strArr.length

 ArrayTest2.java=>JDK6.0이상부터 지원

//매개변수의 자료형 ... 배열명
 public void print(String ... names){
                    //동적으로 배열의 크기가 자동설정
                    //String names[]={"자바"}
                    //String names[]={"자바","다형성"}
   for(String su:names){
  System.out.print(su);
    }
  System.out.println();
 }
========================
  at.print("자바");
           at.print("자바","다형성");

==>ArgTest.java

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
 at j0905.ArgTest.main(ArgTest.java:8)

자바 배열 연습
============
 10  20  30 =>apply->run

'개발개발 > 자바' 카테고리의 다른 글

11일차  (0) 2013.09.10
10일차  (0) 2013.09.10
8일차  (0) 2013.09.10
7일차  (0) 2013.09.10
6일차  (0) 2013.09.03
Posted by 공돌공돌
,

8일차

개발개발/자바 2013. 9. 10. 17:22

8일차(메서드작성연습=>다형성(생성자,오버로딩)
추상화->캡슐화->다형성->배열->상속성
=>p187->
        ->
        public void buyApple(int money){

         FruitSeller seller=new FruitSeller();
          numofApple+=seller.saleApple(money);
           myMoney-=money;
        }

====================================
44->buyer.buyApple(2000);//buyer.buyApple(seller,2000)
====================================
==>멤버변수가 존재하는 경우
 1.매개변수 X , 반환형 X->단순,반복
 2.매개변수 O,  반환형 X->Setter Method=>데이터저장목적,출력(계산)
 3.매개변수 O,  반환형 O->계산목적->합계를 구하기...

=>j0904
       =>CalcTest.java
       =>SaveAs AbsTest.java

 5,10=>-5=5
 10,5->5

   j0903->NemoHandling.java
   j0904->NemoHandling복사
===================
=>다형성->다양하게 메서드를 호출할 수가 있다
=>오버로딩 기법
=========================
1.메서드의 종류->정적메서드
                        StaticTest.java

 커피자판기(클래스)
 컵,밀크,프림,물,,,->private
 =>돈을 입력(객체를 생성)->4byte
 밀크커피버튼 클릭->메서드 호출
=======================
 무료자판기->정적메서드(무료게임)
 ->객체를 생성하지 않고도 호출이 가능한
    메서드
 ->자주 사용이되고(계산) 반복적인 기능을 가진
     메서드
 =>Math->최대값,최소값,평균값,지수,,,,
 ->정적메서드를 이용해서 사용
========================
    hiEveryone(12);
   MethodDefAdd.hiEveryone(12);

=>생성자,메서드 오버로딩==>배열=>중간점검
                                                  (문제풀이)->상속
2.생성자개요
3.메서드의 오버로딩 기법
=================>
Overloadding(오버로딩)
클래스내부에 정적,일반메서드
            ====>서로 비슷한 기능을 가진 메서드를 여러개
                        작성?==>각각의 메서드이름을 다 다르게
                                       작성->구분어렵다.(불편)
                      =>이름을 통일=>매개변수의 갯수,자료형
                                               을 서로 다르게줌으로써
                  구분

   StaticTest.java=>추가
   PrintTest.java=>생성자,메서드오버로딩


System.out.println("ddd");
System.out.println(234);
System.out.println(true);
====================
 PersonTest=>main()

생성자(=Constructor)

1.객체생성시 딱 한번 자동으로
   호출이 되는 메서드=>default Contstructor
                                 (기본생성자)
  =>ex)신용카드 결재-->폰(거래내역)

 2. 형식) public 클래스명과 동일(){

             }
   =>반환형을 사용하지 않는다

=>C++(생성자함수)
 3.생성자의 용도=====>데이터 저장목적
========================
  =>Setter Method와 기능이 같다
 
=>맨처음 데이터를 저장할 공간생성=>
     처음으로 값을 저장--->한꺼번에 여러개의데이터
                                     를 저장(생성자)
                                       |
                                      수정하는 데이터만
                                      Setter Method사용

<과제>NemoHandling.java->x,y
  생성자를 이용->public Nemo(){
                       
                        }
 생성자 오버로딩 기법->배열==>자바 API문서
                                               보는 방법
===========================
 

 

 

 

 


 

'개발개발 > 자바' 카테고리의 다른 글

10일차  (0) 2013.09.10
9일차  (0) 2013.09.10
7일차  (0) 2013.09.10
6일차  (0) 2013.09.03
5일차  (0) 2013.09.03
Posted by 공돌공돌
,

7일차

개발개발/자바 2013. 9. 10. 17:21

7일차(추상화 정리,메서드 작성방법2,캡슐화)
==========================
하나의 파일->클래스작성은 하나
                  여러개 작성가능

=>매개변수가 있고,반환값(리턴값)=계산값
=>계산목적

 ==>직사각형의 면적을 구하는 프로그램 작성
                           j0903
 =>Nemo.java, NemoHandling.java
                            (main())
  /*
   int addResult=num1+num2;
   return addResult; */

  return (num1+num2);
======================
메서드를 이용해서 전의 만들예제를 내용수정
========================
1.j0830->WhileTest2.java
   j0829->IFTest2.java

    =>j0903에 복사할것.

     j0903
          WhileTest2.java
          IFTest2.java
========================
추상화->클래스 작성,,,
캡슐화->추상화의 단점을 보완
         ->올바른 데이터값만 입력을 받아서 저장할 수있도록
             설계하는 기법

  j0902->Car.java,CarHandling.java
                 |
             j0903
=========================
=>Car.java,CarHandling->캡슐화 기법
========================
=>Nemo.java,NemoHandling.java
=======================
=>1.객체명.멤버변수=저장할값;=>금지
접근지정자=>1.private멤버변수==>외부에서 접근차단
                   2.각각의 멤버변수에 값을 따로 저장할 수있는
                      메서드를 하나씩 작성
                      
                    =>데이터저장=>매개변수 존재한개
                                           반환형은 없다.
                    =>public void setXXX(자료형 매개변수명){
                                 멤버변수=매개변수명;
                        }
                    =>저장된 데이터를 꺼내오는 방법->getXXX
                    형식)public 반환형 getXXX(){
                                return 멤버변수명;
                        }                   
===================================
다형성->생성자의 개요,기능,메서드 오버로딩?
상속성
==========================
  public void accessAAA(){
      AA inst=new AA();
     //inst.num=20;
     inst.setNum(20);
  }

<과제>NemoHandling.java
->캡슐화기법을 적용시키시오.=>x,y->private
                                            setX(int a),setY(int b)
                                    =>음수는 입력불가입니다.
                                            getX(),getY()
=================================
p156->문제6-1
문제1)
문제2)
=================================
예습) 정적메서드->p152~
  ==>07장 p190->생성자의 개요,기능읽어오기
  ==>->p286~291=>메서드 오버로딩
=================================

 

 

 

 

 

 

 

'개발개발 > 자바' 카테고리의 다른 글

9일차  (0) 2013.09.10
8일차  (0) 2013.09.10
6일차  (0) 2013.09.03
5일차  (0) 2013.09.03
4일차  (0) 2013.08.29
Posted by 공돌공돌
,

6일차

개발개발/자바 2013. 9. 3. 09:10

6일차(중첩제어문,탈출문,객체지향프로그래밍(6,7장)

   c:\webtest
          java
              6일차(중첩제어문,탈출문,객체지향프로그래밍)
p131->p137->중첩제어문
 j0902
    |
     -ForTest2

=>탈출문(continue,break,return)
    (=분기문)

break->주로 반복문(while,do~while,for)에서
            특정한 조건이 만족->이 break문과 가장
            가까운 제어문을 탈출

 이클립스가 익숙하지않으면
 원래상태로 전환=>window->reset perspective

 break->1.레이블이 없는 break문(ForTest2.java)
             2.레이블이 있는 break문->p142
             =>특정 레이블(책갈피)가 있는 부위의 제어문을
                 탈출하고 싶을때 사용하는 방법(BreakTest.java)

 continue문=>skip문
                 =>특정조건에 만족하는 continue문을
                     만나게 되면 continue구문이하의 문장을
                     수행하지 않고(skip)
                 =>continue문과 가장 가까운 루프로 이동
                 =>for문의 경우->증감식으로 이동
                     while문의 경우->조건식으로 이동
================================
  =>BreakTest.java->Save As->ConTest.java
continue문
a=1,b=1
a=1,b=3
a=1,b=4
a=1,b=5
=======
a=2,b=1
a=2,b=3
a=2,b=4
a=2,b=5
=======
a=3,b=1
a=3,b=3
a=3,b=4
a=3,b=5
=======
a=4,b=1
a=4,b=3
a=4,b=4
a=4,b=5
=======
a=5,b=1
a=5,b=3
a=5,b=4
a=5,b=5
=======
for반복문 종료!

<문제>=>SumBreak.java저장

조건1:1~100까지의 합계를 구하시오.(int sum,int i)
조건2:3의 배수 또는 5의 배수의 경우에만 합계를 구하시오
                       ||  (for문 if문 사용)
조건3:->3의배수 또는 5의 배수값을 출력(i값을 출력)
             합계가 200이 넘어가는 i값의 최소값을 구하시오
            =>if(sum > 200) break;

   while(true){
        ...
   }

<문제>->Star1.java
--->별을 체크->j
--->행증가--->i

package j0902;

public class Star1 {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
       System.out.println("1.별을 출력");
      for(int i=1;i<=5;i++){ //행
         for(int j=1;j<=i ;j++){
     //  for(int j=5;j>=i;j--){
           System.out.print("*");//*****
         }
         System.out.println();//줄바꿈
      }//outer for
 }//main
}
==================
  *
  **
  ***
  ****
  *****

  *****
  ****
  ***
  **
  *
================
A
AA
AAA
AAAA
AAAAA

package j0902;

public class Alpha {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
       System.out.println("1.별을 출력");
       char mun='A';
      
      for(int i=1;i<=5;i++){ //행
         for(int j=1;j<=i ;j++){
           System.out.print(mun);//*****
         }
         System.out.println();//줄바꿈
      }//outer for
 }//main
}

======
A
BC
DEF
GHIJ
KLMNO

package j0902;

public class Alpha {

 public static void main(String[] args) {
  // TODO Auto-generated method stub
       System.out.println("1.별을 출력");
       char mun='A';
      
      for(int i=1;i<=5;i++){ //행
         for(int j=1;j<=i ;j++){
           System.out.print(mun);//*****
           mun++;//65->66->67...
         }
         System.out.println();//줄바꿈
      }//outer for
 }//main
}

=============================
객체지향 프로그래밍->Java,C#,Delphi,PowerBuilder,,,
=>윈도우에서 프로그램작성법

1.추상화->p176~190 클래스의 개요,작성,구성요소
                               메서드작성방법(6장~7장)
2.캡슐화->메서드작성방법(09장)
               접근제어 지시자,정보은닉
3.다형성=>p190 생성자,오버로딩(11장),메서드작성방법(6장)
4.상속성=>14~16장(클래스의 상속)

도스->C
======================================
p184
하나의 파일에 클래스가 한개만 작성된 예제->ConTest.java
==========================
하나의 파일에 클래스가 한개이상인 경우의 예제

class A(main())------->A.java
class B            B.java
class C            C.java
....=>갯수는 제한이 없다.

=============
1.하나의 파일에 클래스 여러개가 있어도->main()메서드를 가진 클래스를
                                                         파일명으로 부여

2.public class로 시작하는 클래스를 파일명으로 부여한다.
                                ->main()를 가진다
  하나의 파일에 public class로  시작하는 것은 하나만 가능
=================================
public class A(main())------->A.java
public class B            B.java
class C

3.class A
   class B
   class C
======================
  ->main()메서드도 없고,public class로 시작하는 클래스는 없는경우
=>1)A.java 2)B.java 3)C.java 4)그날의 컨디션 A,B,C.java부여
-----------------------------------------------------------------
 추상화->ppt자료
            현실세계에 존재하는 모든 사물(객체)의 공통적인 상태,특징과

            행동양식을 유추(->잘 생각해서) 클래스를 만들어내는
            일련의 과정들

   ex)  자동차(종류,회사별,이름,,키보드,연필,,,
   ===>8가지 자료형으로도 도저히 저장할 수 없는 대상->공통의특징,
                                                                               행동양식

  =>자동차,사람,컴퓨터,자판기,....
========================================
   자동차->Car.java,==>운전->CarHandling.java

//1.main()메서드 있는 클래스->실행목적
//2.main()메서드가 없는 클래스->데이터저장 목적

1.단순하고,반복적인 기능을 가진경우->메서드작성

  형식) 접근지정자 반환형(void) 메서드명(){

       }
=>클래스의 구성요소 메서드작성.ppt

 2.매개변수가 존재하고 반환형이 없는 메서드
=>데이터를 저장하거나 출력
    =============================

클래스-->새로운 자료형을 만들기위한 설계도(빵틀)
           ->자동차===================>공장
                                                                   대량생산
                                                                   사물(객체)

객체를 생성====>자동차를 저장하기위한 공간을 메모리상에
                           만들어라
===================================
Car.java->CarHandling.java->

 

'개발개발 > 자바' 카테고리의 다른 글

8일차  (0) 2013.09.10
7일차  (0) 2013.09.10
5일차  (0) 2013.09.03
4일차  (0) 2013.08.29
3일차  (0) 2013.08.28
Posted by 공돌공돌
,

5일차

개발개발/자바 2013. 9. 3. 09:09

5일차(제어문2(switch,while,do~while,for~))

=>p118
              ->다중if문 대용
              switch~case=>다중 if문==>속도가 느림
                                if(조건식)
                                   문장1
                                else if(조건식2)
                                    문장2
                                ...
           형식)                                 조건의 결과->숫자
                              su%2==0
                    switch(조건식){ //수식,변수==>상수

                    case 값1: 실행문장;
                                    break;
                    case 값2: 실행문장2;
                                    break;
                            ..
                     default:->조건에 만족하는것이 없을때
                     }
         j0830
     =>SwitchTest
================
          SwitchTest3

=>반복문=>특정조건이 거짓이 될때까지
                  계속해서 실행이 되는 구문

 for,while,do~while
==================
 while->do~while->for문

변수가 필요로하는 경우

1.계산하는 문제->ex)1~100합계

             1+2+3+....100=? int sum
               반복할 횟수->int repeat

// ======================
2.입력을 받아서 처리해주는 프로그램
3.현재 프로그램의 상태를 기억할 필요가 있을때->변수
=>ex)=>그림판
    boolean mouseclicked=false;
    if(mouseclicked==true){ // if(mouseclicked){
      그림그리는 코딩...
    }                                         }
=============================
      while(조건식) //조건식이 참인동안
        실행할 문장;=>하나이상 실행시 블럭처리

       do{
           반복해서 실행할 구문;//(1)먼저 무조건 실행
          }while(조건식)//(2)조건체크
 =>먼저 실행할 문장부터 구현하고 나서 나중에 조건식체크
 =>누적의 개념->게시판의 글목록보기에서 실행
 
 =>WhileTest2.java

1.반복할 횟수가 정해져있는 경우=>for,while
 =>WhileTest.java

2.반복할 횟수가 정해져있지 않은 경우
   =>while,do~while
   =>ex)파일메뉴->외부에서 파일불러오기
   =>파일입출력
============================
<문제>WhileTest2.java

1)변수 2개를 이용해서
   int start=20,end=40
        //시작      종료값
2)결과)
           start=20
           start=21
           start=22
           ...
           start=40

   int start=40, end=20
   ->첫번째수는 두번째수보다
       클수가 없습니다.
=============================
형식)=>ForTest

  ex)for(초기값 설정;조건식;증감식)
                반복해서 실행할 구문;
            (1)      (2)(5)
     for(int i=0;i<3;i++)(4)
                (3)->실행문장(6)

for문->초기값은 생략가능
      ->for문 밖에 선언가능
      ->증감식은 생략이 가능
      =>for문 안쪽에 코딩
 
i=1=>sum=sum+i;
                     0+1=1
          gop=gop*i;
                    1*1=1
===============
i=2일때 sum=sum+i
                       1+2=3
            gop=gop*i;
                      1*2=2
================
i=3일때  sum=sum+i(3+3)
             gop=gop*i(2*3)
================
i=4일때  sum=sum+i(6+4)
             gop=gop*i(6*4)
=================
<문제>=>짝수들의 합을 구하기
1~100까지 합계->5050

2의 배수이면서 7의 배수들의
합계를 구하기

for(int i=0;i<=100;i+=2){ //0,2,4,6,,,
   //짝수인 경우에만 합계를 구하기
     //if(i%2==0)//2,4,6,8,10
 sum+=i;//sum=sum+i;
 gop*=i;//gop=gop*i;
  }
   
1.참조형 변수와 같은 자료형의 크기
->int,float
=====================
2. byte b=10;
    char ch='A';
     int i=100;
    long l=1000L

==>자동형변환
a) b=(byte)i;//4->1byte->생략
                                        불가
b)ch=(char)b;//1byte->2byte
 -128~127==>0~65535
   =>양수때문에 생략불가
c)short s=(short)ch;
 -32768~32767<--0~65535
==================
d,e

d)float f=(float)l; //long->float
=>float f=l;
e)i=(int)ch;//2byte->4byte
=>생략가능
==================
4번.
a,b,c,d
================
byte b=256;//-128~127
char c='';//에러유발
char c=' '//빈문자->가능
char answer="no";
float f=3.14F; //(float)3.14;
double d=1.4e3f;//->float->double

 

'개발개발 > 자바' 카테고리의 다른 글

7일차  (0) 2013.09.10
6일차  (0) 2013.09.03
4일차  (0) 2013.08.29
3일차  (0) 2013.08.28
2일차  (0) 2013.08.28
Posted by 공돌공돌
,

4일차

개발개발/자바 2013. 8. 29. 16:29

4일차(배정연산자,캐스트연산자,제어문개요)
캐스트연산자=> (  )

자동형변환
 1.데이터를 저장->자동으로 형이 변환->저장
   ex) byte b=23;
 2.계산하면 작은데이터->큰쪽 데이터
   ex) 2(int)+3.4(double)=2.0+3.4=5.4
===========================

 명시적인 형변환(=강제형변환)

byte s2=12; short s3=45;
       //int result=s2+s3; 기본
       short result=(short)(s2+s3);//수식은 소괄호
       System.out.println("result="+result);

p95 비트연산자,쉬프트연산자


논리연산자->&,|,^
  논리적인 데이터  & 논리적인 데이터
       (2>3)                  (5<7)


비트연산자->정수값->2진수로 변환->계산
 &,|,^,~ =>이진화된 데이터 & 이진화된 데이터
                           14 & 9
===========================
=>&(and)
     |(or)
     ^(xor)
     ~(not)

ex)  14 & 9==>2진수
  byte b=14,c=9

 양수->1,2,4,8,16,,,

1->true, 0->false

   00001110=>14
   00001001==>9   &
==============
   00001000==>10진수로 변환->8
=====================
 | ->or ->(둘중에 하나가 참이면 ->참)

   00001110=>14
   00001001==>9   |
==============
   00001111=>1+2+4+8=15

  ^->xor연산자->1 1, 0 0->0 ,1,0,0,1->1

   00001110=>14
   00001001==>9   ^
==============
   00000111->1+2+4=7
===============
 ~ ->not===>1->0   0->1로 변환
===============
 ~14
 
  00001110=>14
  ==========
  11110001->-?==>보수
  ===============
  10-3=7+3
================
 =>양수->음수로 변환

      1)reverse->1->0,0->1
      2)+1
==================
 ex)byte a=2;
      00000010->2=>-2
      =========
      11111101
      +           1
==================
      11111110===>-2
===============
      음수->양수로 변환

      1)-1
      2)reverse->1->0,0->1
      ============
       11111110-->-2
       -           1
    ============
       11111101
===========
       00000010==>2
======================
       BitTest.java
  ~14 =>00001110->14
              11110001->-?=>음수->양수
              -            1
              =========
              11110000
              =======
              00001111->1+2+4+8=>15=>-15
============================
비트연산자->비트를 오른쪽,왼쪽으로 이동시키는 연산자
                  shift연산자

     >>>=>데이터전송과 연관(데이터입출력)
============================
1) 피연산자 >> n(이동시키는 비트수)
  ->  14 >> 1->7,    14 >> 2=>3
             00001110
               0000111=>왼쪽에 공백->양수->0을채움
                                                    음수->1을채움
             00000111->1+2+4->7
=======================
       -14 >> 1
 공식)  14(x)  >> 1(n)=>14(x)/2의n=7
         -14(x)  >> 1(n)=>-14/2=>-7
=======================
       14 << 1(n)->왼쪽으로 비트수를 이동
       00001110
       0001110  ====>오른쪽공백->0을 채움
       14(x) << 1(n)->x*2의 n->14*2=28
===========================
       00011100=>4+8+16=28
       -14(x) << 1=>-14*2=-28

     -8 >> 1=>-8/2=-4
     -8 >> 2=>-8/4=-2
===========================
      >>>=> >>와 기능이 거의 유사
          ->왼쪽에 공백=>양수,음수 상관없이 무조건
                                  0을 채운다
             ->데이터를 전송할때 내부적으로 >>>
                 을 이용 ->양수로 만들어서 전달
            byte->-128~127=>0~255
===========================
복합대입연산자=>배정연산자=>
 int num=10;
  num=num+5;//=>num+=5; //권장
  ===========>실행속도가 더 빠르다
  num=num*10;//->num*=10;
  num=num-10;//->num-=10;
  num=num/10;//=>num/=10;

 System.out.println("num="+num);
 p79
  e+=2.1;//e=e+2.1;
  e*=2;//e=e*2;
  n*=2.2=>n=n*2.2;
==================
주의)==>a++,++a
             =>a=a+1;//a+=1; a++
              a--=>a=a-1; //a-=1;
=====================
 netbeans 개발툴
 ==========
 제어문=>실행흐름의 컨트롤
==================
 자바의 명령어->순차문->코딩순서대로 실행이 되는
                                   문장.
                       제어문->특별한 조건에 따라서 실행
                                    될수도 실행이 되지않을
                                    수도 있는 문장
                       주석문-->컴파일러가 번역하지 않는
                                    문장
=============================
 제어문 종류

 1.p110~117->if문,삼항연산자->조건문
 2.switch문->선택문->JDK버전에서 추가된 문법
 3.p124~ 반복문(for,while,do~while)
-------------------------------------------------

 조건문->if문->특정조건에 따라서 참,거짓(둘중의
                      하나값을체크할때)

 변수,수식,true
 형식1)  if(조건식)==>p111
              문장1;

 형식2)  if(조건식)
                문장1;
            else
                문장2;


   IFTest2.java
======================
  형식3)if(조건식) { //if문내부에 또 다른 if문
              if조건식--->참인경우
          }else{
              if조건식--->거짓인경우
          }
======================
  형식3)=>if(조건식) {
                    문장1;
              }else if(조건식2){
                    문장2;
              }else if(조건식3){
                    문장3;
              }
               ...
              else{

              }

 삼항연산자->IFTest3.java

=>if문 대신사용하는 연산자
형식)변수명=(조건식)? 참인문장:거짓인문장
 
   int num1=50,num2=100;
=================

             50       100       50     100
=>big=(num1>num2)?num1:num2;
               50     100         50 -100            100-50
     diff=(num1>num2)?(num1-num2):(num2-num1)
==>제어문->조건문


 

 

'개발개발 > 자바' 카테고리의 다른 글

6일차  (0) 2013.09.03
5일차  (0) 2013.09.03
3일차  (0) 2013.08.28
2일차  (0) 2013.08.28
초보 Java 웹 개발자들을 위한 학습 로드맵 프로그래밍  (0) 2012.05.16
Posted by 공돌공돌
,

3일차

개발개발/자바 2013. 8. 28. 15:48

3일차(연산자의 개요및 연산자종류)

  c:\webtest
        java
           |
          3일차(연산자의 개요및 연산자종류)->3일차.txt
================================
1장 프로그램설치-->2장 변수,자료형->Eclipse
        Editplus

 package(패키지)->탐색기의 폴더처럼->예제를 관리->0828

 PrefixTest

  bin->
     |
      -j0828
           PrefixTest.class
  src->소스파일
    |
     -j0827
          OpTest.java
     -j0828
           PrefixTest.java
            ...

1.패키지를 따로 작성->우리가 예제를 하나씩 추가=>그래픽
2. j0827.aa.bb=> jo827
                               aa
                                  bb->OpTest.java
===========================
산술연산자(+,-,*,/,%->나머지를 구해주는 연산자)
증감연산자

 앞에 있으면(prefix)->먼저 계산이 되고
 뒤에 있으면(postfix)->나중에 계산이 된다.

int b=a++;
int b=a;//int b=
a=a+1;
===========
관계연산자
=>대소비교를 해주는 연산자
<,>,>=,<=

==(변수에 저장된 값이 서로 일치하는지 확인)
!=(변수에 저장된 값이 서로 같지 않은지 확인)

ex) int a=5;
      int b=10;
==========>변수(집)

<주의 할점>
 1.a==b=>a의 값과 b의 값이 같은지 확인
 2.a!=b=>두개의 변수값이 서로 같지 않은지 확인
 3.a=b==>b의 값을 a에 저장하라
========================
논리연산자=>참과 거짓을 판별할 수 있는 연산자

&&(and)=>그리고->두개의 값이 참이 되는 경우
||(or)->또는-->둘중에 하나라도 참이 있으면 T
   ==>조건평가->첫항의 결과에 따라서 두번째항을 체크할지
                         말지 결정해주는 계산방식

 (2>3) && (5<7)
     F            T--->F
                  F---->F
    T------->T----->T
                 F----->F
============================
 !(not)=>부정 =>!T-->F   !F->T

=>명제
          &&(and)   ||(or)     !   xor
T    T        T        T ---->F      F
T    F        F        T         F      T
F    T        F        T         F       T
F    F        F        F         T       F

============
 &(and)==>모두평가방식->양쪽항을 무조건 체크해서 결과
 | (or)
 ^(xor)->배타적인 결합->두개의 값이 같으면 False
                                     두개의 값이 다르면 참
================
 LogicalTest.java
 
boolean result=(num1==10) && (num2==20)

(3+5)*7==>3+5*7
==============
비트연산자
쉬프트연산자
=========
배정연산자
=========
삼항연산자=>제어문과 연관(if)
big=(num1>num2)? num1:num2;

형식)
변수명=(조건식)?참인값:거짓인값;

=>조건식의 계산결과에 따라서 값을 다르게
     변수에 저장시킬때 관여하는 연산자
=>삼항연산자

    ThreeTest.java=>삼항연산자
====================
형변환연산자(Cast Operator)->캐스트연산자
     변수앞에 (변환시키고자하는 자료형)

p64 자료형의 변환

정수,문자,문자열,논리적인값 저장
                                      소수점
=============================>자동형변환
byte->short->int->long->float->double
   1        2        4      8         4
          char
             2
<===========================강제형변환
                                    float f=3.5f;
   int num=(int)3.15;  ==>(강제로 부여하는 자료형)변수명 or 숫자
=======================================
연습문제 풀이=>CastTest.java
==================
논리형->boolean(1byte)
문자형->char(2byte)
정수형->byte->short->int->long
실수형->float(4byte), double(8byte)
=======================
2-2)

long regNo=3456781234567L;//13자리
        System.out.println("regNo="+regNo);

2-3)

 int i=100;
 long l=100L;
 final float PI=3.14f;

-리터럴->데이터저장부분
   100,100L,3.14f

-변수=>i,l
-상수->PI->변수명 앞에 final단어가 붙으면
                  상수=>대문자로 사용

-키워드(예약어)->int,long,final,float
=======================
2-4]
a. int
b.Byte->Wrapper class
c.double
d.boolean

2-5]

System.out.println("1"+"2");//문자열+문자열=문자열->"12"
System.out.println(true+"");//boolean(1byte)+String(4byte)
                                             "true"+""->"true"
System.out.println('A'+'B');//문자+문자->int로 변환
                              65+66=>131
System.out.println('1'+2);//문자(char)+2(int)=>int+int
                                              49+2=51
System.out.println('1'+'2');//문자+문자=>int로 변환
                             49+50=>99
System.out.println('J'+"ava");//문자(char)+문자열(String)
                                             "Java"
System.out.println(true+null);//오류

2-6] 키워드가 아닌것은?(모두)
a. if->키워드임

b. True->true
c. NULL->null
d. Class->class
e. System->키워드가 아님
                  항목이 아님

2-7] 변수의 이름으로 사용?

a. $ystem=>가능(_,$만 가능)
b. channel#5=>#은 사용불가
c. 7eleven=>첫글자는 숫자오면 에러유발
d. If->가능하다(단 if->예약어이기때문)
e. 자바->한글도 가능
f. new ->예약어
g. $MAX_NUM=>사용가능
h. hell@com=>@때문에 에러유발

========================>
1,2,3일차->공부

자료형변환->명시적인 형변환 ,배정연산자,비트,쉬프트연산자
제어문->if,switch

 

 

 

 


1.boolean=>자료형변환이 없다.(배제)
=========
자료형변환-->수식연산사이에 일어나는 과정

형변환의 종류

1.자동형변환->계산을 하다보면 자동적으로 형변환

 숫자를 저장하면서 그 자료형에 맞게 데이터를 변환->저장
1) byte su=2;  00000010
    short su=2; 00000000 00000010
    int su=2;     00000000 00000000 00000000 00000010

2) 3.5(double)+12(int)=>3.5+12.0=15.5
->ex) byte su;//자료형 변수명부여(규칙->식별자규칙)
         su=27;//변수명=저장할값;

         int num2=35;//선언하면서 데이터를 저장시켜라
  //su변수의 값=27
        //byte sum=su(byte)+num2(int);=>int+int->int
       int sum=su+num2;

2.명시적인형변환(=강제형변환)
  =>개발자(사용자)가 따로 명확하게 어떤형으로 변환을 할지
      강제적으로 지정해주는 경우

 

 

 


 

 

'개발개발 > 자바' 카테고리의 다른 글

5일차  (0) 2013.09.03
4일차  (0) 2013.08.29
2일차  (0) 2013.08.28
초보 Java 웹 개발자들을 위한 학습 로드맵 프로그래밍  (0) 2012.05.16
변수  (0) 2012.04.16
Posted by 공돌공돌
,

2일차

개발개발/자바 2013. 8. 28. 15:47

2일차(식별자,변수,상수,자료형,이클립스설치 및 환경설정)

 c:\webtest
        java
           2일차(식별자,변수,상수,자료형,이클립스설치 및 환경설정)
             식별자,변수,상수,자료형=>editplus작업
             이클립스설치 및 환경설정->

 =>1장~5장->설치(환경설정)->변수,자료형(2장)
                  ->4장 연산자->3장(형변환)->5장 제어문
==================================
  복습(2~3주)
=>자바->6장,7장->클래스,인스턴스(객체),9장,10장,11장,
              13장 배열,14,15,16장 상속,chapter 17장,인스턴스
====================================
     18장.예외처리,20장.Wrapper 클래스, 21장. 제너릭,22장(웹)
      24장 파일과 I/O 스트림(웹->파일 업로드)
      25장 Swing=>안드로이드 프로그래밍

     SE->기본적인 자바프로그래밍을 작성(응용프로그램)
            메모장,그림판 프로그램작성=>필수버전
===============================
     EE->웹프로그래밍 할때 필요->Tomcat서버
     ME->모바일 프로그래밍

자바의 특징->바이트코드->->JavaTest.java->JavaTest.class
                  ->운영체제에 상관없이 다 실행이 될수있는 코드로
                      작성된 파일
===================================
chapter2 변수,자료형

 기본적인 프로그래밍->입출력 프로그램->입력받아서 처리
자료형=>사용자가 컴퓨터에게 지정->문자->'a',A
                                                             "note"->문자열
                                                    23,23.6
             저장되는 데이터의 종류와 크기를 지정해주는 것
            (=데이터형)->p41
  1.기본자료형->8가지(문자,문자열,숫자(소수점),논리적인값)

=>VarTest.java

1.수치(숫자)
               byte->-128~127=>27저장
                     ->자바에서의 데이터(문자)를 전송할때 사용하는
                        입출력단위=>0~255

                 ex) 자료형 변수
변수->컴퓨터가 저장되는 임의 의공간->이름부여
               short->2byte=>-32768~32767
               int->4byte기억공간에 데이터를 저장
                   ->자바에서의 연산을 할때 기본 데이터형
                      변수+변수=>

  자바의 특징->플랫폼에 독립적=>운영체제에 상관없이 다 실행
                     이식성이 있다.->연산결과에 따라서 기본적으로
                                            자료형은 int
                     long형->long형으로 데이터를 저장->저장할값L;
              ex) int num1;
                    num1=10;//메모리 낭비
                  int a;
                  int b;
                  int c;
========================
                  int a; int b; int c;

 식별자(idenfier)
->개발자가 임의로 편리성을 가지고 부여하는 이름
->ex) v_변수명

1.대소문자를 구분해서 부여
 =>String name="홍길동";

2.영문자+숫자+특수기호(_,$)=>조합
3.숫자는 맨처음에 올수없다.
4.키워드(=예약어)는 사용불가
 
  VarTest2.java
               long

 byte->short->int->long->float->double
                               8          4
                               2,2.3

자바에서의 소수점이하를 저장->실수->
무조건 double형으로 저장해야 한다.

->소수점이하가 2자리이하->간단->float로 저장
->소수점이하가 6자리이상->정밀도->double로
                                                     저장
============================
=>VarTest3.java

2.문자->p53->문자저장->내부적으로 숫자로 변환->저장(2진수)

byte->-128~127=>0~255=>범위 데이터를 전달(아스키코드)
==>한글,일본어,독일어...=>유니코드(한글저장->2byte)
                                                      영문저장->1byte

  char->2byte(0~65535)
=>0x숫자->16진수형태로 저장
=>0숫자->8진수형태로 저장
=================
16진수
0~9 10 11 12 13 14 15
        A  B   C   D  E   F

숫자로 저장->0x,0을 붙여서 저장
문자로 저장->유니코드형태로 저장
                  '\u0000'~'\uFFFF'
boolean->논리적인값을 저장
               (참,거짓인것을 판별할수있는값)

true,false값만 저장
===============
->1,0으로 표현할수가 없다.
================

'a'=>"ab"=>문자열
String=>문자열을 저장시키는 데이터자료형
=====>기본자료형(8가지)에는 포함이 되어있지 않은 자료형
              (참조형)
===================================
=>이클립스로 개발=>
  http://www.eclipse.org
==================

Eclipse IDE for Java Developers, 151 MB=>Java만 가능

Eclipse IDE for Java EE Developers, 246 MB
           =>Java+web 기능이 내장=>권장

=>eclipse ~.zip=>다운받아서 압축을 풀면 된다.(설치과정이 없다)
          =>MyEclipse(유료)

eclipse-jee-juno-SR1-win32.zip->xp
========================
eclipse-jee-juno-SR2-win32-x86_64.zip
=>64bit용

 eclipse
    |
     -eclipse.exe=>실행
==================
이클립스 실행오류

 가상머신생성 오류발생
->이클립스->자바의 특정파일을 불러다
                   사용
eclipse.ini->편집

openFile
////////////////////////////////추가->저장시킨후->eclipse.exe실행
-vm
C:\Jdk7.0\bin\javaw.exe
////////////////////////////////
-vmargs

2.오류메세지->해상도에 문제가 발생->큰 오류창이 실행
=>-Xmx512-->-Xmx256으로 해상도를 낮춰준다음에
저장시킨후 실행

3.32bit버전으로 설치하는 경우->버전이 안맞는 경우
=>공유된 라이브러리파일을 불러올수 없다.(jvm.dll)
==========================
     eclipse~x64~.zip->다운받음.
============================

C:\Users\강사\workspace
=>작업영역?

do not ask agin->체크

1.작업영역을 설정
=>예제작성->저장위치 지정?

c:\webtest
       java
         |
        sou폴더생성

C:\webtest\java\sou

2.자바->프로젝트작성
      JavaStudy
File->New->other
   java project선택

   src->~.java저장
   bin->~.class저장
=============
연산자
변수선언->저장->출력

연산을 하기위한 연산자
OpTest

public static void main()
체크->자동으로 만들어준다

3.글꼴설정,라인번호출력
windows->preference

General
   Apperanace
       Colors and Font

  Editors
        Text Editors
    show line numbers를 체크
    (라인번호를 출력)
->Basic->Text Font

 Apply->OK적용 끝
===============
Verdana,14->26

연산자->연산을 하기위한 기호

종류

1.산술연산자
     -단항산술연산자->+,-,++,--
     ex) int a=-5;

     -이항산술연산자->p74->+,-,*,/,%(나머지)
ex) int a=5,b=6;
      int c=a+b;//수식->피연산자 연산자 피연산자
 
 editplus->저장->컴파일

 eclipse->파일을 저장->자동 컴파일

=>ctrl+s(저장)->자동 컴파일
===================
=>증가시키는 기호->++
     감소                ->--

++변수명->prefix(전위연산자)
     변수명++=>postFix(후위연산자)
======================
=>연산자->증감연산자,관계연산자
                  논리연산자,캐스트연산자

3장->자료형의 변환
======================

 

2.관계연산자(=대소비교연산자)
3.논리연산자
==========
4.비트연산자
5.쉬프트연산자
==========
6.대입연산자
7.증감연산자
8.캐스트연산자(=형변환연산자)

 


3.논리적인값 저장->true,or false

===================================
  2.참조자료형->사람의 정보

 

 

 

 

 

 

 

 

 


 

 

'개발개발 > 자바' 카테고리의 다른 글

4일차  (0) 2013.08.29
3일차  (0) 2013.08.28
초보 Java 웹 개발자들을 위한 학습 로드맵 프로그래밍  (0) 2012.05.16
변수  (0) 2012.04.16
생각하고 코딩하기  (0) 2012.04.13
Posted by 공돌공돌
,

 

예제소스 - http://bboong100.cafe24.com/0915/calc.html

 

현재 까지 가능한 기능

텍스트창 오른쪽 정렬

엔터키로 연산

소수점 값 입력

위에 텍스트에 먼저 입력한 숫자와 연산자를 표시하고 연산 결과는 아래창에 출력되는 기능

연산자, 0, 소수점(.) 중복 입력시 처리 문제

'C' 버튼을 눌렀을 때 위 텍스트창도 초기화

연산 결과 나오고 다시 연산자 버튼을 눌렀을 때 위 텍스트 창에 기존 수식이 계속 출력되던 문제 해결

처음 숫자 입력 하고 연산자 누르고 다른 연산자 눌렀을 때 나중에 누른 연산자로 대체되어야 하는 문제

백스페이스 눌렀을 때 생기는 오류들 예외처리!

추가할 기능

. 을 두 번 이상 눌렀을 때 생기는 오류들 ...

Posted by 공돌공돌
,

 

예제소스 - http://bboong100.cafe24.com/0911/test02.html

 

test02.html  (부모창)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
<script type="text/javascript">
function popup()
{
    var flag;
    //http://naver.com
    var url = "popup1.html";
    var popupname = "popupwin";

    flag = "left=200, ";
    flag += "top=200, ";
    flag += "width=400, ";
    flag += "height=250";
    window.open(url, popupname, flag);
}

function popuptest1(name, code)
{
    var testtable = document.getElementById("popuptest");
    var tr = document.createElement("tr");
    tr.setAttribute("height", "30");
    if (name == "" || code == "") {
        alert('문자 입력하시오');
        return;
    }

    var td1 = document.createElement("td");
    td1.setAttribute("width", "100");

    var td2 = document.createElement("td");
    td2.setAttribute("width", "200");

    tr.appendChild(td1);
    tr.appendChild(td2);

    td1.innerText = name;
    td2.innerText = code;

    if (testtable.firstChild.lastChild.childNodes.length == 1)
        testtable.firstChild.removeChild(testtable.firstChild.lastChild);

    testtable.firstChild.appendChild(tr);
}
 </script>
 </HEAD>
 <BODY>
 
    팝업테스트  <input type="button" value="popup" onclick="popup()"> <p><p>
    <table id="popuptest" border="2">
        <tr>
            <th width="100">name</th>
            <th width="100">code</th>
        </tr>
    </table>
 </BODY>
</HTML>

 


test02_1.html   (자식창_팝업창)

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
<script type="text/javascript">
        function add2()
        {
            var name = document.ex.name.value;
            var code = document.ex.code.value;
            opener.popuptest1(name, code);
            self.close()
        }

        function reset()
        {
            document.all.name.value="";
            document.all.code.value="";
        }
 </script>
 </HEAD>
 <BODY>
 
<form name='ex'>
 Name : <input type="text" size="10" name="name" id="name" ><br>
 Code : <input type="text" size="10" name="code" id="code" ><br>

 <input type="button" value="추가" onclick="add2()">
 <input type="button" value="초기화" onClick="reset();">

</form>
 </BODY>
</HTML>

'개발개발 > 자바스크립트' 카테고리의 다른 글

계산기 진행상황 (0915)  (1) 2012.09.15
문서객체  (0) 2012.09.11
0906 자바스크립트 계산기  (0) 2012.09.06
계산기 문제점  (0) 2012.09.06
0905 자바스크립트 계산기  (0) 2012.09.05
Posted by 공돌공돌
,

 

예제확인 - http://bboong100.cafe24.com/0911/test01.html

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
 <HEAD>
<script type="text/javascript">
  function teTable()
{
    // var test = $('test');
    var testtable = document.getElementById("test");
    // table 개체 가져와서 testtable에 저장
    var tr = document.createElement("tr");
    // tr 개체 가져와서 testtr에 저장
    tr.setAttribute("height", "30");
    if (document.all.subject.value == "" || document.all.content.value == "") {
        alert('문자 입력하시오');
        return;
    }

    var td1 = document.createElement("td");
    td1.setAttribute("width", "100");

    var td2 = document.createElement("td");
    td2.setAttribute("width", "200");

    tr.appendChild(td1);
    tr.appendChild(td2);

    td2.innerText = document.all.content.value;
    td1.innerText = document.all.subject.value;

    if (testtable.firstChild.lastChild.childNodes.length == 1)
        testtable.firstChild.removeChild(testtable.firstChild.lastChild);

    testtable.firstChild.appendChild(tr);

    document.all.subject.value = '';
    document.all.content.value = '';
}
 </script>

 </HEAD>

 <BODY>
 <table id="test" border="2">
        <tr>
            <th width="100">subject</th>
            <th width="100">content</th>
        </tr>
    </table>
    1 : <input type="text" size="10" name="subject"> 2 : <input type="text" size="10" name="content">
        <input type="button" value="추가" onclick="teTable()">
 
 </BODY>
</HTML>

Posted by 공돌공돌
,

 

http://bboong100.cafe24.com/0906/calc.html

현재 까지 가능한 기능

텍스트창 오른쪽 정렬

엔터키로 연산

소수점 값 입력

위에 텍스트에 먼저 입력한 숫자와 연산자를 표시하고 연산 결과는 아래창에 출력되는 기능

연산자, 0, 소수점(.) 중복 입력시 처리 문제

'C' 버튼을 눌렀을 때 위 텍스트창도 초기화

연산 결과 나오고 다시 연산자 버튼을 눌렀을 때 위 텍스트 창에 기존 수식이 계속 출력되던 문제 해결

처음 숫자 입력 하고 연산자 누르고 다른 연산자 눌렀을 때 나중에 누른 연산자로 대체되어야 하는 문제

추가할 기능

백스페이스 눌렀을 때 생기는 오류들 ...

.  을 두 번 이상 눌렀을 때 생기는 오류들 ...

Posted by 공돌공돌
,

예제 확인 및 소스(소스보기)

 

Posted by 공돌공돌
,

 

http://bboong100.cafe24.com/0905/calc.html

현재 까지 가능한 기능

텍스트창 오른쪽 정렬

엔터키로 연산

소수점 값 입력

위에 텍스트에 먼저 입력한 숫자와 연산자를 표시하고 연산 결과는 아래창에 출력되는 기능

연산자, 0, 소수점(.) 중복 입력시 처리 문제

'C' 버튼을 눌렀을 때 위 텍스트창도 초기화

 연산 결과 나오고 다시 연산자 버튼을 눌렀을 때 위 텍스트 창에 기존 수식이 계속 출력되던 문제 해결 

추가할 기능

처음 숫자 입력 하고 연산자 누르고 다른 연산자 눌렀을 때 나중에 누른 연산자로 대체되어야 하는 문제

백스페이스 눌렀을 때 생기는 오류들 ...


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style type="text/css">
    .txtalign {
        text-align: right;
    }

</style>

<script type="text/javascript">
var str = "";
var str2 = "";
var flag = false;

function cal(num)
{
    //입력된 값이 숫자면 true 문자면 false
    if (!isNaN(num))
    {
        if (!flag)
        {
            str = "";
            document.getElementById('txt').innerHTML = '';
            //innerhtml 태그 - 지정된 태그의 값을 바꿔준다!
        }
        str += num;
        str2 += num;
        // 위 아래텍스트 창에 동시에넣어주고
        // 아래창만 출력한다
        document.getElementById('txt').innerHTML += num;
        flag = true;
    }
    //이전에 입력값이 숫자였으면
    else if (flag)
    {
        str2 += num;
        //기존에 입력된 숫자와 연산자를 위 텍스트창에 출력한다
        document.getElementById('txtcalc').innerHTML = str2;
        if (!isNaN(num))
        {
            str2.substring(0, str.length - 1);
            str2 += num;
            document.getElementById('txtcalc').innerHTML = str2;
        }
        flag = false;
    }
}

function answer()
{
    //수식이 연산자로 끝나면
    if (!flag)
    {
        alert('수식을 다시 입력해주세요!');
        return;
    }
    else
    {
        document.getElementById('txtcalc').innerHTML = str2;
        document.getElementById('txt').innerHTML = eval(str2);
        // 위 텍스트창에 연산한 결과값을 eval()함수로 계산 하고아래 텍스창  결과 출력
        document.getElementById('txtcalc').innerHTML = "";
        // 위 창에 내용을초기

        str2 = document.getElementById('txt').innerHTML;
        alert(str2);
    }
}

function enter(number)
{
    if (event.keyCode == 13)
    {
        answer();

    }
    else if ((event.keyCode >= 96 && event.keyCode <= 105))
    {
        cal(event.keyCode - 96);
    }

    else if (flag && ( event.keyCode == 107 || event.keyCode == 109 ||
                       event.keyCode == 106 || event.keyCode == 111 ||
                       event.keyCode == 110))
    {
        switch (event.keyCode) {

            case 107:cal('+');break;
            case 109:cal('-');break;
            case 106:cal('*');break;
            case 111:cal('/');break;
        }
    }
    //        else
    //        {
    //            alert('숫자 또는 연산자를 입력하세요!');
    //        }
}

function clearcal()
{
    str2 = "";
    flag = false;
    document.getElementById('txt').innerHTML = "수식을 입력하세요..";
    document.getElementById('txtcalc').innerHTML = "";
    // 텍스트창 초기화
}

function bs()
{
    document.getElementById('txt').innerHTML = str.substring(0, str.length - 1);
    str2 = str2.substring(0, str2.length - 1);
    document.getElementById('txtcalc').innerHTML = str2;
    if (str.length == 0)
        str = '0';
    // substring 으로 0부터 value 길이에서 -1 한 만큼의 길이를 출력한다
}

</script>
<title>계산기</title>
</head>
<body onkeydown="enter(cal);">
<form name="calc">
    <table border=1 width=200px height=200px cellpadding=0 cellspacing=0 align=center>

        <tr border=2>  <!-- 연산자 표시창  -->
            <td colspan=5 align=center height=20>
                <div id='txtcalc' name='txtcalc' class="txtalign" value=''></div>
                <div id='txt' name='txt' class="txtalign" value=''>수식을 입력하세요..</div>
            </td>
        </tr>

        <tr height=40px> <!-- 백스페이스, C -->
            <td colspan=5>
                <table border=1 width=100%>
                    <tr align=center>
                        <td width=33%><input type=button value='BackSpace' style="width:100%;" onclick=bs()></td>
                        <td width=33%><input type=button value='C' style="width:100%;" onclick=clearcal()></td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr align=center>
            <td width=25%><input type=button value='  1  ' onclick="cal('1')"></td>
            <td width=25%><input type=button value='  2  ' onclick="cal('2')"></td>
            <td width=25%><input type=button value='  3  ' onclick="cal('3')"></td>
            <td width=25%><input type=button value='  /  ' onclick="cal('/')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value='  4  ' onclick="cal('4')"></td>
            <td><input type=button value='  5  ' onclick="cal('5')"></td>
            <td><input type=button value='  6  ' onclick="cal('6')"></td>
            <td><input type=button value='  *  ' onclick="cal('*')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value='  7  ' onclick="cal('7')"></td>
            <td><input type=button value='  8  ' onclick="cal('8')"></td>
            <td><input type=button value='  9  ' onclick="cal('9')"></td>
            <td><input type=button value='  +  ' onclick="cal('+')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value='  =  ' onclick="answer()"></td>
            <td><input type=button value='  0  ' onclick="cal('0')"></td>
            <td><input type=button value='  .  ' onclick="cal('.')"></td>
            <td><input type=button value='  -  ' onclick="cal('-')"></td>
        </tr>
    </table>
</form>
</body>
</html>

 

Posted by 공돌공돌
,

createStatement

createstatement static parsing 으로 sql문을 parsing 할 때 입력된 해당 값을 sql문에 binding하여 같이 parsing 하여 실행한다

static parsing sql문과 입력된 값을 함께 파싱 하므로 한번 parsing sql문을 다른 데이터를 입력하여 사용 할 수 없어 해당 서비스에 사용자 수가 많은 경우 메모리 full이 발생할 수 있다

createStatement사용시 Statement를 사용하여 sql문에 필요한 데이터를 입력 받고 실행시 발생한 데이터를 ResultSet 에 저장한다

장점 : 가볍다

단점 : parsing sql문 사용시 입력된 값이 다를 경우 재사용할 수 없으며 자원의 낭비가 발생할 수 있다

사용법

Statement stmt = con.createStatement();

String sql = "insert into member(id, pwd, title, content)”
                     +”values('33','1111','
제목','내용')";

int result = stmt.executeUpdate(sql);

 


 

preparedStatement

prepareStatement dynamic parsing으로 sql문을 parsing한 후 입력된 해당 값을 parsing sql문에 binding하여 실행한다.

dynamic parsing sql문을 먼저 parsing하여 입력되는 값이 여러개 일 경우 sql문을 여러번 parsing하지 않고 parsing sql문에 원하는 값을 binding하여 사용하므로 자원의 낭비가 적다.

prepareStatement사용 시 PreparedStatement를 사용하여 sql문에 필요한 데이터를 입력 받고 실행 시 발생한 데이터를 ResultSet에 저장한다.

장점 : 값의 binding없이 sql문 만을 parsing하므로 parsing sql문의 재사용이 용의하여 자원이 낭비으며 인젝션으로 인한 피해를 줄일 수 있다.

단점 : 무겁다.

 

pstmt = con.prepareStatement("select b_name, b_title, b_content from board where                                             b_id=?");
pstmt.setString(1, id);
rs = pstmt.executeQuery();

 


callableStatement

callableStatement SQL의 스토어드 프로시저를 실행시키기 위해 사용되는 인터페이스

스토어드프로시저란 query문을 하나의 파일형태로 만들거나 데이터베이스에 저장해 놓고 함수처럼 호출해서 사용 하는 것이다 이것을 이용하면 연속되는 query문에 대해서 매우 빠른 성능을 보인다

장점 : 자바코드에 쿼리문이 들어가지 않아 보다 간결해진다

단점 : 저장프로시져에서 선언한 순서대로 파라미터를 넘겨야 한다

 

 

 

 

'개발개발 > JSP&스트럿츠' 카테고리의 다른 글

jsp:useBean  (0) 2013.12.17
Struts logic 커스텀 태그  (0) 2012.09.04
GET/POST 방식 차이점  (0) 2012.09.03
Posted by 공돌공돌
,

Struts logic 커스텀 태그

정의 - 빈과 JSP의 Logic 처리 담당하는 커스텀 태그

종류  

 logic 커스텀 태그

설명 

logic:present 

해당 자원의 존재 유무를 체크 

logic:equal 

빈의 property 값을 비교 

logic:iterate 

빈의 속성 및 바인딩 객체를 반복 

logic:forward 

Forward 처리 

logic:redirect 

Redirect 처리 

 

'개발개발 > JSP&스트럿츠' 카테고리의 다른 글

jsp:useBean  (0) 2013.12.17
createStatement & preparedStatement & callableStatement  (1) 2012.09.04
GET/POST 방식 차이점  (0) 2012.09.03
Posted by 공돌공돌
,

 

 

http://bboong100.cafe24.com/0903/calc.html

현재 까지 가능한 기능

텍스트창 오른쪽 정렬

엔터키로 연산

소수점 값 입력

위에 텍스트에 먼저 입력한 숫자와 연산자를 표시하고 연산 결과는 아래창에 출력되는 기능

연산자, 0, 소수점(.) 중복 입력시 처리 문제

'C' 버튼을 눌렀을 때 위 텍스트창도 초기화

추가할 기능

eval를 사용하지 않고 연산( +,- 등 연산자를 연속으로 입력 했을 때 에러 발생)

예외처리

연산 결과 출력 후 새로운 숫자 입력 했을 때 텍스트창이 초기화되지 않는 문제

 


<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
<style type="text/css">
 .txtalign {
  text-align: right;
 }

</style>

<script type="text/javascript">
 var str = "";
 var str2 = "";
 var flag = false;

 function cal(num)
 {
  //입력된 값이 숫자면 true 문자면 false
  if (!isNaN(num))
  {
   if (!flag)
   {
    str = "";
                document.getElementById('txt').innerHTML = '';
                //innerhtml 태그 - 지정된 태그의 값을 바꿔준다!
            }
   str += num;
   str2 += num;
            // 위 아래텍스트 창에 동시에넣어주고
            // 아래창만 출력한다
            document.getElementById('txt').innerHTML += num;
   flag = true;
  }
  //이전에 입력값이 숫자였으면
  else if (flag)
  {
   str2 += num;
            //기존에 입력된 숫자와 연산자를 위 텍스트창에 출력한다
            document.getElementById('txtcalc').innerHTML = str2;
   flag = false;
  }
 }

 function answer()
 {
  //수식이 연산자로 끝나면
  if (!flag)
  {
   alert('수식을 다시 입력해주세요!');
   return;
  }
  else
  {
   document.getElementById('txtcalc').innerHTML = str2;
   document.getElementById('txt').innerHTML = eval(str2);
            // 위 텍스트창에 연산한 결과값을 eval()함수로 계산 하고아래 텍스창  결과 출력
            document.getElementById('txtcalc').innerHTML = "";
            // 위 창에 내용을초기화

        }
 }

 function enter(number)
 {
  if (event.keyCode == 13)
  {
   answer();

        }
  else if ((event.keyCode >= 96 && event.keyCode <= 105))
  {
   cal(event.keyCode - 96);
  }

  else if (flag && ( event.keyCode == 107 || event.keyCode == 109 ||
       event.keyCode == 106 || event.keyCode == 111 ||
       event.keyCode == 110))
  {
   switch (event.keyCode){
    case 107:cal('+');break;
    case 109:cal('-');break;
    case 106:cal('*');break;
    case 111:cal('/');break;
   }
  }
  else
  {
   alert('숫자 또는 연산자를 입력하세요!');
  }
 }

 function clearcal()
 {
  str2 = "";
  flag = false;
  document.getElementById('txt').innerHTML = "수식을 입력하세요..";
  document.getElementById('txtcalc').innerHTML = "";
  // 텍스트창 초기화
 }


    function bs()
 {
  document.getElementById('txt').innerHTML = str.substring(0, str.length - 1);
  str2 = str2.substring(0, str2.length - 1);
  document.getElementById('txtcalc').innerHTML = str2;
  // substring 으로 0부터 value 길이에서 -1 한 만큼의 길이를 출력한다
 }
</script>
<title>계산기</title>
</head>
<body onkeydown="enter(cal);">
<form name="calc">
<table border=1 width=200px height=200px cellpadding=0 cellspacing=0 align=center>

   <tr border=2>  <!-- 연산자 표시창  -->
   <td colspan=5 align=center height=20>
    <div id='txtcalc' name='txtcalc' class="txtalign" value=''></div>
    <div id='txt' name='txt' class="txtalign" value=''>수식을 입력하세요..</div>
   </td>
  </tr>

    <tr height=40px> <!-- 백스페이스, C -->
        <td colspan=5>
            <table border=1 width=100%>
                <tr align=center>
                    <td width=33%><input type=button value='BackSpace' style="width:100%;" onclick=bs()></td>
                    <td width=33%><input type=button value='C' style="width:100%;" onclick=clearcal()></td>
                </tr>
            </table>
        </td>
    </tr>
    <tr align=center>
        <td width=25%><input type=button value='  1  ' onclick="cal('1')"></td>
        <td width=25%><input type=button value='  2  ' onclick="cal('2')"></td>
        <td width=25%><input type=button value='  3  ' onclick="cal('3')"></td>
        <td width=25%><input type=button value='  /  ' onclick="cal('/')"></td>
    </tr>
    <tr align=center>
        <td><input type=button value='  4  ' onclick="cal('4')"></td>
        <td><input type=button value='  5  ' onclick="cal('5')"></td>
        <td><input type=button value='  6  ' onclick="cal('6')"></td>
        <td><input type=button value='  *  ' onclick="cal('*')"></td>
    </tr>
    <tr align=center>
        <td><input type=button value='  7  ' onclick="cal('7')"></td>
        <td><input type=button value='  8  ' onclick="cal('8')"></td>
        <td><input type=button value='  9  ' onclick="cal('9')"></td>
        <td><input type=button value='  +  ' onclick="cal('+')"></td>
    </tr>
    <tr align=center>
        <td><input type=button value='  =  ' onclick="answer()"></td>
        <td><input type=button value='  0  ' onclick="cal('0')"></td>
        <td><input type=button value='  .  ' onclick="cal('.')"></td>
        <td><input type=button value='  -  ' onclick="cal('-')"></td>
    </tr>
</table>
</form>
</body>
</html>

 

Posted by 공돌공돌
,

Get 방식

get 방식은 요청 URL에 파라미터를 붙여서 전송한다

URL 기반으로 전송되기 때문에 굳이 폼을 사용하지 않더라도 파라미터르 전송할 수 있다 

형식은   [ ?이름1=값1&이름2=값2&...]

ex > http://localhost:8080/servlet_prj/parameter_values?name=kaka&hobby=%EB%93%B1%EC%82%B0

URL에 창에 파라미터 값이 모두 나타나므로 보안에 취약하다 따라서 중요정보( id, password) 등은 POST방식으로 전송

 

Post 방식

데이터 영역을 이용해서 파라미터를 전송하게 된다

웹 브라우저나 웹 서버 등에 관계없이 전송할 수 있는 파라미터의 길이에 제한이 없다

html의 header로 데이터를 전송하므로 보안이 된다

파라미터ㅢ 길이에 제한이 없으므로 게시판, 방명록과 같은 데이터 처리에 POST방식을 사용한다

 

'개발개발 > JSP&스트럿츠' 카테고리의 다른 글

jsp:useBean  (0) 2013.12.17
createStatement & preparedStatement & callableStatement  (1) 2012.09.04
Struts logic 커스텀 태그  (0) 2012.09.04
Posted by 공돌공돌
,

현재 까지 가능한 기능

텍스트창 오른쪽 정렬

엔터키로 연산

소수점 값 입력

추가할 기능

eval를 사용하지 않고 연산( +,- 등 연산자를 연속으로 입력 했을 때 에러 발생)

위에 텍스트에 먼저 입력한 숫자와 연산자를 표시하고 연산 결과는 아래창에 출력되는 기능

예외처리

연산 결과 출력 후 새로운 숫자 입력 했을 때 텍스트창이 초기화되지 않는 문제

연산자, 0, 소수점(.) 중복 입력시 처리 문제

 

 

Posted by 공돌공돌
,

 

실습예제 -  http://bboong100.cafe24.com/0831/selection1.html

자바스크립트 셀렉트(javascript select) option 추가하기

주석은 오후 작성 예정

<html>
<head>
    <script type="text/javascript">

        var arr = ["영업-1","영업-2","영업-3"];
        var networkarr = ["N/W-1","N/W-2","N/W-3"];

        function daeli() {
            var targetObj = document.getElementById('a');
            if (document.agency.daelijeom[0].checked) {
                targetObj.length=0;
                for (var a = 0; a < arr.length; a++)
                {
                    targetObj.add(new Option(arr[a], arr[a]), [a]);
                }
            }
            else if (document.agency.daelijeom[1].checked) {
                targetObj.length=0;
                for (var a = 0; a < networkarr.length; a++)
                {
                    targetObj.add(new Option(networkarr[a], networkarr[a]), [a]);
                }
            }
        }


    </script>
    <title>sales/networdk agency</title>
</head>
<body>
<form name='agency'>
    <table border=1>
        <tr>
            <td> sales <input type=radio name='daelijeom' onclick='daeli();'></td>
            <td> N/W <input type=radio name='daelijeom' onclick='daeli();'></td>
        </tr>
    </table>
    <p><p><p>
    <table border=1>
        <tr>
            <td>aff <select name="a" id="a"></select></td>
        </tr>
    </table>
</form>
</body>
</html>

 

Posted by 공돌공돌
,

 

http://bboong100.cafe24.com/0830/calc.html

수정완료사항

텍스트 창(아래쪽) 오른쪽 정렬

소수점 연산 가능

추가예정사항

키보드 입력 가능(Enter키로 연산결과 나타내기)

eval 사용하지 않고 자바스크립트 직접 계산하기

텍스트창에 연산자 ( +, -, *, / )는 위 텍스트창에 출력하기

 


<html>
<head>
    <style type="text/css">
        .txtalign {
            text-align: right;
        }

    </style>

    <script type="text/javascript">
        var keycode = event.keyCode;
        function cal(num) {
            calc.txt.value += num;
        }

        function answer() {
            calc.txt.value = eval(document.calc.txt.value);

            // document.calc.txt.value 에 저장된 문자열을
            // 자바스크립트코드로 실행
        }
        function operator(){

        }
        //onkeydown - 모든 키를 눌렀을때(shift, alt, control, capslock 등의 키도 모두 인식한다.
                               단 한영변환,한자 등의 특수키는 인식못함.)
        //onkeyup - 모든 키를 눌렀다 땠을때(onkeydown 에서 인식하는 키들을 인식)
        //onkeypress - 실제로 글자가 써질때 (shift, enter 같은 키는 인식하지 못한다)

        function enter(eql) {
            if (event.keyCode == 13) {
                answer();
            }
        }

        function clearcal() {
            calc.txt.value = "";
            // 텍스트창 초기화
        }

        function bs() {
            calc.txt.value = calc.txt.value.substring(0, calc.txt.value.length - 1);
            // substring 으로 0부터 value 길이에서 -1 한 만큼의 길이를 출력한다
        }
    </script>
    <title>계산기</title>
</head>
<body>
<form name="calc">
    <table border=1 width=200px height=200px cellpadding=0 cellspacing=0 align=center>

        <tr border=2>  <!-- 숫자표시창 -->
            <td colspan=5 align=center><input type=text name="txtcalc" disabled></td>
        </tr>
        <tr border=2>  <!-- 숫자표시창 -->
            <td colspan=5 align=center><input type=text name="txt" disabled class=txtalign></td>
        </tr>
        <tr height=40px> <!-- 백스페이스, C -->
            <td colspan=5>
                <table border=1 width=100%>
                    <tr align=center>
                        <td width=33%><input type=button value='BackSpace' style="width:100%;" onclick=bs()></td>
                        <td width=33%><input type=button value='C' style="width:100%;" onclick=clearcal()></td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr align=center>
            <td width=25%><input type=button value='  1  ' onclick="cal('1')"></td>
            <td width=25%><input type=button value='  2  ' onclick="cal('2')"></td>
            <td width=25%><input type=button value='  3  ' onclick="cal('3')"></td>
            <td width=25%><input type=button value='  /  ' onclick="cal('/')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value='  4  ' onclick="cal('4')"></td>
            <td><input type=button value='  5  ' onclick="cal('5')"></td>
            <td><input type=button value='  6  ' onclick="cal('6')"></td>
            <td><input type=button value='  *  ' onclick="cal('*')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value='  7  ' onclick="cal('7')"></td>
            <td><input type=button value='  8  ' onclick="cal('8')"></td>
            <td><input type=button value='  9  ' onclick="cal('9')"></td>
            <td><input type=button value='  +  ' onclick="cal('+')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value='  =  ' onclick="answer()"></td>
            <td><input type=button value='  0  ' onclick="cal('0')"></td>
            <td><input type=button value='  .  ' onclick="cal('.')"></td>
            <td><input type=button value='  -  ' onclick="cal('-')"></td>
        </tr>
    </table>
</form>
</body>
</html>


 

 

Posted by 공돌공돌
,

event.keycode 표

←(백스패이스) = 8
TAB = 9
ENTER = 13
SHIFT = 16
CTRL = 17
ALT = 18
PAUSEBREAK = 19
CAPSLOOK = 20
한/영 = 21
한자 = 25
ESC = 27

스패이스 = 32
PAGEUP = 33
PAGEDN = 34
END = 35
HOME =36

←(중간) = 37
↑(중간) = 38
→(중간) = 39
↓(중간) = 40

0 = 48
1 = 49
2 = 50
3 = 51
4 = 52
5 = 53
6 = 54
7 = 55
8 = 56
9 = 57
INSERT = 45
DELETE = 46

A = 65
B = 66
C = 67
D = 68
E = 69
F = 70
G = 71
H = 72
I = 73
J = 74
K = 75
L = 76
M = 77
N = 78
O = 79
P = 80
Q = 81
R = 82
S = 83
T = 84
U = 85
V = 86
W = 87
X = 88
Y = 89
Z = 90

윈도우(왼쪽) = 91
윈도우(오른쪽) = 92
기능키 = 93
0(오른쪽) = 96
1(오른쪽) = 97
2(오른쪽) = 98
3(오른쪽) = 99
4(오른쪽) = 100
5(오른쪽) = 101
6(오른쪽) = 102
7(오른쪽) = 103
8(오른쪽) = 104
9(오른쪽) = 105
.(오른쪽) = 110
/(오른쪽) = 111
*(오른쪽) = 106
+(오른쪽) = 107
-(오른쪽) = 109
F1 = 112
F2 = 113
F3 = 114
F4 = 115
F5 = 116
F6 = 117
F7 = 118
F8 = 119
F9 = 120
F10 = 121
F11 = 122
F12 = 123
NUMLOCK = 144
SCROLLLOCK = 145
=(중간) = 187
-(중간) = 189
`(왼쪽콤마) = 192
(중간) = 220

 

 

 

Posted by 공돌공돌
,

 

 

실행주소 : http://bboong100.cafe24.com/0828/calc1.html

풀 소스

<html>
<head>
    <script type="text/javascript">
        function cal(num) {
            calc.txt.value += num;
        }
        function answer() {
            calc.txt.value = eval(document.calc.txt.value);
            // document.calc.txt.value 에 저장된 문자열을
            // 자바스크립트코드로 실행
        }

        function clearcal() {
            calc.txt.value = "";
            // 텍스트창 초기화
        }

        function bs(){
            calc.txt.value = calc.txt.value.substring(0, calc.txt.value.length-1);
            // substring 으로 0부터 value 길이에서 -1 한 만큼의 길이를 출력한다
        }
    </script>
    <title>계산기</title>
</head>
<body>
<form name="calc">
    <table border=1 width=200px height=200px cellpadding=0 cellspacing=0>

        <tr border=2>  <!-- 숫자표시창 -->
            <td colspan=5 align=center><input type=text name="txt" disabled></td>
        </tr>
        <tr height=40px> <!-- 백스페이스, C -->
            <td colspan=5>
                <table border=1 width=100%>                                               
                    <tr align=center>
                        <td width=33%><input type=button value='BackSpace' style="width:100%;" onclick=bs()></td>
                        <td width=33%><input type=button value='C' style="width:100%;" onclick=clearcal()></td>
                    </tr>
                </table>
            </td>
        </tr>
        <tr align=center>
            <td width=25%><input type=button value=1 onclick="cal('1')"></td>
            <td width=25%><input type=button value=2 onclick="cal('2')"></td>
            <td width=25%><input type=button value=3 onclick="cal('3')"></td>
            <td width=25%><input type=button value='/' onclick="cal('/')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value=4 onclick="cal('4')"></td>
            <td><input type=button value=5 onclick="cal('5')"></td>
            <td><input type=button value=6 onclick="cal('6')"></td>
            <td><input type=button value=* onclick="cal('*')"></td>
        </tr>
        <tr align=center>
            <td><input type=button value=7 onclick="cal('7')"></td>
            <td><input type=button value=8 onclick="cal('8')"></td>
            <td><input type=button value=9 onclick="cal('9')"></td>
            <td><input type=button value=+ onclick="cal('+')"></td>
        </tr>
        <tr align=center>
            <td> </td>
            <td><input type=button value=0 onclick="cal('0')"></td>
            <td><input type=button value='=' onclick="answer()"></td>
            <td><input type=button value='-' onclick="cal('-')"></td>
        </tr>
    </table>
</form>
</body>
</html>

 

Posted by 공돌공돌
,

브라우저 객체 모델 BOM(Browser Object Model)

 웹 브라우저와 관련된 객체의 집합을 의미

 대표적인 BOM으로는 window, location, navigator, history, screen, document가 있다

 

Window 객체

 브라우저 객체들의 계층구조 에서 최상위에 있는 객체

 자바스크립트로 하는 모든 작업이 Window객체 안에서 이루어짐

메소드 이름

설명

open(URL, name, features, replace)

새로운 window 객체를 생성

setTimeout(function, millisecond)

일정 시간 후에 함수를 한 번 실행

setInterval(function, millisecond)

일정 시간마다 함수를 반복해서 실행

clearTimeout(id)

일정 시간 후에 함수를 한 번 실행하는 것을 중지

clearInterval(id)

일정 시간마다 함수를 반복하는 것을 중단

moveTo(x,y)

윈도우의 위치를 x, y만큼 이동한다                       

focus()

윈도우에 초점을 맞춘다

blur()

윈도우에 초점을 제거한다

close()

윈도우를 닫는다

 

Window 객체의 onload 이벤트 속성

문서객체의 속성중 on으로 시작하는 속성을 이벤트 속성이라 하며 함수를 할당해야 한다

window 객체가 로드가 완료되고 자동으로 onload()에 할당된 함수를 실행한다

 

 

Screen 객체

 웹 브라우저의 화면이 아니라 운영체제 화면의 속성을 가지는 객체

속성

설명

width

화면의 너비

height

화면의 높이

availWidth

실제 화면에서 사용가능한 너비

availHeight

실제 화면에서 사용가능한 높이

colorDepth

사용 가능한 색상 수

pixelDepth

한 픽셀당 비트 수

 

location 객체

 브라우저의 주소 표시줄과 관련된 객체

 프로토콜의 종류, 호스트 이름, 문서 위치 등의 정보를 갖는다

메소드 이름

설명

assign(link)

현재 위치를 이동

reload()

새로 고침

replace(link)

현재 위치를 이동( 뒤로 가기 불가능)

 

navigator 객체

웹페이지를 실행하고 있는 브라우저에 대한 정보를 갖는다

속성

설명

appCodeName

브라우저의 코드명

appName

브라우저의 이름

appVersion

브라우저의 버전

platform

사용중인 운영체제의 시스템 환경

userAgent

브라우저의 전체적인 정보

 

 

Posted by 공돌공돌
,

문서 객체 모델 ( DOM, Document Object Model)

웹 브라우저가 HTML 페이지를 인식하는 방식

document 객체와 관련된 객체의 집합

html 페이지에 존재하는 태그를 자바스크립트에서 이용할 수 있는 객체로 만드는 것

 

메소드 이름

설명

createElement(tagName)

요소 노드 생성

createTextNode(text)

텍스트 노드 생성

appendChild(node)

객체에 노드를 연결

setAttribute(name, value)

객체의 속성을 지정

getAttribute(name)

객체의 속성을 가져옴

getElementById(id)

태그의 id속성이 id와 일치하는 객체를 가져옴

getElementsByName(name)

태그의 name속성이 name과 일치하는 문서 객체
를 배열로 가져온다

getElementsByTagName(tagName)

tagName과 일치하는 문서 객체를 배열로 가져온다

Posted by 공돌공돌
,
<script type="text/javascript">
        window.onload = function () {
            // 문서 객체를 가져옵니다.
            var header = document.getElementById('header');
            // 문서 객체의 스타일을 바꿔줍니다.
            header.style.border = '2px Solid Black';
            header.style.color = 'Orange';
            header.style.fontFamily = 'Helvetica';
            header.style.backgroundColor = 'black';
        };
</script>
<body>
    <h1 id="header">Header</h1>
</body>

    위에 기술한 스타일 외에도 다양한 속성들이 있다 


    문서 객체의 스타일은 css와 속성이름이 약간 다르다


    자바스크립트는 식별자 '-' 를 사용할 수 없으므로 css의 background-color 속성을

     backgroundColor 로 나타낸다

 

Posted by 공돌공돌
,