728x90
반응형
강의를 들으면서 기억해야 할 내용을 개인적으로 적어보았다
자바의 특징
- 배우기 쉬운 객체지향 언어
- 자동 메모리 관리
- 멀티 쓰레드를 지원
- 풍부한 라이브러리
- 운영체제에 독립적
자바 가상 머신(JVM)
자바 프로그램이 실행되는 가상 컴퓨터
한번 작성하면 어디서든 실행 (윈도우, OSX, Linux)
자바 API
- Java로 프로그램을 만드는데 필요한 주요 기능을 미리 만들어서 제공
- www.oracle.com에서 압축파일을 다운받아 사용
단축키 목록
- ctrl + shift + L : 단축키 전ㅊ체 목록 보기
- ctrl + +/- : 폰트 크기 증가/감소
- ctrl + d : 한줄 삭제
- ctrl + alt + ↓ : 행단위 복사
- ctrl + i : 자동 들여쓰기
- ctrl + space : 자동완성
- alt + shift + a : 멀티컬럼 편집
- alt + ↑/↓ : 행단위 이동
변수
- 하나의 값을 저장할 수 있는 메모리 공간
- 변수의 선언 : 값을 저장할 공간을 마련
- 방법 : '변수타입 변수이름 ;'
변수의 타입
- 변수 : 하나의 값을 저장하기 위한 공간
- 상수 : 한 번만 값을 저장 가능한 변수
- 리터럴 : 그 자체로 값을 의미 (원래의 상수 개념)
final int Max = 100; // MAX는 상수 int Max = 200; // 에러
리터럴의 접두사와 접미사
int i = 100; // 10진수
int oct = 0100; // 8진수
int hex = 0x100; //16진수
float f = 3.14f;
double d = 3.14d;
10. → 10.0
.10 → 0.10
10f → 10.0f
1e3 → 1000.0 // e : 10의 n제곱
변수와 리터럴의 타입 불일치
- 범위가 '변수 > 리터럴' 인 경우 OK
- int i = 'A'; // int > char
- long l = 123; // long > int
- double d = 3.14f; // double > float
- 범위가 '변수 < 리터럴' 인 경우 에러
- int i = 30_0000_0000; // int의 범위 벗어남
- long l = 3.14f; // long < float
- float f = 3.14d; // float < double
- byte, short 변수에 int 리터럴 저장 가능
- 단, 변수의 타입 범위 이내여야 한다
- byte b = 100; // OK, byte 범위(-128~127)에 속함
- bye b = 128; // 에러, byte 범위를 벗어남
문자, 문자열 리터럴, 문자열 결합
- char는 하나의 문자에 대해서만 사용
- string을 다수의 문자에 대해서 사용
-
system.out.println(""+7+7) // 77 system.out.println(7+7+"") // 14
두 변수 바꾸기
- 두 변수를 바꾸기 위해서는 여분의 변수 공간이 더 필요하다
printf를 이용한 출력
System.out.printf("%.2f", 10.0/3); // 3.33
System.out.printf("%d", 0x1A); // 26
System.out.printf("%x", 0x1A); // 1A
지시자 | 설명 |
---|---|
%b | boolean 형식으로 출력 |
%d | 10진(demical) 형식으로 출력 |
%o | 8진(octal) 형식으로 출력 |
%x, %X | 16진(hexa-demical) 형식으로 출력 |
%f | 부동 소수점(floating-point) 형식으로 출력 |
%e, %E | 지수(exponent) 표현식의 형식으로 출력 |
%c | 문자(character)로 출력 |
%s | 문자열(string)로 출력 |
System.out.printf("age:%d", age); // 줄바꿈 x
System.out.printf("age:%d%n", age); // %n : 출력 후 줄바꿈을 한다
printf()의 지시자
- 정수를 10진수, 8진수, 16진수로 출력
-
System.out.printf("%d", 15); // 15 10진수 System.out.printf("%o", 15); // 17 8진수 System.out.printf("%x", 15); // f 16진수 System.out.printf("%s", Integer.toBinaryString(15)); // 1111 2진수
-
- 8진수와 16진수에 접두사 붇이기
-
System.out.printf("%#o", 15); // 017 System.out.printf("%#x", 15); // 0xf System.out.printf("%#X", 15); // 0XF
-
- 실수 출력을 위한 지시자 %f - 지수형식(%e), 간략한 형식(%g)
-
float f = 123.4567890f; System.out.printf("%f", f); // 123.456787 소수점 아래 6자리 System.out.printf("%e", f); // 1.2345678e+02 지수형식 System.out.printf("%g", 123.46789); // 123.457 간략한 형식 System.out.printf("%g", 0.0000001); // 1.00000e-8 간략한 형식
-
화면으로부터 입력받기
- Scanner : 화면으로부터 데이터를 입력받는 기능을 제공하는 클래스
- Scanner를 사용하기 위해 import문을 추가해야 하고, Scanner 객체를 생성하고 사용해야 한다
-
int num = scanner.nextInt(); // 화면에서 입력받은 정수를 num에 저장 String input = scanner.nextLine(); // 화면에서 입력받은 내용을 input에 저장 int num = Integer.parseInt(input); // 문자열(input)을 숫자(num)로 변환
-
정수형의 오버플로우
- 표현가능한 범위를 넘어가는 것
타입간의 변환방법
- 문자와 숫자간 변환 : "3"(문자) ↔ 3(숫자)
- 문자열로의 변환 : 3 + "" or '3' + "" → "3", 빈 문자열을 더해주면 된다
- 문자열을 숫자로 변환 : "3" → 3, Integer.parseInt("3")
- 숫자, 문자, 문자열 구분해서 전환하는 방법 익히기
형변환 연산자, 자동 형변환
변환 | 수식 | 결과 |
---|---|---|
int → char | (char)65 | 'A' |
char → int | (int)'A' | 65 |
float → int | (int)1.6f | 1 |
int → float | (float)10 | 10.0f |
- 자동형변환 : 컴파일러가 자동으로 형 변환을 적용
-
float f = 1234: // int 타입 값을 float 타입 변수에 저장
-
반올림
- Math.round() : 실수를 소수점 첫 째 자리에서 반올림한 정수를 반환
-
double pi = 3.141592; System.out.println(Math.round(pi*1000)/1000); // 3 System.out.println((double)Math.round(pi*1000)/1000); // 3.142
비교 연산자
- 문자열을 비교할 때는 == 대신 equals()를 사용해야 한다 : 올바른 값이 도출되지 않을 수도 있다
-
String str1 = "abc"; String str2 = "abc"; System.out.println(str1==str2); // true System.out.println(str1.equals(str2)); // true String str1 = new String("abc"); String str2 = new String("abc"); System.out.println(str1==str2); // false System.out.println(str1.equels(str2)); // true
논리 연산자
- x는 10보다 크고 20보다 작다
- x > 10 && x < 20 (10<x<20 처럼 사용하면 안됨!)
논리 부정연산자
- ! : not의 의미를 갖는다
- 문자 ch가 소문자가 아니다
- ch < 'a' || ch > 'z' 보다 !('a' <= ch && ch <= 'z') 처럼 적는 것이 직관적이다
조건 연산자 ? :
-
조건식이 True 일때와 False일 때 반환값을 달리한다result = (x > y) ? x : y ; // 괄호 생략 가능
조건문과 반복문
- 조건문 : 조건을 만족할 때만 {}를 수행
- 반복문 : 조건을 만족하는 동안 {}를 수행
- 조건문과 반복문을 제어문(flow control statement)라고 함
if < (score>60) {
System.out.println("텍스트")''
}
int i = 10;
while (i-- > 0) {
System.out.println(i);
}
switch문
- 처리해야 하는 경우의 수가 많을 때 유용한 조건문
- if문은 조건식에 True/False만 가능하지만 switch문은 조건을 다양하게 활용할 수 있음
switch (조건식) {
case 값1 :
..
break;
case 값2 :
..
break;
}
- 다음과 같이 사용도 가능
switch(month) {
case 3: case 4: case 5:
System.out.println("현재의 계절은 봄입니다.")
case 6: case 7: case 8:
System.out.println("현재의 계절은 여름입니다.")
..
}
임의의 정수 만들기
- Math.random() : 0.0 ~ 1.0 사이 임의의 double 값을 반환
- Math.random()을 활용해 원하는 범위 안에 난수를 생성할 수 있다
for 문
- for문 사용에 대해 정형화된 구조 이해하기
int i; // scope(범위) - 선언 위치부터 선언된 블럭의 끝까지
for (i = 1; i <= 10; i++){
System.out.println(i);
}
- 다음과 같이도 활용할 수 있다
for (int i = 1, j = 10; i <= 10; i++, j--){
System.out.println(i+", "+j);
}
- 추가 공부하고 업데이트 하기 -
'Algorithm Study > Java' 카테고리의 다른 글
자바에서 static 변수의 사용 (0) | 2023.05.22 |
---|---|
[BOJ JAVA] #2750 수 정렬하기 (0) | 2023.02.19 |
[코드업 자바] # 1096 [기초-2차원배열] 바둑판에 흰 돌 놓기 (0) | 2021.12.27 |
[코드업 자바] # 1095 [기초-1차원배열] 이상한 출석 번호 부르기3 (0) | 2021.12.27 |
[코드업 자바] # 1093 [기초-1차원배열] 이상한 출석 번호 부르기1 (0) | 2021.12.26 |