[Java] 2020.10.22. day 2_EditPlus 사용 / 상수와 변수 / 형변환
2020. 10. 22. 12:03ㆍWeb_Back-end/Java SE
EditPlus - Text editor with FTP, FTPS and sftp capabilities
EditPlus - Text editor with FTP, FTPS and sftp capabilities Welcome to EditPlus home page! ● Click here to Buy Now ● Download EditPlus 5.3 (2020-01-08) New! --> ● Latest Bug Patch File - 5.3 patch build 3278 (2020-10-20) New! EditPlus is a text edito
editplus.co.kr
◎ Editplus 5.3 다운로드
- 자식창과 부모창
- 자식창이 동작했을 때 부모창이 선택되지 않는 것 - 비모달(modal)
- 자식창이 동작했을 때 부모창이 선택되는 것 - 모달(modal)
- 컴파일러 지정하기
- 도구 - 사용자도구구성 - 추가
- 메뉴제목 : compiler
- 명령 : C:\dev\java-14-openjdk-14.0.2-1\bin
- javac.exe 선택
- 인수 : 파일이름
- 디렉토리 : 파일 디렉토리
- 도구 - 사용자도구구성 - 추가
- 실행run 지정하기
- 도구 - 사용자도구구성 - 추가
- 메뉴제목 : run
- 도구 - 사용자도구구성 - 추가
◎ Java 의 표준 출력
- System.out.print(값); //값을 출력한 후에 줄 변경 X
- System.out.println(); //값을 출력한 후에 줄 변경
- JDK 1.5 에서는가변인자형 (Variable Arguments)이 지원되고 V.A가 도입되어 만들어진
- System.out.printf();
- System.out.format();
◎ 값의 종류
- 상수 : 바뀌지 않는 수
- 정수상수 2020, 10, 22
- 실수상수 2020.21, 3.14
- 문자상수 'A' , '1' , '가', '@' , 'AB'-->error
- 문자열상수 "ABCD", "1"
- 불린상수 true, false
- 변수 : 값이 바뀌는 수
- 기본형 데이터형 byte, short, int, long, char, float, double, boolean
- 참조형데이터형 class, String, Array
- 연산식 : 연산자를 사용한 연산식은 연산의 결과만 출력된다
◎ 주석(Comment)
- 소스코드에 부연설명 작성할 때
- 소스코드의 실행을 막을 때'
- Compiler (javac.exe) 가 해석하지 않는다 (bytecode 에는 주석이 들어가지 않는다)
- 종류_3가지 주석 제공
- /** API주석 (or Java Doc주석) */
- 클래스(class), 필드(field), 메소드(method) 위에 정의
- class에 대한 사용설명서를 만들 때
- /* 여러 줄 주석 */
- 주석의 내용이 많거나, 코드의 여러 줄을 한꺼번에 주석으로 설정할 때
- // 한줄 주석
- 주석의 내용이 적거나, 코드의 한 줄을 주석으로 설정할 때
- /** API주석 (or Java Doc주석) */
/*
자바에서 제공하는 표준 출력 method의 사용
System.out.print(); 값을 출력한 후에 줄 변경 X
System.out.println(); 값을 출력한 후에 줄 변경
*/
class UsePrint{
public static void main(String[] args) {
/*
System.out.println("Hello World!");
System.out.println("Hello java");
*/
//값에 대한 출력 - 상수
System.out.println("------------상수출력-------------");
System.out.println(2020); //정수상수 출력
System.out.println(2020.22); //실수상수 출력
System.out.println('ㅁ'); //문자상수(_한글자) 출력
System.out.println("오늘은 목요일입니다."); //문자열상수 출력
System.out.println(true); //불린(boolean)상수 출력
//값에 대한 출력 - 변수
int i=10; //1. 기본형 데이터형_값이 출력
UsePrint up=new UsePrint(); //2. 참조형 데이터형_변수가 가르키는 주소가 출력
System.out.println("------------변수출력-------------");
System.out.println(i); //기본형 데이터형 : 값이 출력
System.out.println(up); //참조형 데이터형 : 주소가 출력
System.out.println("------------연산식출력-------------");
System.out.println(10 + 22); //연산식의 결과값만 출력
System.out.println("10+22 연산결과= " + (10+22) + " 괄호로 묶지않으면: " + 10 + 22);
//문자열에 +기호를 사용하면 덧붙임의 의미
//System.out.println(); ==> 값을 넣지 않으면 줄바꿈출력
//System.out.print(); ==> 값을 넣지 않으면 error
System.out.println("---------A---------");
System.out.println();
//System.out.print(); ===>이렇게 사용하면 error
System.out.println("---------B---------");
byte b = -19;
short s = 1235;
int j = 2100000000;
long l = 2147483648L;
//--------------------------------------------------------------------
/*정수상수의 저장 literal의 크기를 (일시적으로) 늘릴 때 "형명시"를 사용한다
@ 형명시 : 상수 뒤에만 붙일 수 있다
- 리터럴의 크기를 일시적으로 변경할 때 사용
- 정수리터럴 : L, l ==> 4byte의 literal을 8byte로 "크게" 변환
- 실수리터럴 : F. f ==> 8byte의 literal을 4byte로 "작게" 변환
D, d ==> 크기변환 없음(8byte->8byte)
*/
//자동 형변환 : int의 하위데이터형 (byte, short)으로 변수를 선언하고,...
//
byte c = 1;
short t = 1; //4byte의 리터럴이 2byte로 변환되어 t변수에 할당됨
System.out.println(c + "," + t);
//연산의 자동형변환 : int의 하위데이터형이 연산되면 결과가 int로 나온다
byte b1 = 10;
byte b2 = 20;
//byte result=0; -> error
int result = 0;
result = b1+b2;
//b1 (1byte) 과 b2 (1byte) 를 더하면 결과 4byte(int)로 발생
//result값이 (int의 하위데이터형 연산결과이기 때문에) int, 즉 4byte이다 따라서 오류발생
System.out.println(result);
char ch = 'A'; //문자 A에 대한 unicode값이 할당
char ch2 = 65; //위와 같은 결과 출력됨-직접 unicode값 입력
System.out.println(ch); //저장된 unicode값에 해당하는 문자를 출력
//float f = 3.14; //8byte의 리터럴이 4byte로 할당 될 수 없다
//형명시 F -> 8byte의 리터럴을 4byte의 리터럴로 축소변환
float f = 3.14F;
System.out.println(f);
}
}
◎ 데이터형 (DataType)
- 값을 저장하기 위해 미리 예약한 공간의 이름
- 변수를 만들 때 사용
- 기본형 데이터형(PrimitiveType)
- 값을 그대로 저장
- 상수 값을 저장하기 위한 데이터형
- 참조형 데이터형
- 값의 주소가 저장
- 기본형 데이터형(PrimitiveType)
값의 종류 | 데이터명 | 크기(byte) | 범위(range) | 사용 예 |
정수상수 | byte | 1 | -128 ~ +127 | byte b = 1; |
short | 2 | -32768 ~ +32767 | short s = 1; | |
int | 4 | -2147483648 ~ +2147483647 | int i = 1; | |
long | 8 | -2⁶³ ~ +2⁶³-1 | long l = 1; long l = 300000000000L; ==> 형명시 |
|
문자상수 | char (unsigned value) |
2 | ''로 감싼 영문자,숫자,한글 한글자 저장, 값이 할당되면 Unicode값이 할당된다 (음수 저장 x) | char c = 'A'; char c = '1'; char c = '가'; |
실수상수 | float | 4 | 유효연산 6자리 | float f=3.15; ==> 형명시 |
double | 8 | 유효연산 15자리 | double d=3.15; | |
불린상수 | boolean | 1 | true 또는 false 저장 |
- signed value (_java 의 데이터형) : 음수범위와 양수범위 모두 저장
- - ~ +
- unsigned value : 양수의 범위만 저장
- 0 ~ +
- literal : 상수가 저장되는 메모리 공간
- 이미 정해져있음
- 정수상수: 4byte , 문자상수: 2byte, 실수상수: 8byte,
- 정수상수의 저장 literal의 크기를 (일시적으로) 늘릴 때 "형명시"를 사용한다
- 형명시 : 상수 뒤에만 붙일 수 있다
- 리터럴의 크기를 일시적으로 변경할 때 사용
- 정수리터럴 : L, l ==> 4byte의 literal을 8byte로 "크게" 변환
- long l = 2147483648L; //정수상수의 범위 4byte를 넘겨서, 형명시를 사용해 리터럴을 늘려줌
- 실수리터럴 : F. f ==> 8byte의 literal을 4byte로 "작게" 변환
- D, d ==> 크기변환 없음(8byte->8byte)
- 자동 형변환 (Promotion)
- 리터럴의 크기보다 작은 데이터형을 사용하면 리터럴의 크기가 자동으로 줄어들어 할당됨
- 변수에 값 할당하거나, 연산될 때 발생
- JVM동작 - 개발자가 막을 수 없다//자동
- byte가 short에 값을 할당할 때
- 강제 형변환 (Casting)
- 개발자가 원하는 데이터형으로 변환하는 것
- 기본형끼리만 가능하거나 참조형끼리만 가능
- 기본형에서 참조형으로 또는 그 반대로는 형변환 불가능
- boolean 형은 다른 형으로 변환되지 않는다
- 문법)
- (변경할 데이터형)상수
- (변경할 데이터형)변수명
- 값 손실이 발생할 수 있다
- 예)
- float f = 3.123f;
- int i = 0;
- i = f;
- 따라서, i = (int)f;
- char
- char c = 'A';
- A문자의 Unicode 값이 할당됨 (A가 바로 들어가는 것이 아님)
- --> c에는 'A' 에 해당하는 값인
- 사람이 사용하는 문자를 코드표(Charset)로 정의하여 컴퓨터에 저장
- Charset : ASCII Code = 1byte charset, Unicode = 2byte charset
- Unicode는 최대 0~65535자의 문자를 표현
코드값 | 대응문자 | 코드값 | 대응문자 | 코드값 | 대응문자 | ...... |
1 | ? | 2 | ? | 3 | ? | |
48 | 0 | 49 | 1 | 50 | 2 | ... |
65 | A | 66 | B | 67 | C | |
97 | a | 98 | b | 99 | c | ... |
255 | ? |
- float f=0.1234567;
- float f1=0.1234567;
- f+f1
< 기본형 데이터형을 이용한 변수의 선언과 사용 , 자동형변환 , 형명시 >
/*
기본형 데이터형을 이용한 변수의 선언과 사용
자동 형변환, 형명시
*/
class DataType {
public static void main(String[] args) {
//정수를 저장할 수 있는 데이터형 - byte short int long
System.out.println("----정수형----");
byte a = 10; //자동형변환
short b = 20;
int c = 30;
long d = 40;
long e = 2149483648L; //형명시 필요(_리터럴의 크기보다 큰 값이 사용)
System.out.println("byte: " + a + "\nshort: " + b + "\nint: "+ c + "\nlong: " + d + ", " + e);
System.out.println("\n----문자형----");
char f = 'A'; //Unicode 값 65 할당
char g = 'a'; //Unicode 값 97 할당
char h = '0'; //Unicode 값 48 할당
System.out.println("char: " + f + ", " + g + ", " + h); //코드값에 해당하는 문자를 출력
System.out.println("\n----실수형----");
float i = 2020.22F; //형명시 필수(_8byte의 리터럴을 4byte 로 축소시켜야함)
double j = 2020.22; //형명시 생략 가능
System.out.println("float: " + i + "\ndouble: " + j);
System.out.println("\n----불린형----");
boolean k = true;
boolean l = false;
System.out.println("boolean: " + k + ", " + l);
System.out.println("\n----자동형변환----");
//int의 하위데이터형이 연산되면 결과가 int로 나온다
byte num1 = 3;
short num2 = 4;
//short result = num1 + num2; //이것은 오류
int result = num1 + num2;
System.out.println(num1 + "+" + num2 + "=" + result);
//이렇게 int로 바꿔줘야함
//이유: byte가 short로 변환된 후 short끼리 연산되어 결과가 int로 발생하여
// short데이터형에 할당될 수 없다 == error
}//main
}//class
< 강제형변환에 대한 예 >
/*
강제형변환에 대한 예
*/
class Casting{
public static void main(String[] args) {
//형명시 : 리터럴의 크기 자체를 축소하여 값 넣고 변수에 할당
float f = 3.1415f;
int i = 0;
//i=f; byte 크기는 같지만 값의 종류가 다르므로 할당되지 않는다
i=(int)f; //.1415 값 손실이 일어난다 _ 강제형변환 부분에서만 손실됨(본 데이터는 f에 남아있음)
System.out.println("float: " + f + "\nint형으로 f 강제형변환: " + i);
//강제형변환 : 리터럴의 크기 자체는 유지되고, 변수에 할당할 때 값을 float로 변경하여 할당
float f1 = (float)3.14;
System.out.println("float: " + f1);
byte num1 = 4;
byte num2 = 26;
byte result =0;
result = (byte)(num1 + num2); //자동 형변환
System.out.println(num1 + " + " + num2 + "=" + result);
char c = 'A'; //Unicode값 저장
System.out.println(c + "의 Unicode 값: " + (int)c);
/*
@ casting 이 되지 않는경우
기본형 데이터형을 참조형데이터형으로 변환
int temp = 4;
String s = (String)temp;
참조형데이터형(주소저장)을 기본형 데이터형(값저장)으로 변환
String s = "4";
int temp = (int)s;
*/
}
}
◎ 변수 (Variable)
- 상수에 대한 별명부여
- 코드에 대한 가독성 향상
- 기본형데이터형, 참조형데이터형을 사용하여 변수를 선언할 수 있다
- 3가지 변수를 제공한다
- instance variable(=member variable)
- static variable(=class variable)
- local variable(지역변수)
- 메소드 안에서 선언되고 사용되는 변수
- 메소드 밖에서 사용할 수 없음
- 자동초기화가 되지 않는다 (개발자가 코드를 작성하여 초기화 해야한다)
- 초기화되지 않은 변수를 사용하면 error가 발생한다
- 지역변수
- 문법
- 선언) 데이터형 변수명; //같은 이름의 변수 명은 선언할 수 없다
- 값 할당) 변수명 = 값; //여러번 가능
- 값 사용) - 출력, 연산, 재할당 //여러번 가능
- 선언 // int i;
- 값 할당 // i = 20;
- 값 사용 // System.out.println( i );
- 지역 변수의 초기화 : 변수를 선언하면서 값을 할당하는 문법
- 에러를 방지하기 위해
- 데이터형 변수명=초기화값;
- 초기화값은 연산이 되더라도 연산에 영향을 끼치지 않을 값으로 설정
- method가 호출되면 memory에 생성되고, method의 호출이 끝나면 memory에서 사라진다
class Test{
//이곳에 만든변수 : instance variable , static variable
public static void main(String[] args){
//이곳에 만든변수 : local variable
}
}
/*
method안에서 정의하고, method안에서만 사용되는 지역변수의 사용법
- 자동초기화 되지 않는 변수 (개발자가 반드시 수동으로 초기화해야함)
- method가 호출되면 memory에 생성되고, 호출이 끝나면 사라진다
(자바에서 제공하는 변수 중에 생명이 가장 짧다)
*/
class LocalVariable{
public static void main(String[] args) {
//1.변수의 선언
int i;
//2.값 할당(변수에 값을 넣는 것)_이전 할당값은 사라짐, 여러번 가능
i = 5;
//3.값 사용
System.out.println(i);
//2.값 할당(재설정)
i = 200;
System.out.println(i);
int j = 0; //이전에 선언된 변수명과 다른 이름으로 몇개든 선언할 수 있다
System.out.println(j);
//같은 이름의 변수가 선언되면 error
//int i = 100;
}
}
2020.10.23_ p. 86~133
constant(변수를 상수처럼 사용하기), 진수, 연산자
'Web_Back-end > Java SE' 카테고리의 다른 글
[Java] 2020.10.28. day_6 package, for문, eclipse (0) | 2020.10.28 |
---|---|
[Java] 2020.10.27. day_5 제어문_if, if else, else if, switch~case, break (0) | 2020.10.27 |
[Java] 2020.10.26. day_4 연산자 (0) | 2020.10.26 |
[Java] 2020.10.23. day 3_진수 변환, Wrapper Class(API), 연산자 (0) | 2020.10.23 |
[Java] 2020.10.21. day 1_ java 개발 환경 구축 및 이론 (0) | 2020.10.21 |