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));
}
}
변수i는12,변수j는23변수 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);
}
}