[ITWILL : JAVA]자바접근자 public과 private, 자바 데이터 형태, 모든 연산자들, A++과 ++A의 차이, (조건)? TRUE:FALSE
ITWILL학원 : 2강 JAVA BY 윤미영강사
1. 자바접근자 public와 private
- public Class A {}
- private Class A {}
참고링크 : 자바접근자 public과 private차이
private Class는 다른 프로젝트에서 불러오지 못하고 심지어 같은 프로세스안에서도 불러오지 못한다.
이런 private를 왜 쓰는걸까?
실생활예를 들자면, 무인경비시스템의 문을 열고 닫는 시스템이 있다고 생각해보자.
다른 곳에서 해당 프로그램을 불러와서 수정할 수 있다면 에러가 발생해 무인경비 오작동이 일어날지도 모른다
따라서 중요한 파일들을 다른 곳에서 수정할 수 없도록 public이 아닌 private를 쓴다.
2. 자바 데이터 형태
기본데이터형과 참조데이터형은 여러 다른점이있지만 메모리에서도 차이점이 있다
기본데이터형은 실제값을 가지고 참조데이터형은 실제데이터의 주소값을 가진다.
- 기본 데이터형
기본데이터형의 메모리는 실제값을 가진다
정수형 int(32비트), long(64비트), short(16비트), byte(8비트 : -128 ~ 127까지 표현가능)
실수형 double(64비트), flote(32비트) : 10.1, 0.0f
1 | //소수점을 편하게 나타낼수있다. |
- 문자형 char(16비트) : ‘’
- char는 문자인데 컴퓨터가 아는건 이진법밖에 없는데 어떻게 이진법으로 나타낼까? 바로 유니코드의 문자를 변환해서 나타낸다.
- 원래는 아스키문자표 ex)a는 97, A는 65
- 아스키문자표는 영문만 해당되기때문에 영문이 아닌 다른 전세계 언어는 유니코드로 사용한다
- 참고링크1 : 아스키코드와 유니코드의 차이
- 참고링크2 : 한글유니코드1
- 참고링크3 : 한글유니코드2
1 | // char로 작은따옴표 하나를 나타내고싶다 -> 역슬러시이용 |
- 논리형 boolean형태(각각 8비트) true, false
- 참조 데이터형 = Class형 = 클래스형
기본데이터형이 아닌 나머지 데이터형태를 다 참조데이터형, 또 다른 말로는 클래스형이라고 한다.
참도데이터형의 메모리는 실제 데이터의 주소값을 가진다.
예시
- 문자열 String : “”
- Scanner
3. 데이터형변환
형변환은 크게 두가지로 나눌 수 있다
- 자동형변환(암시적형변환)
- 따로 설정하지않아도 컴파일러가 자동으로 형을 변환해준다.
- 할당된 byte가 작은 데이터타입에서 큰 데이터타입으로 변경된다. 반대는 안될것같지만 되는 것들이 있음.
- ex) char형 -> int형 (유니코드사용 자동형변환), double형 -> int형(값이 손실되더라도 자동형변환)
- 명시적형변환
- Casting 캐스트연산자를 이용해서 변환
- ex) (double)int -> double , (String)int -> String
1 | int count = 128; |
형변환을 했는데 128이 아닌 -128이 나오고 130이 아닌 -126이 출력되었다
왜그럴까?
명시적형변환의 경우 오류가 발생할 수 있기때문이다
4. 산술연산자
- 덧셈
- 뺄셈
- 나눗셈
- 곱셈
이 중에서 나눗셈에 주의해야한다. 왜냐하면 예외발생 또는 형변환에 걸릴 수 있기때문에
1 | // 1. 예외발생 ( arithmetic exception ) |
답은 0.5가 나와야하는데 int라는 정수형데이터때문에 0만 출력된다
형변환을 한다고해도 이미 result가 0이기때문에 0을 double하니까 0.0이 된다
해결방법은 변수선언을 double로 해주면 끝!
1 | double result = a/(double)b |
5. 대입연산자
- =
- +=
- =+
- *=
- /=
예를들어
a+=b 의 의미는 a = a+b
a/=b 의 의미는 a = a/b
6. 논리연산자
- & : and연산자
- | : or연산자
- ! : not연산자. 반대의 개념
- ex)!false => true
- ex)!true => false
- ^ : nor연산자. 비트연산자 두개의 값이 같으면 false고 다르면 true.
- 주로 전자제품할때 사용하고 응용sw에서는 사용할일이 적다
- ex) true ^ false => true
- ex) true ^ true => false
7. 증감연산자
변수의 앞, 뒤에서 사용하며 값을 1증가 또는 1감소
- ++A 또는 –A (전위연산) : 변수의 값을 사용할때 1증가 또는 1감소 실행
- A++ 또는 A– (후위연산) : 변수의 값을 먼저 사용하고 나서 1증가 또는 1감소 실행
세미콜론의 위치때문에 1번과 2번의 값이 차이가 생겼다
++A는 A의 값을 변화시키지 않고 콘솔을 찍었고
A++은 A의 값을 1씩 더한 뒤(세미콜론찍고) 콘솔을 찍었다.
즉 변수의 값을 변하시키는 건 A++후위연산이다.
8. 삼항연산자
실무에선 잘 사용하지 않지만 정말 간단한 조건식이 필요할때 사용한다.
1 | 조건? 값1:값2 |
풀어서 설명하자면 조건이 true이면 값1이 출력되고 false면 값2가 출력된다
1 | int a = 1 |
두번째방법을 쓸 수는 있으나 가독성이 떨어지므로 첫번째방법을 쓰는 것을 추천한다