반응형
컴파일 언어 VS 인터프리터 언어
- 컴파일 언어
- 소스 → 컴파일 (컴파일러) → 기계어
- C, C++, …
- 비교적 옛날 언어
- 빠르다.
- 실행 파일이 OS마다 달라짐 (리눅스, 윈도우 따로 실행)
- Java는 컴파일 언어가 아니다.
- 인터프리터 언어
- 소스 → 실행
- 컴파일 과정 생략
- 비교적 최신 언어
- 느리다.
- 플랫폼 종속성이 낮다. (OS 영향 없음)
- JavaScript, Python, …
- JIT (Just In Time)
- 컴파일 언어의 장점 + 인터프리터 언어의 장점
- 소스 → 바이너리 파일 → JVM 실행
- 양쪽의 단점도 다 가지고 있다.
- 컴파일 언어보다는 느리고, 인터프리터 언어보다는 빠르다.
- JDK
- 자바 개발 도구
- JRE
- 자바 실행 환경
프로그램
- 순서에 의해 나열
주석
- 주석은 바이너리 컴파일 제외
- // (행 주석)
- 한 줄 주석
//System.out.println("Hello World"); - / / (범위 주석)
- 여러 줄 주석
/* System.out.println(Arrays.toString(b)); System.out.println(Arrays.toString(a)); */ - / / (도큐먼트 주석)*
- API 도큐먼트 생성 시 사용
- 함수 위에서 /** 입력 후 엔터를 누르면 자동으로 @Param, @Return 과 같은 주석이 추가됨
/** * * @param a * @param b * @return */ public static int add(int a, int b) { int sum = 0; return sum; }
변수
- 하나의 값을 저장할 수 있는 메모리 번지에 붙여진 이름
- 값이 변하는 경우
- 반대 개념은 상수
- 여러 군데 사용한다면 굳이 변하지 않아도 사용하면 좋음
- 엄격한 타입 체크 (정수형 타입은 정수만)
- 클래스명은 대문자, 변수명은 소문자로 선언
package ch01;
public class Variable {
public static void main(String[] args) {
// 변수 선언
// 타입 변수명;
int a;
// 대입
a = 10;
System.out.println(a);
// 변수 선언 + 초기화
int b = 10;
// 초기화하지 않으면 사용 불가
int c; // 에러
// 다른타입 대입 불가
int d = 3.14; // 에러
// 동일한 타입
// 정수가 실수로 자동 변환
double e = 3.14; // 3.0
double f = 3;
}
}
- 변수 명
- camelCase
- 소문자로 시작하되, 두 번째 단어부터 첫 자는 대문자로 구분
- snake_case
- 언더바( _ )를 이용하여 단어 사이를 구분
- PascalCase
- 대문자로 시작하되, 단어의 첫 자는 대문자로 구분
- camelCase
타입 (자료형)
- 기본 자료형
- 정수
- byte
- short
- char
- int
- long
- 뒤에 l 붙여야 함
package ch01; public class Variable { public static void main(String[] args) { Variable f; // byte 타입의 범위 -128 ~ 127 byte g = -128; // 가장 자주 사용 int h = -33000; // 연산자 int로 변환 byte i = g + 1; // -127이 될 수 없음 (우항이 int 취급) // 21억이 넘을 경우 long // long = int (형 변환) long j = 10; // 자동 형 변환 long k = 10l; // 숫자 뒤에 l을 기재해야 long 타입으로 취급 } } - 실수
- double
- float
- 뒤에 f 붙여야 함
- 문자
- char
package ch01; public class Variable { public static void main(String[] args) { // 문자 char m = "A"; // 에러 char n = 'A'; // 홑 따옴표, 65 int o = n + 1; // 66, char는 내부적으로 정수로 되어 있어 int 연산이 가능 // 문자열 String s = "A"; // 쌍 따옴표 } } - 논리
- boolean
package ch01; public class Variable { public static void main(String[] args) { // 논리 타입 // true, false boolean p = true; int x = 10; boolean result = x == 20; // 10 != 20 -> false } }
- 정수
- 참조 자료형
- 배열
- [ ]
- 리스트
- List
- 클래스
- class
- String
- 인터페이스
- interface
- 배열
Type mismatch
- 지정된 타입의 범위를 벗어나거나, 올바르지 않은 타입을 대입할 경우 발생되는 에러
이스케이프 문자
- 탈출 시켜서 문자열에 영향을 주지 않는 문자
- \”
- 큰 따옴표 포함
- \’
- 작음 따옴표 포함
- \\
- \ 문자 포함
- \t
- tab(4칸)만큼 띄움
- \n
- 줄 바꿈
package ch01;
public class Variable {
public static void main(String[] args) {
//escape
String greet = "저는 \\"홍길동\\" \\\\입니다"; // 저는 "홍길동" \\입니다
}
형 변환
- 자동 형 변환
- 작은 범위의 값이 넓은 범위의 변수로 대입
- 강제 형 변환
- 넓은 범위의 값이 작은 범위의 변수로 대입
package ch01;
public class Variable {
public static void main(String[] args) {
// 형 변환 : 타입 변환
// 자동형변환 (묵시적, 암시적): 작은 범위의 값이 넓은 범위의 변수로 대입
int a = 0;
double q = a; // int -> double
// 강제형변환 (명시적): 넓은 범위의 값이 작은 범위의 변수로 대입
a = (int)q; // 바꾸고자하는 타입을 지정
}
}
- 문자열을 기본 타입으로 변환
- 자료형이름.parse자료형이름(문자열);
int n = Integer.parseInt(”10”) // 10 - 기본 타입을 문자열로 변환
- String.valueOf(기본타입값);
String str = String.valueOf(10) // "10"- 꼼수
String s = 10 + ""; // "10", 문자열의 덧셈은 문자열이므로
package ch02;
public class PrimitiveAndStringConversionExample {
public static void main(String[] args) {
int value1 = Integer.parseInt("10");
double value2 = Double.parseDouble("3.14");
boolean value3 = Boolean.parseBoolean("true");
System.out.println("value1 : " + value1);
System.out.println("value2 : " + value2);
System.out.println("value3 : " + value3);
System.out.println();
String str1 = String.valueOf(10);
String str2 = String.valueOf(3.14);
String str3 = String.valueOf(true);
System.out.println("str1 : " + str1);
System.out.println("str2 : " + str2);
System.out.println("str3 : " + str3);
}
}
출력 결과
value1 : 10 // int
value2 : 3.14 // double
value3 : true // boolean
str1 : 10 // String
str2 : 3.14 // String
str3 : true //String
연산
- 문자열 덧셈
- 문자열을 더하면 두 문자열을 연결 시킨 값을 리턴한다.
출력
- println
- 한 줄 점프
- print
- 이어서 쓰기
- 문자열 포맷
- %s
- 만능
- 문자열
- %d
- 정수
- %f
- 실수
- %s
- BufferedWriter
입력
- Scanner
- 비교적 느림
package ch02;
import java.util.Scanner;
public class PrimitiveAndStringConversionExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("x 값 입력: ");
String strX = scanner.nextLine();
int x = Integer.parseInt(strX);
System.out.print("y 값 입력: ");
String strY = scanner.nextLine();
int y = Integer.parseInt(strY);
int result = x + y;
System.out.println("x + y: " + result);
System.out.println();
while(true) {
System.out.print("입력 문자열: ");
String data = scanner.nextLine();
if(data.equals("q")) {
break;
}
System.out.println("출력 문자열 " + data);
System.out.println();
}
System.out.println("종료");
}
}
출력 결과
x 값 입력: 5
y 값 입력: 5
x + y: 10
입력 문자열: 5
출력 문자열 5
입력 문자열: 5
출력 문자열 5
입력 문자열: 5
출력 문자열 5
입력 문자열: 10
출력 문자열 10
입력 문자열: 6
출력 문자열 6
입력 문자열: q
종료
- BufferedReader
- 비교적 빠름
문자열 비교
- 문자열 비교는 equals 사용
- 항상 return값은 true 또는 false
package ch02;
public class PrimitiveAndStringConversionExample {
public static void main(String[] args) {
String name1 = "홍길동";
String name2 = "홍길동";
String name3 = new String("홍길동");
System.out.println(name1 == name2); // true
System.out.println(name2 == name3); // false
System.out.println(name2.equals(name3)); // true
}
}
- null은 값 자체가 없으므로, 비교 불가
package ch02;
public class PrimitiveAndStringConversionExample {
public static void main(String[] args) {
String name1 = null;
String name2 = "String";
System.out.println(name1.equals(name1)); // error, NullPointException
System.out.println(name2.equals(null)); // true
}
}
메모
- 실행은 bin이 없으면 불가능하다.
- 실행될 때 나는 에러는 런타임 에러
- 실행 전에 나는 에러는 컴파일 에러
- 컨벤션
- 개발자들끼리의 약속 (변수 명, 포맷 …)
- 자바 13 이상부터 여러 줄 큰 따옴표를 쓸 수 있다.
- package ch01; public class Variable { public static void main(String[] args) { String greet2 = """ 저는 홍길동 입니다 """; } } 출력 결과 저는 홍길동 입니다
- JDK 11 이상에서 타입 추론이 추가되었다.
- package ch01; public class Variable { public static void main(String[] args) { // 타입 추론 var age = 30; // 정수 var age2 = "30"; // 문자열 } }
- 변수의 범위는 선언된 위치의 중괄호 안에서만 (Scope)
캠퍼스 핵데이 Java 코딩 컨벤션
중괄호({,}) 는 클래스, 메서드, 제어문의 블럭을 구분한다. 5.1. K&R 스타일로 중괄호 선언 클래스 선언, 메서드 선언, 조건/반복문 등의 코드 블럭을 감싸는 중괄호에 적용되는 규칙이다. 중괄호
naver.github.io
728x90
반응형
'Java' 카테고리의 다른 글
| 이것이 자바다 - 챕터4 연습 문제 (0) | 2025.04.05 |
|---|---|
| 이것이 자바다 - 챕터3 연습 문제 (0) | 2025.04.05 |
| 4/4 공부 기록 - 참조 타입, 클래스 (8) | 2025.04.05 |
| 4/3 - 변수, 조건문, 반복문 (0) | 2025.04.05 |
| 4/1 - 공부 기록, Java 시작하기 (0) | 2025.04.05 |