컴퓨터 관련/JAVA 강의

java #2 java 기초2

승명 2016. 12. 18. 19:14

java #2 java 기초2

 
* complie time과 runtime

compile time

runtime <cpu, memory 32Mbyte 할당받음>

1. 소스코드 작성
- class 명{
}

2. 저장 : 클래스명,java

3. compile : javac.exe
c:\>javac Test.java
%성공하면 byte code생성
Test.class ->클래스파일

4. 실행 : java bytecode명
클래스로더
-local : 코드검증기
-network : JIT

%실행할때 발생하는 에러를
runtime error라 한다.(논리 에러)
%자바의 error는 두 종류가 있다.
- 문법 error(컴파일 에러), runtime error.

* 출력
System.out.print(값,Arguments); 값 출력 후 줄 안바꿈
System.out.println(값,Arguments); 값 출력 후 줄바꿈
: 모든 JDK에서 사용가능.

System.out.printf();
System.out.format();
: JDK1.5 이상에서 사용가능.

* 값,Arguments
상수정수상수 - 4, 2, 2014
실수 - 소수점이 들어간 수
문자 - 'A', '한', '1'(홀따옴표 안의 한 글자)
문자열 - "여러 글자들"(쌍따옴표 안의 여러 글자)
변수기본형 : byte, short, int, long, char, float, double, boolean
참조형 : class, sring, array
연산식연산자를 사용한 계산 3+4
문자열 상수 확장"문자열 상수" + 상수/변수/연산식 (+ : 뒤에 붙임)


(클래스.필드.메소드;)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
class UsePrint{
 
public static void main(String[] args){
/*
print는 출력 후 줄변경을 하지 않는다.
println은 출력 후 줄변경을 한다.
System.out.println("안녕");
System.out.println("하세요");
*/
//상수 : 변경되지 않는 값
//정수상수
 
System.out.println(2014);
//실수상수
 
System.out.println(2.45);
//문자상수
 
System.out.println('A');
 
System.out.println('가');
 
System.out.println('1');
//문자열상수 "로 묶여있는 여러 문자들
 
System.out.println("문자열상수");
//변수
//기본형인 경우 : 할당된 값
 
int i=2;
 
System.out.println(i);
//참조형인 경우 : 할당된 주소
UsePrint up=new UsePrint();
 
System.out.println(up);
//연산식 : 연산된 결과가 출력
 
System.out.println(2+4);
//"앞,뒤의 +는 붙임을 수행.
 
System.out.println("2+4="+(2+4));
 
System.out.println("2+4="+2+4);
}//main
}//class
cs


* 변수(variable)


- 프로그램 작성시 필요한 값에 별명을 부여하고 메모리에 일시적으로 저장하여 사용할 때.

instance (member) 변수, static (class) 변수, local 변수 3가지 지원한다.

%instance, class 변수는 필드에 만드는 변수다. 메인메소드 안에 만드는 변수는 local 변수.

사용법> 
     1. 선언 
     - 데이터형 변수명;

     2. 값 할당
     - 변수명 = 값;

     3. 사용
     - 출력 : System.out.println(변수명);
     - 연산에 참여시킴 : 변수명 연산자 변수명
     - 재할당 : 다른 변수에 값 넣기


ex)
int year;
int age
year = 2014;
age = 25;
System.out.println(year-age+1)

* Local variable(지역변수)
- method 안에서 선언하고 사용하는 변수
- method를 호출하면 메모리에 생성되고 method의 호출이 끝나면 메모리에서 내려온다.
- method 외부에서는 지역변수를 사용할 수 없다.
- 지역변수는 자동초기화가 되지 않기 때문에 선언 후 바로 사용하면 error가 발생한다.
- 모든 데이터형으로 변수를 선언할 수 있다.
- 초기화값은 바로 연산되어도 연산결과에 영향을 끼치지 않는 값으로 넣어준다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/*
작성일 : 02-04-2014
작성자 : 홍길동
내 용 : 메서드 안에 선언하고 메서드 내부에서만 사용되는 지역 변수의 사용법.
지역변수는 자동초기화가 되지 않기 때문에 선언 후 값할당을 하지 않고 사용하게 되면 error가 발생한다.
*/
class LocalVariable{
public static void main(String[] args) {
//1. 선언 : 데이터형 변수명;
int age;
int nowYear;
//2. 값할당 : 변수명=값;
age=31;
nowYear=2014;
//3. 값사용 : 출력,연산,재할당
System.out.println("내 나이는 "+age+"살");//출력
System.out.println("태어난 해 "+(nowYear-age+1) );
//재할당
int birth=(nowYear-age+1);
System.out.println("태어난 해 " + birth);
//초기화되지 않은 변수를 직접 사용하면 error 발생
/*
int year;
System.out.println(year);
*/
//같은 이름의 변수는 지역{}에서 하나만 선언 할수있다.
//int age;
//지역변수의 초기화 : 데이터형 변수명=값
//int year=0;
//변수의 이름은 한글로 부여할 수 있다.
int 나이=0;
나이=20;
System.out.println("나이는 "+나이);
}//main
}//class
 
cs


* 데이터형 (Data Type)

- 값을 저장하기 위해 미리 정의해둔 것
- 기본형 데이터형, 참조형 데이터형 두가지가 제공된다.
- 변수 선언시 사용
- 기본형은 선언된 변수 자체에 값이 저장되는 데이터형 
- 참조형은 값은 다른 곳에 저장되고 그 시작주소를 저장하는 데이터형

* 기본형
값종류데이터형명

Byte

범위
정수byte1-128 ~ +127
"short2-32768 ~ +32767
"int (정수의 기준데이터형) 4-2147483648 ~ +2147483647
"long8-2^63 ~ 2^63-1
문자char2홀따옴표(')로 묶여진 문자 하나, unicode 값이 저장됨 (한글도 들어가기 때문에 unicode 사용함, 영어는 아스키 코드만으로 표현 가능)
실수float4유효연산 소수점이하 7자리
"double8유효연산 소수점이하 15자리
불린boolean1true/false

% ASCii 코드
A=65
a=97
0=48


* 형명시

- 상수가 저장되는 공간(literal)을 일시적으로 변경하도록 설정하는 것. (literal : 상수를 사용하면 메모리에 저장되는데, 저장소의 이름을 literal이라고 한다.)
why? 
정수 일때 literal의 크기는 4byte. (그래서 int를 정수의 기준 데이터형이라고 이야기 한다.)
literal의 사이즈보다 큰 크기의 데이터를 넣어야 할때 형명시를 한다.
- 정수 literal은 4byte이고 L, l을 사용하여 8byte로 변경할 수 있다.
- 실수 literal은 8byte이고, F,f를 사용하여 4byte로 변경할 수 있다.
- double은 D,d, 안넣어도 무방함.
- long에 l, L을 안붙이면 int로 간주.

long l = 2147483647 -> ok
long l = 2147483648 -> 컴파일 에러발생.
long l = 2147483648L -> ok
float f = 3.14f -> ok
            8byte
double d = 3.14D; D안넣어도 무방, 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
 
/*
내용 : 기본형 데이터형으로 변수를 만들고 범위내의
값할당, 상수의 저장공간인 literal의 크기를 변경(형명시)
*/
class DataType{
public static void main(String[] args) {
//정수형데이터형
byte a=10;
short b=20;
int c=30;
long d = 40//형명시 생략하여 사용할 수 있음
//정해진 literal에 크기보다 큰 정수상수를 사용할때에는
//반드시 형명시를 하여 literal의 크기를 변경하여 사용한다.
long e = 2147483648l;
System.out.println("byte : "+a+", short : "+ b+", int : "+c+ ", long : "+d+", "+e);
//문자
/*
char f='A';
char g='가';
char h='0';
*/
//동일 형의 변수를 여러개 선언할 때에는 ,로 구분하여 만들 수 있다.
//char f='A', g='가', h='0';//unicode 값이 들어간다.
char f=65, g=44032, h=48;//unicode 값을 직접 할당할 수 있다.
System.out.println("char : "+f+", "+g+", "+h);
//실수
float i=3.4f; //형명시 필수 F or f
double j=3.4;//형명시 생략 가능 D or d. 써도되고 안서도 된다.
System.out.println("float : " +i+", "+j);
//불린 :true / false만 저장가능
boolean k=true, l=false;
System.out.println("boolean : "+k+", "+l);
}//main
}//class
 
cs