기초자료형은 stack에 저장,
참조자료형(ex String)은 데이터는 다른 곳에 있지만 위치의 주소만 힙 heap 영역 저장된다.
String str = "가";
str은 heap 영역에 저장됨
*참조자료형 : 다른 영역에 참조되는 데이터를 가짐
초기화은 처음에 변수에 값을 대입하는 것, 대입(assignment)은 초기화 이후 값을 넣는 것을 말한다.
연산은 메모리에서 하지 않고, 연산장치 CPU에서 함
나머지 연산자%는 피연산자가 반드시 정수여야만 한다. 실수도 가능하지만 가능한 맞는지 확인하는 것이 좋다.
<논리연산자>
: 그리고, 이거나
: &&(and), ||(or)
: &&(and) 특정 값이 범위에 들어가 있는 것을 확인할 때 사용
자바에서는 10 < X < 20으로 사용할 수 없고, => 파이썬에서는 사용 가능
(X >10) && (X < 20)라고 사용해야 한다.
//나누기 연산시 주의, 하나의 값이 실수형이냐 정수형이냐에 따라 값이 다르게 나오기 때문에
System.out.println(10*2-3.0/5);
System.out.println(10*2-3/5);
System.out.println(3.0/5);
<비교연산자>
: 값이 boolean으로 나옴
<삼항연산자>
: 자바에 딱 한 개밖에 없음
: 피연산자가 3개 있음
: 변수 = (조건식) ? 참일 경우 사용할 식1 : 거짓일 경우 사용할 식2;
<증감연산자>
: ++, --
: 변수에만 사용 가능, 1 증가 혹은 감소
a++, ++a,
a--; 최하위
--a; 1순위
char는 연산의 일부만 낄 수 있다. 문자를 저장하기 위한 타입이기 때문에 음수가 존재하지 않다.
LV = RV 대입연산자
LV : 변수여야야함, RV : 변수, 값, 식
RV는 LV보다 타입이 작거나 같아야 한다.
/* ctrl + shift +/ 주석을 할 때
* int a; int b = 10;
*
* a = b;
*/ ctrl + shift +\ 주석을 풀 때
<복합 대입연산자>
a = a +10; // a +=10;
a = a - 5; // a -=5;
a = a > 10;
: 비교연산자는 값이 boolean 타입이기 때문에 int형인 a에 들어가지 않는다.
a >= 10;은 문장이 완성되지 않았기 때문에 오류
boolean bool = a >=10;는 완성된 문장
true + false는 자바에서 불가능하지만 C언어와 파이썬, JS에서 가능 !
z = -z; 부호 반전
z = +z; 부호 유지
<캐스팅과 프로모션 Casting, Promotion>
Promotion: 연산을 실시할 때 두 피연산자의 타입이 다를 경우, 큰 타입으로 타입을 맞춘 후 연산을 실시
Casting: 사용자가 강제로 타입을 바꿀 경우, 연산자 우선순위 1순위
int area = (int)(10*10*3.14);
<표준입력장치>
System.out : 모니터(출력) : Standard Input Output ==> studio
System.in : 키보드(입력)
Scanner라는 객체를 사용해 키보드를 통해 입력을 받는다. Scanner는int처럼 하나의 타입이다.
sc.next();는 한단어만 입력 받음 ! (뛰어쓰기, 엔터, 탭은 입력불가)
sc.nextLine();은 (뛰어쓰기, 엔터, 탭은 입력 가능), buffer에 있는 tab, enter를 버리지 않음
Line이라는 것때문에 버리지 못하는 거임. 찌꺼기 엔터가 남아있다고 생각하면 됨.
next, nextInt();, nextDouble();는 buffer에 있는 tab, enter를 버림
nextLine이 다음에 오는 것이 아니라면 문제될 게 없당 !
=> 해결책 찌꺼기 처리반 nextLine();을 하나 가져다 두는 것이다.
sc.nextLine(); //찌꺼기 처리, buffer를 비움
<+연산자>
두가지 이상의 역할을 수행하는 연산자
단항 연산자 : 부호 유지
이항 연산자 : ①덧셈, (피연산자가 문자열일 경우,) ②대상이 되는 다른 데이터도 문자열로 만들어 결합
<-연산자>
단항 : 부호반전
이항 : 뺄셈
문자열과 숫자는 연산이 되지 않아 오류가 발생한다. 괄호( )를 사용해주면 okay !
<if문>
V1
V2
V3
3가지의 버전이 있음
white space : tab , enter, space를 무시하고 가져오지 않는 함수가 nextInt, nextDouble, next이다.
nextInt, nextDouble, next는 space / space ==> space를 무시하고 연산자, 문자열만 가져간다.
white space 기능이 없는 것은 nextLine() 버퍼 안에 엔터를 무시하지 못하고 다 긁어오는 함수이다.
버퍼에 남아있는 엔터를 값인 줄 알고 읽어들임!
nextLine()를 사용할 경우
10 enter / 연산자에 enter를 가지고 가서 밀림. 그래서 문제 발생. Day04
enter를 누르지 않으면 buffer에 있는 메모리가 변수에 들어가지 않음.
nextLine()는 버퍼때문에 함부로 사용하면 안된다.
'개발자로 가는 길(국비지원과정) > 1. Java' 카테고리의 다른 글
[자바복습 Day04] long형, 지역변수, 이중for문, 배열, 유니코드, 대문자, 소문자를 서로 바꾸기, 다차원배열 (0) | 2021.12.30 |
---|---|
[자바복습 Day03]printf 사용, Switch, equals, 반복문 (0) | 2021.12.29 |
[자바복습 Day01] Java 첫시간 리터럴, 변수, 기본타입 (0) | 2021.12.27 |
[Java] containsKey() (0) | 2021.10.15 |
[Java] length / length() / size()의 차이 (0) | 2021.10.14 |