JAVA의 특징
객체 지향언어: 객체를 기반으로 한 class의 재사용성을 높이는 언어
platform ( application이 실행될 수 있는 환경)에 독립적이다
자바플랫폼이란? java application이 실행될 수 있는 환경
자바플랫폼의 종류
- JAVA SE : UI 자바 어플리케이션, Network 자바 어플리케이션 등이 실행될 수 있는 환경
- JAVA EE: 기업형 자바 어플리케이션이 실행될 수 있는 환경
- JAVA ME
자바 플랫폼의 구조
- JDK = JRE(JVM + API) + 여러 응용프로그램(javac, java...)
- SE와 EE는 API가 다르다. 어떤 API를 쓰느냐에 따라 SE인지 EE인지 결정이 됨.
JVM의 역할: 재해석기, 실행 시 메모리관리
java는 자료형이 먼저 결정되어야 값을 넣을 수 있다.
자료형 : 기본형 / 참조형
기본형 : 기본형은 값을 직접 갖음
byte (1byte), short (2byte), int(4byte), long (8byte) : 정수
- short : 음수~양수까지
float(4byte), double(8byte) : 실수
char(2byte) : 문자 (0부터 가능, 음수 불가)
boolean (1byte) : 논리 ( 형변환 절대 불가)
-리터럴은 기본 자료형을 정수는 int, 실수는 doulbe로 판단하기 때문에 long과 float는 리터럴 뒤에 L,F로 표기해 주어야 함.
ex) long lon = 1234568990186403434L;
float f = 123.4F;
public class Datatype {
public static void main(String[] args) {
//byte, short, int, long, float, double, char, boolean
byte b;
b = 127; //b = 128;
System.out.println(1); // 컴파일러가 1을 int로 이해
System.out.println(123.4);
char c = '가'; //'A'는 십진수65로 컴퓨터가 이해, 'a'는 십진수 97로 이해
c = '㉿';
boolean flag = true;
flag = false;
byte by; //-128~127
by=127;
by=(byte)(by+1);
by=127;
by+=1;
System.out.println(by);
// 최대값에 +정수 값을 입력하면 미니멈값이 나옴.
by=127;
by++;
System.out.println(by);
참조형 (4byte) : 값을 참조
자료형변환 : 작은 값의 자료에서 큰 값의 자료로는 자동으로 변환되나, 범위가 큰 자료형은 작은 자료형으로 자동형변환이 안되서 강제로 해야한다.
ex) byte b = 100;
int i=b; 자동형변환 (promotion)
short sh = (short) i;강제형변환 (testiong)
-실수 값을 정수로 강제 형변환 하는 경우, 소수점 이하 숫자는 잘리게 됨(반올림X)
-연산 우선순위가 같은 경우에는 왼쪽에서 오른쪽으로 연산처리
-실수>정수
short sa, sb, sc;
sa=3;
sb=5;
sc=(short)(sa+sb);//sa,sb값이 int로 자동형변환
//short타입인 sc에 대입되려면 sa+sb결과가 short타입으로 강제형변환필요
System.out.println(sc); //8
//형변환
lon = b; //byte->long 자동형변환
System.out.println(lon); //127
lon =(long) f; // float->long 자동형변환 불가. 강제형변환(자료형)
System.out.println(lon); //123
lon = c; //char타입은 int이상의 자료형으로 자동형변환 가능
System.out.println(lon); //c: 가, lon:12927
short sh;
//sh = c;
//boolean자료형과는 형변환 불가
//flag = b;
//flag = (boolean)b;
}
}
short sa, sb, sc;
sa=3;
sb=5;
sc=(short)(sa+sb);//sa,sb값이 int로 자동형변환
//short타입인 sc에 대입되려면 sa+sb결과가 short타입으로 강제형변환필요
System.out.println(sc); //8
//연산자 우선순위 높이기 : ( )
//논리연산자 &,| ,&&,||,!
a=3;
b=5;
System.out.println(a < b & a%2==1); //true 좌측,우측 모두 true일경우 true
System.out.println(a > b & a%2==1); //false 한쪽이라도 false이면 false
System.out.println(a > b & a%2==0); //false
System.out.println(a < b & a%2==0); //false
System.out.println(a < b && a%2==1); //true &&두개인 경우 앞쪽에서 false인경우 바로 값이 나오므로 속도 처리가 더 빠르다 (숏 서킷 오퍼레이터?)
System.out.println(a > b && a%2==1); //false
System.out.println(a < b && a%2==0); //false
System.out.println(a > b && a%2==0); //false
[ 연산자 ]
public class Operator {
public static void main(String[] args) {
int a,b,c;
//산술연산자 +,-,*,/,%
a=3;
b=5;
c=a+b;
System.out.println(c); //8
System.out.println(a-b); //-2
System.out.println(a/b); //0
System.out.println(b/a); //1
System.out.println(a%b); //3
System.out.println(b%a); //2
System.out.println(a+b*c); //43
System.out.println(a+b-c); //연산 우선순위가 같은 경우에는 왼쪽에서 오른쪽으로 연산처리
//System.out.println(a/0); //ArithmeticException예외발생. 프로그램 자동종료됨.
//비교연산자 >,<,>=,<=,==,!=
a=3;
b=5;
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
//대입연산자 =, +=, -=, *=, /=, %=
a=3;
a+=1; //a값에 1증가하여 a에 대입 a=a+1;와 같음
System.out.println(a); //4
a-=2;//a값에 2값에 2감소하여 a에 대입 a=a-2;와 같음
a*=3;
a/=4;
a%=5;
//단항연산자 ++, --
a=3;
a++;
System.out.println(a); //4
//삼항연산자 ? :
a=3;
String result = a%2==0? "짝수" : "홀수";
System.out.println(result); // 홀수
//논리연산자 &, ,&&,ㅣㅣ,!
a=3;
b=5;
System.out.println(a < b & a%2==1); //true 좌측,우측 모두 true일경우 true
System.out.println(a > b & a%2==1); //false 한쪽이라도 false이면 false
System.out.println(a > b & a%2==0); //false
System.out.println(a > b & a%2==0); //false
System.out.println(a < b && a%2==1); //true &&두개인 경우 앞쪽에서 false인경우 바로 값이 나오므로 속도 처리가 더 빠르다 (숏 서킷 오퍼레이터?)
System.out.println(a > b && a%2==1); //false
System.out.println(a < b && a%2==0); //false
System.out.println(a > b && a%2==0); //false
System.out.println(a < b | a%2==1); //true 좌측,우측 모두 false일경우 false
System.out.println(a > b | a%2==1); //true 한쪽이라도 true이면 true
System.out.println(a > b | a%2==0); //true
System.out.println(a > b | a%2==0); //false
System.out.println(a < b || a%2==1); //true ||두개인 경우 왼쪽에서 true인경우 오른쪽 연산은 하지 않은채 결과 값 산출. 속도 처리가 더 빠르다 (숏 서킷 오퍼레이터?)
System.out.println(a > b || a%2==1); //true
System.out.println(a < b || a%2==0); //true
System.out.println(a > b || a%2==0); //false
System.out.println(!(a<b)); //false
//연산자 우선순위 높이기 : ( )
//비트연산자
a=1;
b=0;
System.out.println(a & b); //int & int 비트연산
System.out.println(a | b); //int | int 비트연산
System.out.println(a<b & a&2==1); //boolean & boolean 논리연산
System.out.println(a<b | a&2==1);
}
}
'개발 공부 > JAVA' 카테고리의 다른 글
반복문 - for문/ while문 (0) | 2023.05.17 |
---|---|
조건문 - if문 / swith문 (1) | 2023.05.17 |
eclipse환경설정/ apache-tomcat 구현해보기(KOSTA EDU) (0) | 2023.05.12 |
JBDC (KOSTA JAVA 기반 클라우드 개발자 양성과정) (0) | 2023.05.11 |
노트 필기 (KOSTA JAVA 기반 클라우드 개발자 양성과정) (0) | 2023.05.10 |