국비지원학원/Java

19일차

초코맛 2018. 11. 15. 01:40
반응형
*java SE
-Eidtplus툴 
1.기본형 데이터형
2.자동형변환/강제 형변환
3.Constant(상수)
4.연산자

-Editplus
  • 한달체험판으로 설치후 사용한다.
  • 범용에디터라 compiler와 run 명령설정뒤에 작업함

*DataType
  • 값을 저장하기위해 미리 예약해 놓은 공간의 이름들
  • 변수를 선언할때 사용함다.
  • 기본형 데이터형, 참조형 데이터형 2가지가있다.
  • =>저장공간에 값자체를 저장=>변수에  값 자체를 저장하는 데이터형
  •                             =>저장공간에 주소를 저장해 참조/있다는걸 알지만 내용은 모른다.=>주소를 저장하는 데이터형

    -기본형 데이터형(Primitive type)
  • 변수에 값이 저장되는 데이터형
  • ex) int i=10; 일때 4개의 byte가 있고 값이 들어간다. 
  • 뭐를 저장할 것이냐에 따라서 다른 데이터형을 선택하게 된다.
  • signed 한값 : 수의 범위가 음~양 => char,boolean 외의 것들
  • unsigned 한값 : 수의 범위가 '양수'만 => char,boolean
  • 실수는 float일때, 소숫점 이하 6자리 까지만 정확하고 그뒤는 엉뚱한 값이 나올수 있고,
  • double일때, 14자리 까지 정확해서 범위가 이렇게 설정 되었다.

    -형명시(literal크기변경)
  • long일때)
  • long 자체는 30억의 숫자를 저장할수 있으나, 값이 메모리에 저장되며, 그 저장공간의 크기가 한정( 정수일때 : 4byte / 실수일때 ; 8byte => 정수는 int/ 실수는 double까지 인것 )되어 그공간인 리터널의 크기를 늘려 주어야 한다.
  • 이걸 '형명시'라고 하는데, 형명시의 대상은 상수이고, 변수의 뒤에는 불가능하다.
  • 상수뒤에 L,l을 붙이면 이 라인, 이 줄에 한해서만 일시적으로 바꾸어 주는것이다.
  • float일때)
  • 마찬가지로 float일때 4byte이고 실수일때의 리터널의 byte는 8byte 라서 들어가지 않는다. 이번엔 줄여주어야 하며
  • 상수뒤에 F,f를 붙인다.

값 종류
데이터형 명
크기(byte)
범위
사용 예
정수
byte
1
-128 ~ +127
byte b = 12; 
//=128넣으려면 안들어간다. Error 그래서 범위가 있는것
short
2
-32768  ~ +32767
short s = 12;
int
4
-2147483648 ~ +2147483647
int i = 12;
long
8
-2^63 ~ 2^63-1
long l = 12;
long l = 3000000000l;
문자
char
(읽을땐 character)
2
범위X
홀따옴표로 감싸진 영문자 1자, 숫자 1자, 한글 1자 저장
문자의 코드(code)값이 저장
2byte의 unicode값이 들어간다.
char c='A';
이면 변수c에 A가 들어가는게 아니라 65가 들어간다.
char c = '0';
97이 들어간다.
--유니코드값이 들어간다. 영어,숫자에 대한 시작코드값은 알아야한다.
A=65, B=66,,,
a=97, b=98,,,
0=48, 1=49,,,
실수
float
4
유효연산 6자리
float f = 0.5;
일때 리터널이 크기 때문에 (8byte라서) 들어가지않는다.
float f = 0.5f;
해야 리터널이 줄어들어 값이 저장된다.
double
8
유효연산 14자리
double d = 3.25;
double d = 3.25[d];
리터널 붙여줄수 있지만 굳이 붙여주지않는다.
같은크기거나 작거나 생략.
불린
boolean
1
범위X
but, 따지고 보면 0,1
true, false 저장
boolean b = ture;
boolean b = false;
<c언어처럼 0,1은 넣을수 없다.



    -자동형변환
  • byte b = 10;         short s= 10;            
  • 일때 1이고 리터널은 4고, 2이고 리터널은 4라 안들어가야 정상인데 이때 자바가 해주는것을 자동형변환이라고 한다.
  • 인지만 하고 있으면 되고 자바자체에 설정되어있어 막을수 없다.
  • int의 하위 데이터형 (byte수가 4보다 작은 애들-byte, short, char)이 연산 되면 결과가 int 로 발생되는것 또는 
  • int의 하위 데이터형에 값이 할당되면 값이 하위데이터형의 크기에 맞게 변환되는것 을 칭하는 말이다.
  • 인트의 하위데이터형이 연산시에 인트만큼 큰값이 나올 확률이 자기가담을 값보다 큰값이 많이 발생하더라 그래서 아예결과를 int로 할당하게 된다.
  • 따라서 byte+byte일때 결과값을 int로 받지 않으면 Error
  • ex)
        byte b1 = 10, b2 = 20, result = 0;           //char c = 65;  2고 4byte
        //result = b1 + b2;    //이것도 자동형변환 byte나 short까지 형변환이 필요하다면 너무불편해 자동으로 되게끔 만들어져있다
        //결과값이 byte가 아니라 int로 발생되어 할당되지 않는다. result를 int로 
        int result = b1 + b2;

        short c1 = 20;
        int result2 = b1+c1;    //연산이 된다. 하지만 int 로 담아야한다.
        //byte를 2byte로 연산=> 큰쪽으로 바꾸여 연산해줌=>연산이라 int에 담음

-강제형변환(Casting)
  • 자바가상머신(JVM)이 실행할때 메모리를 바꾸어 주는데,
  • 이때, 개발자가 변수의 데이터형을 원하는형으로 (일시적) 변환하는 것.
  • 주 대상은 변수인데 변수앞, 상수앞에서 쓸수있다.
  • 기본형->기본형, 참조형->상속관계에 있는 다른 참조형으로 변환가능하다.    <기본형이 참조형이 될수 없다.
  • 불린은 boolean의 동일데이터형으로만 강제형변환 가능 (안된다고 보면된다 다른데이터형 ㄴㄴ)
  • 특징) 때에 따라서 값손실이 발생할 수 있다.
  • 문법) 변수 :    double d = 3.14;
  •                        float f = dL;       =>byte수가 달라 들어가지 않는다 / L을 적어도 dL이라는 변수를 찾으려고 한다.
  •             (변환할 데이터형) 변수명 float f = (float)d;    <잘려서 들어가게 된다.
  •                        float f= 3.5; int i = (int)f;         <int 가 실수형을 받아들이지않아 3만 들어가게 된다=값손실
  •          상수 :  <리터널자체가 바뀌진 않는다/내가 필요한 데이터형으로 바꾸어준다.
  •             (변환할 데이터형)상수값
  •                        float f= 3.1415;                           <casting으로 (float)를 상수앞에 붙여주게 되면 4byte가 되어 저장된다.


*Constant(상수)
  • 변수를 상수처럼 사용하기 (값할당이 되지 않는 변수)
  • 프로그램내에서 사용하게될 기준값을 설정할 때 사용.
  • 중간에 값변경을 못하게 한다 할때 constant  API의 field항목에서 확인 가능.
  • class의 field부분(method바깥쪽)에서만 정의 가능 <지역 (method안쪽) 에서는 constant를 만들수 없다.
  • 최초 선언시에만 값 할당이 가능하다. (중간에 값 넣을수 없다)
  • 변수는 소문자로쓰는게 원칙인것에 비해 상수는 대문자로 많이 적는다. 변수와 상수의 식별을 위해
  • constant명은 모두 대문자로 작성_두단어가 붙는다면 언더바(_)로 식별
  • 문법) public static final 데이터형 상수명(모두대문자) = 값;   <필드부분에다가..!
  • class Test{
  • public static final int MAX=100;
  • public static void main(String[] args){
  • //상수사용
  • MAX
  • Test.MAX    
  • <우리가 만들었던 지역변수는 메인메소드 안에서만 쓸수 있지만 상수로 선언된경우 어디에서나 사용가능하다.
  •     
  • 사용) 정의한 클래스 안 사용 : 상수명 , 클래스명.상수명
  •          다른클래스에 있는 상수 사용 : 클래스명.상수명
  • 클래스명.상수명         <이때 닷문법 (점문법) 그 안을 이야기한다.  내안에 너있닼ㅋㅋㅋ내.넠ㅋㅋㅋㅋ


    -접근지정자
  • public static final int MAX=100;
  • public : 외부패키지에서 사용가능해요 라는것
  • static : 모든 메모리 영역에서 사용가능해요 라는것
    • <자바에는 인스턴스영역에 올라가는 heap이 있고 stack, method area가 있는데 어디든지 다 접근가능해요 라는것
  • final : 값변경 불가해요
  • 요앞에 이런것들이 없으면 지역변수만드는것과 똑같다 

    -wraper class
  • 기본 데이터형과 같은 클래스명들을 래퍼클래스라고 하는데 기본형을 감싸 객체로 만드는 클래스이다.
  • constant(상수)가 있는게 있고 없는게 있어서 API페이지의 Field부분을 잘 보아야한다.


*연산자(Operator)
  • 연산에 사용되는 예약된 부호들
  • 우선순위를 갖고 있다.
  • 연산자의 우선순위
                   논
최단산쉬관리 삼대 콤마 
우 항술프계   항입     지
선          트                  막
()괄호이다
<---------------먼저연산
--------------->나중연산
<자바도 자바스크립트도 C도 동일
 



반응형

'국비지원학원 > Java' 카테고리의 다른 글

23일차  (0) 2018.11.21
22일차  (0) 2018.11.21
21일차  (0) 2018.11.21
20일차  (0) 2018.11.18
18일차  (0) 2018.11.13