KIC/JAVA
day13 - JAVA (자바 개요, 환경 설정, 식별자, 자료형, 연산자)
바차
2021. 7. 14. 01:53
반응형
[자바의 처리 구조]
-> 자바 프로그램은 컴퓨터 내에서 자바 가상 머신(Virtual Machine: JVM) 으로 불리는 표준화 가상의 컴퓨터에서 실행
[자바의 특징]
-> 배우기 쉽다.
-> 객체 지향 프로그래밍
-> 가비지 컬렉션
-> 플랫폼 독립성
-> 멀티 스레드
[식별자]
-> 보고 느낄 수 있는 모든 사물(객체)들을 각각 구별할 수 있는 것을 의미

[자바의 자료형]

[변수]
-> 변수 선언 관련 코드 예시
package javaPro.java_var;
public class VarEx1 {
public static void main(String[] args) { //프로그램의 시작점
//변수의 선언 및 초기화
byte b1 = -22;
byte b2; //변수의 선언. b2 저장공간 메모리 1바이트 할당.
//바이트로 저장할 수 있는 값의 범위. -128 ~ 127 저장가능
b2= -128; //변수의 초기화
b1=127;
short s1 = -220;
int i1 = 100;
long l1 = 1000l;
//변수값 내용을 화면에 출력하기
//System.out.println : 화면에 값을 출력.
System.out.println("b1=" + b1); //b1=-22
System.out.println("s1="+s1);
System.out.println("i1="+i1);
System.out.println("l1="+l1);
float f1 = 1.0f;
double d1 = 1.0;
double d12 = 1d;
System.out.println("f1=" + f1);
System.out.println("d1=" + d1);
/*
* 실수형 리터널의 기본자료형은 double 임
* float 리터널로 표시하기 위해서는 접미사를 붙여야 한다.
* F,f : float 리터널
* D,d : double 리터널
* L,l : long 리터널
*/
}
}
/*
* 자료형
* 기본형 - 논리형 : boolean(1)
* 문자형 : char(2)
* 정수형 : byte(1), short(2), int(4), long(8)
* 실수형 : float(4), double(8)
* 참조형 - 배열, 클래스, 인터페이스
*
*/
-> 형변환 예시
package javaPro.java_var;
public class VarEx2 {
public static void main(String[] args){
byte b1 = 10;
short s1 = 20;
int i1 = 100;
long l1 = 1000;
i1 = b1;
s1 = (short) l1;
float f = l1;
l1 = (long) f;
}
}
[형변환 원리]
큰자료형 <= 작은 자료형 : 자동형변환
작은자료형 <= 큰자료형 : 명시적 형변환
-> 문제가 생길 경우에는 ide가 워닝을 띄워준다.
[자료형 크기 순서]
byte < short < int < long < float < double
char
A=B : 같다 의 의미가 아니고, 대입의 의미임. B의 값을 A에 입력함.
lvalue : 대입연산자의 왼쪽의 값. 반드시 변수여야함.
rvalue : 대입연산자의 오른쪽의 값, 변수, 리터널, 수식 가능
[연산자]

[산술 연산자 주의점 예시]
package javaPro.java_op;
/*
* 산술 연산
* / : 나누기 연산자
* 정수 = 정수/정수(int 이하)
* % : 나머지 연산자
* 나머지연산의 결과값의 부호 피젯수(나누어 지는수) 의 부호와 같다.
*/
public class OpEx6 {
public static void main(String[] args){
System.out.println(10/8); // 1
System.out.println(10/-8); // -1
System.out.println(-10/8); // -1
System.out.println(-10/-8); // -1
System.out.println(10%8); // 2
System.out.println(10%-8); // 2
System.out.println(-10%8); // -2
System.out.println(-10%-8); // -2
}
}
[비트 연산자 예시]
package javaPro.java_op;
/*
비트연산자 : &(and),|(or),^(XOR),~(not) : 정수값,
*/
public class OpEx7 {
public static void main(String[] args) {
System.out.println("6 & 3 = "+ (6 & 3));
/* and 연산
* 6 : 0110
* 3 : 0011
* --------
* & 0010 : 2
*/
System.out.println("6 | 3 = "+ (6 | 3));
/* or 연산
* 6 : 0110
* 3 : 0011
* --------
* | : 0111 : 7
*/
System.out.println("6 ^ 3 = "+ (6 ^ 3));
/* 같으면 0, 다르면 1
* 6 : 0110
* 3 : 0011
* --------
* ^ : 0101 : 5
*/
System.out.println("~10"+ ~10); // -11
/*
* 10 : 00001010
* ---------------
* ~ : 11110101 : ?
*/
}
}
[shift 연산자 예시]
package javaPro.java_op;
/*
* shift 연산자 : 비트이동 연산자
* << n : 왼쪽으로 n비트만큼 이동. 오른쪽의 n비트 0으로 채움
* >> n : 오른쪽으로 n비트만큼 이동. 왼쪽의 n비트 부호비트 채움.
* >>>n : 오른쪽으로 n비트만큼 이동. 왼쪽의 n비트 0으로 채움.
*/
public class OpEx8 {
public static void main(String[] args) {
System.out.println("8<<2 : " + (8<<2)); //32
/* 실제로는 32자리이지만 8자리로 간략하게 표현함
* 8 : 00001000
* <<2 : 00100000 : 32
*/
System.out.println("8>>2 : " + (8>>2));//2
/* 8 : 00001000
* >>>2 : 00000010 : 2
*/
System.out.println("8>>>2 : " + (8>>>2));//2
/* 8 : 00001000
* >>>2 : 00000010 : 2
*/
System.out.println("-8<<2 : " + (-8<<2));//-32
/* -8 : 11111000
* << 2 : 11100000 : -32
*/
System.out.println("-8>>2 : " + (-8>>2));//-2
/* -8 : 11111000
* >> 2 : 11111110 : -2
*/
System.out.println("-8>>>2 : " + (-8>>>2));//1073741822
/* -8 : 11111000
* >>>2 : 00111110 (실제로는 32자리이기 때문에 1073741822 나옴)
*/
}
}
[대입 연산자 예시]
package javaPro.java_op;
public class OpEx9 {
// 대입 연산자
public static void main(String[] args){
int num = 100;
System.out.println(num);
num+=10; // num = num + 10;
System.out.println(num);
num/=10; // num = num / 10;
System.out.println(num);
num*=2+3; // num = num * (2+3);
System.out.println(num);
byte b = 1;
b *=2; //b = b*2
b = (byte) (b*2); // 형변환 해줘야 함
System.out.println(b); //4
b *=2;
System.out.println(b); //8
b *=2;
System.out.println(b); //16
b *=2;
}
}
300x250