단축키
- command +shift + L (단축키 목록)
- command +D (한줄삭제)
- command +option+down (행단위 복사)
- option+command+A (멀티 컬럼 편집)
- option+up,down(행단위이동
- control + i(자동들여쓰기)
- control + / (주석처리)
- /*
~*/ (여러 행 모두 주석처리 감싸기) - control+space 자동완성
- preferences에서 content assist 등록에 .a~z적어놓기
알아두기
- printin() - 출력후 줄바꿈안함
- println() - 출력후 줄바꿈
변수
변수란?
- 하나의 값을 저장할수있는 메모리 공간
- 해당 메모리에 값을 저장하고 주소 대신 변수로 이름을 붙임.
변수 선언
변수 타입 변수이름;
int age- 이유:값을 저장할 공간을 마련하기위해!!
변수에 값 저장
- 변수에 값 저장하기
1 | int age; //정수(int) 타입의 변수 age선언 |
- 변수의 초기화
변수에 처음으로 값을 저장
1 | int x = 0; |
- 변수의 종류
- 클래스 변수
- 인스턴스 변수
- 지역 변수(지역 변수는 읽기 전에 꼭! 초기화해야한다.)(자동 초기화 X)
변수의 값 읽어오기
- 변수 값이 필요한 곳에 변수 이름을 적는다
변수 타입
변수타입
- 변수의 타입은 저장할 값의 타입에 의해 결정된다.
- 저장할 값의 타입과 일치하는 타입으로 변수를 선언
1 | int age = 25; // int 는 정수타입 |
변수, 상수, 리터럴
- 변수(variable): 하나의 값을 저장하기 위한 공간 (변경가능)
- 상수(constant): 한번만 값을 저장 가능한 변수 (변경 불가)
- 리터럴(literal): 그 자체로 값을 의미하는 것 (기존 일반적 상수와 개념 같음)
1 | int score = 100; |
- 리터럴(100,200,A,abc)
- 변수( score, ch, str)
- 상수(MAX)
리터럴의 타입과 접미사
- 리터럴에 따라 저장할 값의 타입 구별됨
- 정수형의 Long타입만 접미사 L
(나머지는 int 타입이고 byte, short리터럴은없다) - 실수형의 float타입 접미사 f
(double타입은 생략가능, 접미사 d)
1 | boolean power = true; //false, true만 가능 |
- 기본적으로 변수의 타입과 리터럴의 타입이 일치해야함
- 일치하지 않지만 허용되는 경우도 존재함
1 | 10. == 10.0 //d타입 |
변수와 리터럴의 타입 불일치
- 범위가 변수(그릇)>리터럴(물건) 인 경우 가능
1 | int i = 'A' ; // int> char 저장범위 더 넒음, 문자코드인 65가 저장됨 |
- 범위가 변수<리터럴 인 경우 에러
1 | int i = 30_0000_0000; // int의 범위 (+-20억) 벗어남(L안붙이면 int니까..) |
- byte, short 변수에 int리터럴 저장가능
(단, 변수의 타입의ㅏ 범위 이내이여야 함
1 | byte b = 100; // 가능, byte의 범위 -128~127에 속함 |
문자와 문자열
- 문자 char는 반드시 하나의 문자만 가능하고
- String은 문자열을 저장가능하다
- 문자열은 연속된 여러문자지만
- String은 빈문자열, 문자하나도 저장가능
- 문자열 + any-type ⇒ 문자열
any-type + 문자열 ⇒ 문자열
””+7+7>>”77”
7+7+””>>”14”
1 | char ch = 'A'; |
두 변수의 값 바꾸기
- 새로운 하나의 변수 필요함
1 | String y = "ABC",z = "sds"; |
값의 타입
- 기본형 값(data)
- 문자(char)
- 숫자
- 정수(byte, short, int, long)
- 실수(float, double)
- 논리(bollean)
기본형과 참조형
- 기본형
- (오직 8개)
- (char, byte,short, int, long, float, double, bollean)
- 실제 값을 저장
- 참조형
- (기본형을 제외한 나머지)
- (String, System등)
- 메모리 주소를 저장(4byte 또는 8byte)
- (32bit JVM은 40억byte 메모리사용가능>>실제사용은 2GB남짓
- 64bit JVM은 160경 byte 메모리사용가능
- 참조변수는 객체의 주소를 저장하기 위한것
자바의 기본형 종류와 범위
기본형
- 논리형: ture, false
- 문자형: 문자를 저장하는데사용되며, 변수당 하나의 문자만을 저장 가능
- 정수형: 정수 값을 저장하는데 사용된다. 주로 int, long
- 실수형: 실수 값을 저장하는데 사용된다. float와 double
- default는 각각 int, double
기본형 표현범위(1/3)
- n비트로 표현할수있는 값의 개수: 2^n개
- n비트로 표현할 수있는 부호없는 정수의범위(0을 포함): 0~ 2^n-1
- n비트로 표현할 수있는 부호 있는 정수의 범위(0을 포함): -2^(n-1)~2^(n-1) -1
기본형 표현범위(2/3)
- byte타입은 1bit의 부호비트 + 7bit 저장공간
-1280+127 ⇒ 256개 - short 1bit의 부호비트 + 15bit 저장공간
-327680+32767 ⇒ 2^16개 표현가능 - char 16bit로 구성
0~65535 ⇒ 2^16개 - int 1bit의 부호비트 + 31bit 저장공간 (약 -20억~20억)
-2^(32-1) ~0 ~+2^(32-1) -1 ⇒ 2^32개 - long 1bit의 부호비트 + 63bit 저장공간
-2^(64-1) ~0 ~+2^(64-1) -1 ⇒ 2^64개 - 각타입의 크기만 알면 구할수있다. java 정수형에는 모두 부호가존재
기본형 표현범위(3/3)
- 부호, 지수(10^n), 가수로 나눠서 저장되기때문에, 훨씬더 큰 수를 기록가능함
printf를 이용한 출력
println() 의 단점 (출력형식 지정불가)
- 실수의 자리수 조절 불가
10.0/3; ⇒ 3.33333333 - 10진수로만 출력된다.
8진수, 16진수로 출력을 10진수변환됨
- 실수의 자리수 조절 불가
printf()로 출력형식 지정가능 (”지시자”사용을 통해)
1 | System.out.printf("%.2f", 10.0/3); //소수점둘째자리까지 출력 |
printf()의 지시자(1/3)
1 | System.out.printf("age:%d year:%d%n", 14, 2017); //순서대로 들어가며, %n개행문자 쓰기 |
%n
개행문자 활용!!
printf()의 지시자(2/3)
printf()의 지시자(3/3)
- 10진수 %d를 지시자로 활용, 자리수 지정가능
화면에서 입력받기 - Scanner
Scanner란?
- 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
1 | import java.util.* |
계수기(counter)
- 오버플로우 발생시, 이진수 0000>> 1111>>오버플로우 발생>>0000으로됨
- 최대값 +1 ⇒최소값
- 최소값 -1 ⇒최대값
- 결국 순환하게됨
- 똑같이 부호없는정수(4bit) 0 -1 ⇒15
- 똑같이 부호있는정수(4bit) -8 -1 ⇒+7
타입간의 변환방법
문자와 숫자간의 변환
- 문자’0’을 더하면 숫자가됨
- 문자’0’을 빼면 문자가됨
문자열로 변환
- 문자열 + any-type ⇒ 문자열
- any-type + 문자열 ⇒ 문자열
문자열을 숫자로 변환
- “3” ⇒ 3
Integer.parseInt(”3”) 사용 - “3.4” ⇒ 3.4
Double.parseDouble(”3.4”) 사용
문자열을 문자로 변환
- “3”⇒’3’
”3”.charAt(0)
- 순서대로 [3,4,4,31,51] 출력됨