본문 바로가기

학원교육정리/Javajsp

Java 설정하기, Java 연산자

 

1.jdk 설치하기 : www.oracle.com
 1) jdk : 개발 가능하면 설치경로를 짧게 잡는것이 좋다
   - 환경변수 설정시 조금 편하다


 2) jre : 실행환경 디폴트 경로에 설치해도 무방하다 
   - C:\Program Files\Java\jre7

 3) 환경변수 설정 : 
//
STU 변수 - > 사용자에게만 영향있는 변수
시스템 변수 -> 모든사용자에게 영향을 주는 변수 //

  (1) path : C:\jdk1.7.0\bin <===== 시스템 환경변수에 추가한다 C:\jdk1.7.0\bin; path 편집에서 추가해준다
  - 이유는 jdk를 시스템에 어디서든지 실행 할수 있게 하기 위해서다
  (자바 환경 변수가 아닌 windows에서 특정 프로그램이 path에 걸려 있으면 어디에서든지 실행할수 있다)


// cmd 창에서 set path 입력 ===> Path=C:\jdk1.7.0\bin;C:\Program Files\;C:\WINDOWS\system32;
C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\Program Files\SSH Com
PATHEXT=.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH

내컴퓨터 -> 속성 - > 고급 -> 환경변수 이곳에서 편집이 가능하다

 

  (2) classpath : .;C:\jdk1.7.0\lib\tools.jar <== 자바 환경변수므로 새롭게 생성한다
   이유는 컴파일이나 실행시 참조할 클래스 위치다
처음에는 없다 - > 새로만들기 CLASSPATH -> 값에 이것을 ".;C:\jdk1.7.0\lib\tools.jar" 로 만들어야한다

  (3) java_home :  C:\jdk1.7.0 <== 자바환경 변수므로새롭게 생성한다
  이유는 여러 자바 응용 프로그램(tomcat)등 실행시 참조하는 경로가 된다

 4) 확인명령

  1) 실행명령 : java

  java -version <=== 자바 버전이 화면에 출력

    2) 컴파일명령 : javac 
          javac  <==== Usage 예외가 발생한다 
          Usage: javac <options> <source files>

 


2. 이클립스 설치하기 : 
http://www.eclipse.org/downloads/ 에서 Eclipse IDE for Java Developers 받기

   

EE Developers, <- jsp 할때

 

 

 

 

Default output folder : testjava/bin 테스트 폴더 배출

 

Abc.java ---------a Abc.class

소스파일 컴파일 바이트 코드

         JVM(가상머신)

         OS (운영체제)

 

모든 파일에 클래스 네임과 저장 이름이 같아야한다 (텍스트 문서에서 java확장자로 저장시

javac : 컴파일 명령:

이클립스 에서는 저장버튼을 누르는 순간 컴파일이 일어난다.

 

 

 

 

 

 

java : 실행명령

 

결과물 출력

이클립스 -> console : 실행 결과가 하단부에 출력됨

 

 

 

 

 

 

변수의 정의 : 수시로 초기화 될 수 있는 메모리 영역

  • 무언가를 저장하는 것

 

int a ß 메모리 영역의 4byte 의 공간을 차지

 

a = 55 : 55라는 값을 a라는 영역에 대입 = 초기화 한다

 

연산자 (우선순위) 25page 참고

 

제어문 절차적 프로그램 순서에 따른 실행불가

? 조건문, 반복문 - 연습이 필요, 스위치문

  • if문, else , while dowhile , for, switch

 

함수

  • 무언가를 처리 하는 것
  • 구조적 프로그램 호출할 때 실행이 되는 것 필요할 때 실행하는 것 절차가 무시됨
  • 객체 지향으로 나가는 바탕
  • 호출 할 때 마다 사용가능 - 무제한 반복 재활용이 가능 효율적으로 사용

 

객체지향(OOP) = 재활용 한번 사용 한 프로그램을 다른곳에서도 계속 사용하는 것

  • 상속 -
  • 은닉화 - 모든 내용을 보여줄 필요는 없다 = 캡슐화
  • 추상화 - 고유 특징 의미를 담는 것 - 작명법
  • 다형성 - 하나의 객체가 여러 모습으로 보여지는 것 = 오버 라이딩, 리딩

 

클래스 - 클래스의 활용방법 -> 객체화 -aOOP 클래스명 객체변수 = new 생성화

  • 함수들 메서드
  • 변수들 필드

식별자 - 작명법 - > int a x -> int age 이런식으로 값을 추상화 하는 것

  • 클래스 -> (첫자는 대문자, 마디마디 대문자) HelloWorld : 스컬러 기법
  • 함수명 -> (첫자는 소문자 마디마디 대문자) helloWorld() 스컬러기법
  • 변수명 -> 대소 구별 길이 제한 x 숫자로 시작x 예약어 사용 x(if while 등등) 추상 기법 활용
    • 헝거리안 기법 글자수 약어 PM , OP
  • 상수명 -> 거의 대문자를 사용 ( 변수의 반대 말)

 

데이터 형 - 미리 약속한 메모리 할당 크기 page 8~10

  • booleam - > true or false 두가지 값을 가짐 ,실제로는 1bit나 할당 기본단위 1byte
  • char -> 문자 기본 단위 2byte
  • 1byte -> 정수 단위 1byte - > -128 ~ 0 ~ 127
  • short - > 정수 단위 2byte
  • int -> 정수 단위 4byte
  • long -> 정수 단위 8byte
  • float -> 실수 단위 4byte 10.5f <- f를 붙여야 4byte 가 됨
  • double -> 실수 10.5 8byte

     

    byte 연습

    실수 형 연습

 

public class String_Test {// 클래스 정의

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        String str1 = "My name is "; // 객체변수

        // 객체 변수란 값이 메모리 간접주소를 가지고 있는경우

        // 해쉬코드 (레퍼런스 ) 가지고 있는 경우를 말한다

        String str2 = "";

        String str3 = "";

        String str4 = "it";

        

System.out.println("문자열 상수 예제");

System.out.println("--------------");

System.out.println(100+200+str1+str2+str3+str4+100+200);

System.out.println(100+200+str1+str2+str3+str4 +(100+200));

    }

 

}

결과

 

문자열 상수 예제

--------------

300My name is 강남it100200 문자 이후 정수 연산자 문자로 인식

300My name is 강남it300 가로를 넣어서 연산 인식

 

 

public class Float_Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        System.out.println("실수형 상수 예제");

        System.out.println(" 실수 12.345:" + 12.345);

        System.out.println(" 실수 -12.345" + -12.345);

        //12.34E3 == 12.34E+3 == 12.34 * 1000

        System.out.println("지수 표현 12.34E3:" + 12.34E+3);

        System.out.println("지수표현 12.34E-3:" + 12.34E-3);

        //지수 표현은 자리수가 모자랄때 사용한다.

        //12.34E-3 == 12.34E-3 == 12.34 /1000

    }

 

}

결과물

 

실수형 상수 예제

실수 12.345:12.345

실수 -12.345-12.345

지수 표현 12.34E3:12340.0

지수표현 12.34E-3:0.01234

 

 

public class Variable_Test {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int i = 1234;

        int j = 5678;

        int hap = 0;

        hap = i + j ;// 대입 연산자 보다 산술 연산자 + 먼저 계산

        // 200 = i+j

        System.out.println("변수를 이용한 예제");

        System.out.println("i= " +i);

        System.out.println("j= " +j);

        System.out.println("hap= " +hap);

         i = i+j;

        System.out.println("i= i+j=> " +i);

    }

 

}

결과물

 

변수를 이용한 예제

i= 1234

j= 5678

hap= 6912

i= i+j=> 6912

 

 

public class Cast_Test {// 형변환 연산자() , 최우선 연산자이며 Cast 연산자 이다

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int i = 1234; //4byte 정수

        int k; // 4byte 정수

        float f =10.5f; // 4byte 정수, 실수

        double d = 100.55; // 8byte 정수, 실수

        //k=f f k 담아라 -> k 정수만 저장함으로 Error

        k= (int)f; // 작은 타입 = (작으나입) 큰타입

        System.out.println(k); //10 10.5 정수 해서

        f = i; // 실수형 = 정수형 f = 1234 i f 담아라 정수를 실수에 담아서 성립

        System.out.println(f); //1234.00

        f= (float)d;

        System.out.println(f); //100.55

    }

 

}

 

big = small 작은것을 큰것에 대입 문제 없음

small = big 큰것을 작은것에

 

 

public class Cast_test2 {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        byte b = 100; // 1byte

        short s = 300; // 2byte

        int i = 70000;

 

        //b = s; 실행되지 않는다 cating 필요하다

        //b=(byte) s; < - 캐스팅을 해서 만약에 데이타의 손실이 일어나면

        // 캐스팅을 하지 않는것이 바람직하다 s byte 범위를 초과한 300 값이기 때문

        // 00000001 00101100 <==== 300 -- 2byte

        // 00101100 <==== 44 -- 1byte 256 제거됨

        b =(byte)s;

            System.out.println("b=" +b);

        s = (short)i;

            System.out.println("s=" +s); // 4464 66536 제거됨

    }

 

}

 

 

public class Arithmetic {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int i = 20; int j =12;

        int a = i+j; int b = i-j; int c = i*j;

        int d = i/j; //자바에서는 정수 나누기 정수는 정수로 나옴

        int e = i%j; //% 나눈 나머지

        float n = 0.0f;

        System.out.println("i:+i+j:" +j);//12

        System.out.println("덧셈 결과: " +a);//32

        System.out.println("뺄셈 결과: " +b);//8

        System.out.println("곱셈 결과: " +c); //240

        System.out.println("나눗셈 결과: " +d);//1정수/ 정수 = 정수

        System.out.println("나머지 결과: " +e);//8

        n = (float)i/j;// i 먼저 float 캐스트

        System.out.println("정수/정수의 결과: " +n);//1.6666666

    }

 

}

 

 

public class Proportion {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int i=12; int j=27;

        System.out.println("i:" +i +" ,j:"+j);

        System.out.println("------------------");

        i+=j; // i + j = 대입하라 i == i=i+j;

        System.out.println("i+=j: " +i); //27 +12

        i-=j;

        System.out.println("i-=j: " +i);// 39 - 27

        i*=j;

        System.out.println("i*=j: " +i);// 12* 27

        i/=j;

        System.out.println("i/=j: " +i);// 324 / 27

        i%=j;

        System.out.println("i%=j: " +i);// 12 % 27 안나눠 지니 그대로

        

    }

 

}

 

++증가 연산자 1만큼 증가 시켜라

 

int a = 10;

출력 (++,a) ; --- > 11 증가 시키는 행위가 출력보다 먼저 일어남 +1 후 증가 ex) b= ++a ; a 1증가 후 b 대입

앞에 붙는 연산자 전치, 전위 연산자

출력 (a) ; --a 11 증가된 이후의 a 값

출력 (a++); -a 11 출력 행위가 증가 행위보다 먼저 출력 후 1+ 증가 ex) b=a++; 수식에 대입 후 값을 증가

뒤에 붙는 연산자 후치, 후위 연산자

출력 (a) ; -a 12 증가된 이후의 값

 

-- 감소 연산자, 1만큼 감소 시켜라

 

 

 

public class Incdec {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int x =1; int y= x++; //후위 연산자

        System.out.println("1.x의값은 " +x);//2

        System.out.println("2.y의값은 " +y);//1 x값을 y 대입후 +1 증가

        x=1;

        int z = ++x; //전위 연산자

        //x = x+1;

        System.out.println("3.x의값은 " +x);//2

        System.out.println("4.z의값은 " +z);//2

        x=1;

        x++; //++x;

        z=x;

        System.out.println("5.x의값은 " +x);//2

        System.out.println("6.z의값은 " +z);//2

    }

 

}

 

 

 

public class Compare { // 비교 연산자

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int i =12;

        int j = 23;

        int k =17;

        String name ="왕눈이";

        System.out.println("변수i" +i+ ",변수j" +j+ "변수 k " +k +"이다");

        System.out.println("-------------------------------------------------");

        System.out.println("12==23:" +(i==j));

        System.out.println("12!==17:" +(i!=k));

        System.out.println("23<17:" +(j<k));

        System.out.println("k>i:" +(k>i));

        System.out.println("i<=k:" +(i<=j));

        System.out.println("i>=j:" +(i>=j));

    }

 

}

 

변수i12,변수j23변수 k 17이다

-------------------------------------------------

12==23:false

12!==17:true

23<17:false

k>i:true

i<=k:true

i>=j:false

 

 비트 연산자 관련

a<<b a 를 2진수로 바꿔서 <<방향으로 b 만큼 이동한 것

5<<1 = 10 - > a * b*2 =

0101 =5

1010 =10

 

 

public class Bitwise {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int a = 2;int b = 5; int c = a|b; int d = a&b; int e = a^b; int i; int j;

        i = a<<2;

        j = b>>2;

        

        System.out.println(" a = " +a); // 2 0010

        System.out.println(" b = " +b); // 5 0101

        System.out.println(" a|b = " +c); // 7 0111

        System.out.println(" a&b = " +d); // 0 0000

        System.out.println(" a^b = " +e); // 7 0111

        System.out.println(" a<<2 = " +i); // 8 a*(2*2)

        System.out.println(" b>>2 = " +j); // 1 b/(2*2)

    }

 

}

 

public class Compare { // 비교 연산자

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int i =12;

        int j = 23;

        int k =17;

        String name ="왕눈이";

        System.out.println("변수i" +i+ ",변수j" +j+ "변수 k " +k +"이다");

        System.out.println("-------------------------------------------------");

        System.out.println("12==23:" +(i==j));

        System.out.println("12!==17:" +(i!=k));

        System.out.println("23<17:" +(j<k));

        System.out.println("k>i:" +(k>i));

        System.out.println("i<=k:" +(i<=j));

        System.out.println("i>=j:" +(i>=j));

    }

 

}

 

 

 

삼항 연산자

 

public class Ternary {

 

    /**

     * @param args

     */

    public static void main(String[] args) {

        // TODO Auto-generated method stub

        int x = 10;

        int y;

        //System.out.println("결과는 " +y);

        //System.out.println("초기화 되지 않은 y " +y);    

        //y = 조건문 ? 참값 : 거짓값

         y = x<9 ? 3:5;

        System.out.println("결과는 " +y);

    }

 

}