[전날 내용 복습]
-레퍼런스 자료형
:실제 데이터를 저장하는 게 아닌 데이터가 저장되어 있는 주소를 저장하는 방식이다.
:데이터는 일회성이며, 일회성 데이터를 보완하기 위해 변수를 만든다.
:레퍼런스 자료형과 기본자료형 구분은 실제 데이터를 가지고 있느냐 데이터가 저장되어있는 주소를 가지고 있느냐로 구분한다.
:레퍼런스 자료형의 특징: 변수의 크기는 4Byte이며 내가 넣을 수 있는 저장 데이터는 이론상 무제한이다. 내가 주소를 확인하거나 사용은 어려우며 주소 참조만 가능한다.
- class 명명규칙
: 대문자로 시작한다./ 명사와의 두 단어 이상이 합쳐질 때 첫 이니셜을 대문자로 한다./ 명사화/ 파일 이름= 클래스 이름
-변수 명명규칙
: 영문자와 숫자를 섞어 쓸 수는 있어도 숫자로 시작하면 안 됨.
: 특수문자는 변수로 사용하지 못한다. (단, 단어와 단어 사이의 구분을 짓기 위한 _,$는 사용 가능하다)
: 이미 있는 기능의 단어들은 사용이 안된다.(if, for 등)
-형변환시 같은 특징을 가진 전혀 다른 데이터 타입으로만 가능하다. ex) int ->boolean 불가능하다.
[주석]
-번역하는 대상을 제외시킬 때 사용한다.
1. /*~*/ : 여러 줄 주석
2. // : 한 줄 주석 ( (ctrl + / 을 누르면 선택된 줄 한 줄 주석 처리 가능)
3. /**~*/ : Documentation (문서화) 주석
주석은 한글로 쓸 경우 에러가 발생하는 경우가 있어 최대한 영어로 작성하자.
API : 사전. 내가 필요한 기능이 있을 때 사용함.
[연산자]
연산자는 어떠한 계산을 처리하도록 하는 특수문자들을 지칭하는 것이다.
- 연산자의 우선순위
| 1 | 최우선연산자 | . [] () | . 은 접근 연산자이다. |
| 2 | 단항연산자 | ! ~ ++ -- + - (cast) | ! ~ : 부정연산자 ++ -- :증감연산자 |
| 3 | 산술연산자 | + - * / % | /는 몫 (그룹화계산) % 나머지 값 (진수코드) |
| 4 | 시프트연산자 | << >> >>> | 형식 : 항 연산자 이동수 << 왼쪽 (0) >> 오른쪽 (부호화비트) >>>오른쪽(0) |
| 5 | 관계연산자 | > < >= <= == != | boolean으로 반환 |
| 6 | 비트연산자 | & ^ | | |
| 7 | 논리연산자 | && || | |
| 8 | 삼항연산자 | 조건항 ? 참 : 거짓 | 분리를 발생하는 연산식 |
| 9 | 대입연산자 | = += -= *= /= %= | |
| 10 | 증감연산자 | ++ -- | 후위형일 경우 i++; |
[시프트 연산자]
형식 : 항 연산자 이동수(ex. <<1)
1. << : 2진수로 변화된 데이터를 왼쪽으로 원하는 만큼 이동 (0으로 채움).
2. >> : 2진수로 변화된 데이터를 오른쪽으로 원하는 만큼 이동 (부호화비트로 채움).
3. >>>: 2진수로 변화된 데이터를 오른쪽으로 원하는만큼 이동(0으로 채움).
[비트 연산자]
1. & (and) : 참참참 나머지는 거짓. 대조되는 비트를 비교하여 모두 1이면 1, 하나라도 0이면 0을 반환.
2. | (or) : 거짓거짓거짓 나머지는 참. 대조되는 비트를 비교하여 하나라도 1이면 1, 둘 다 0이면 0을 반환.
3. ^ (xor) : 대조되는 비트를 비교하여 둘 다 같으면 0, 하나라도 다르면 1을 반환.
package day03;
public class Day03_02 {
public static void main (String [] args) {
System.out.println("1.(9)대입연산자와 (3)산술연산자(+,-,*,/(몫),%(나머지)");
int i = 10;
System.out.println("i="+i);
i+=1;
System.out.println("i="+i);
i++;
System.out.println("i="+i);
// i = i-1;
// i-=1;
i--;
System.out.println("i="+i);
// i= i*2;
i*= 2 ;
System.out.println("i="+i);
System.out.println("2.(2)단항연산자(~,!,++,--,(cast))");
System.out.println("2_1. 비트 not 연산자 / 계산할 대상을 2진수로 변경한다.");
int m = 24;
System.out.println("m="+m);
System.out.println("~m="+~m);
System.out.println("2_2. 논리 not 연산자 / 내가 처리 할 수 있는것은 분리함.");
boolean bool = true;
System.out.println("bool="+bool);
System.out.println("!bool="+!bool);
System.out.println("3. (4)시프트 연산자.(<<,>>,>>>");
/* 형식 항 연산자 이동수
* ex) <<2
*
*1. << 2진수로 변화된 데이터를 왼쪽으로 원하는 만큼 이동(0으로 채움)
*2. >> 2진수로 변화된 데이터를 오른쪽으로 원하는 만큼 이동 (부호화비트로 채움)
*3. >>> 2진수로 변화된 데이터를 오른쪽으로 원하는 만큼 이동 (0으로 채움)*/
int num = 6;
System.out.println("num="+num);
System.out.println("num<<2="+(num<<2));
System.out.println("num>>2="+(num>>2));
System.out.println("num>>>2="+(num>>>2));
int numm = -6;
System.out.println("numm="+numm);
System.out.println("numm="+~num);
System.out.println("4.(5)관계 연산자.(<,>,<=,>=,==,!=");
System.out.println("7>5="+(7>5));
System.out.println("5.(6)비트 연산자.(&,^,|)");
/*
* 1. & and 대조되는 비트를 비교하여 모두 1이면 1, 하나라도 0이면 0을 반환
* 2. | or 대조되는 비트를 비교하여 하나라도 1이면 1, 둘다 0이면 0을 반환.
* 3. ^(xor) 대조되는 비트를 비교하여 둘 다 같으면 0 하나라도 다르면 1을 반환.
*
*
* */
int num1 = 11;
int num2 = 6;
System.out.println("num1&num2="+(num1&num2));
System.out.println("num1&num2="+(num1|num2));
System.out.println("num1&num2="+(num1^num2));
/*
* num 1 = 11 / 0000 1011
* num 2 = 6 / 0000 0110
*
* & / 0000 0010 = 2
* | / 0000 1111 = 15 -> 하나라도 1이면 무조건 1, 0이면 0을 반환.
* ^ / 0000 1101 = 13
*
* */
System.out.println("6. (7)논리 연산자.(&&,||(boolean 사용))");
System.out.println("true&&true ="+(true&&true));
System.out.println("true&&false ="+(true&&false));
System.out.println("false&&false ="+(false&&false));
System.out.println("true||true ="+(true||true));
System.out.println("true||false ="+(true||false));
System.out.println("false||false ="+(false||false));
}
}
예제. i와 j의 값은?
이해가 되지 않음....
package day03;
public class Day03_03 {
public static void main(String[] args) {
int i = 1;
int j = i++;
if((i>++j)&& (i++==j)) {
i+=j ;
}
System.out.println("i="+i);
System.out.println("j="+j);
}
}
삼항 연산자
package day03;
public class Day03_04 {
public static void main (String []args) {
System.out.println("삼항 연산자.(조건항 ? 참:거짓)");
int num1 = 2;
int num2 = 4;
int max = (num1>num2)?num1:num2;
String str = (num1>num2)?"num1변수의 값이 크며 그 값은"+(num1)+"입니다.":"num2변수의 값이 크며 그 값은"+(num2)+"입니다.";
System.out.println("큰 값= "+max);
System.out.println(str);
}
}'개발자 > 백엔드 웹 개발자 과정(국비)' 카테고리의 다른 글
| 2022년 11월 9일 _ 6회차(switch문,for문) (0) | 2022.11.09 |
|---|---|
| 2022년 11월 8일 _ 5회차(if조건문) (0) | 2022.11.08 |
| 2022년 11월 7일 _ 4회차(자바 기본 입출력) (0) | 2022.11.07 |
| 2022년 11월 2일 _ 1회차(수업 소개, 자바,환경 변수) (0) | 2022.11.06 |
| 2022년 11월 3일 _ 2회차 (변수, 자료형,형변환) (0) | 2022.11.03 |