.dll
: Dynamic Linking Library
.exe
: 실행 파일
실행 파일 하나만으로는 실행이 어렵기 때문에 .dll 라이브러리 파일들이 필요하다.
package chap01;
public class First04 {
public static void main(String[] args) {
int v1 = 15; // 클래스 변수(global인데 자바에서는.)
if(v1>10) {
int v2; // 로컬 변수
v2 = v1 - 10;
System.out.println("v2의 값 : " + v2);
}
int v3 = v1 + v2 + 5;
}
}
중괄호 안에서 생긴 변수는 그 중괄호를 벗어나면 사라짐.
int v2;
선언을 if 중괄호 밖으로 빼도 값을 주지 않으면 계속 v2
를 알 수 없다~고 한다.package chap01;
public class First04 {
public static void main(String[] args) {
int v1 = 15; // 클래스 변수(global인데 자바에서는.)
int v2 = 0; // 뭐라도 값을 줘야 로컬에 갇히지 않나 보다.
if(v1>10) {
v2 = v1 - 10;
System.out.println("v2의 값 : " + v2);
}
int v3 = v1 + v2 + 5;
System.out.println(v3);
}
}
char
타입에 넣어도 A가 출력 된다!public class First5 {
public static void main(String[] args) {
char var1 = 'A';
char var2 = 65;
System.out.println(var1);
System.out.println(var2);
}
}
이클립스는 문자열 도중에 엔터 치면 +로 이어준다.
String var5 = "홍길동 전우치";
String var5 = "홍길동" + "전우치";
\n
: 다음 줄로 넘기기String var5 = "홍길동\n전우치";
\t
: tab하기String var5 = "홍길동\t전우치";
package chap01;
public class First6 {
public static void main(String[] args) {
float var4 = 3.14F;
double var5 = 3.14;
double var6 = 0.0000123; // 이렇게 쓰는 거 별로
double var7 = 1.23e-5; // 이게 좀 낫다. e = 10
System.out.println(var6);
System.out.println(var7);
}
}
대문자, 하이라이트 안 되니 예약어 아님.
String
강제 타입 변환은 Casting
package chap02;
public class ex01 {
public static void main(String[] args) {
// byte -> int 잘 들어감. (자리 큰 걸로 넣으니까)
byte a = 10;
int b = a;
System.out.println(b);
}
}
// byte -> int 잘 들어감. (자리 큰 걸로 넣으니까)
byte a = 10;
int b = a;
// casting
int c = 10;
byte d = (byte) c; // 괄호 = 강제 형변환
int e = 200; // 너무 큰 거 casting하면 들어가는 만큼만 넣고 자름. 이진법
byte f = (byte) e;
byte
, short
, int
에 더불어 char
까지 연산 시 int
로 바뀌어 연산됨.
byte
끼리 연산해도 자동으로 int
형으로 바뀌어 연산됨.public class ex2 {
public static void main(String[] args) {
byte a = 10;
byte b = 20;
// byte와 byte를 더하면(연산) byte 아니고 int
int result = a + b;
System.out.println(result);
}
}
long
으로 result를 잡고 long
과 다른 형을 연산.float
와 double
을 연산해도 double
이다. (double
이 기본이니까.)정수끼리는 나눗셈을 해도 실수 결과가 안 나온다. 몫만 나올 뿐.
연산 재료들의 타입을 double로 바꾼 뒤에 계산해야 함.
하나만 해도 double
로의 자동 형변환은 일어날 것.. (int
보다 double
이 커서)
double
형변환 돼서 나옴.int a = 1;
int b = 2;
double result = a / b;
System.out.println(result);
double
타입으로 바꾸면 정상적으로 나눗셈int a = 1;
int b = 2;
double result = (double) a / b;
System.out.println(result);
double
형변환 하려고 이렇게도 한다.int a = 1;
int b = 2;
double result = a * 1.0 / b; // 1.0은 실수형이니까
System.out.println(result);
우클 - refactor - rename
throws Exception
public static void main(String[] args) throws Exception {
int a;
a = System.in.read();
System.out.println(a);
}
}
자바에서 데이터타입이라고 안하고? 객체 타입, 클래스 타입? 이라고 한다.
Scanner scanner = new Scanner(System.in);
String e = scanner.nextLine();
String d = "Hello";
System.out.println( e == d ); // 주솟값 비교
System.out.println(e.equals(d)); // 이래야 값을 비교
a = 1;
a = a + 1; // 이거랑
a += 1; // 이거랑 같음
a++
&
와 &&
의 차이?
&는 두 조건을 무조건 검사하는것이고, &&는 첫번째 조건이 참일때만 검사하는것
출처: https://kangwoo.tistory.com/36 [오늘은 어디로 갈까...:티스토리]
기본 타입들은 그냥 ==
로 하면 되는데,
참조 타입인 String은 .equals()
메소드 사용.
String strVar1 = "BABA"
String strVar2 = "BABA"
strVar1.equals(strVar2)
!strVar1.equals(strVar2)
? :
int score = 95;
char grade = (score>90) : 'A' : 'B';
위는 아래와 같다
int score = 95;
char grade;
if(score > 90) {
grade = 'A';
} else {
grade = 'B';
}
int score = 85;
char grade = (score>90)? 'A' : ( (score>80)?'B':'C' );
System.out.println(score + "점은 " + grade + "등급입니다.");
int a = 3;
if( a > 1 ) {
System.out.println("aa");
System.out.println("bb");
}
if(a>2) {
System.out.println("cc");
}
System.out.println("이것도 실행됨.");
if 다음에 else로 나누는 게 좋다 (이유는...?? 못들었어ㅠ)
// 키보드로 점수 입력, 80점 이상은 합격, 그 외는 불합격 출력
Scanner scanner = new Scanner(System.in);
System.out.print("점수 입력: ");
int score = scanner.nextInt();
String result = (score >= 80)? "합격" : "불합격";
System.out.println(result);
Math.random()
쓰기. (import 필요 없나..? 그냥 되더라.)
// 랜덤하게 숫자 꺼내기
double number = Math.random();
// 0 < Math.random() < 1
// 0 < Math.random() * 6 < 6
// 1 < Math.random() * 6 + 1 < 7
// 실수 나오니까 강제 형 변환
// 1 < (int) (Math.random()*6 + 1) < 7
int number1 = (int) (Math.random()*6 + 1);
System.out.println(number1);
if-else와 switch문은 90% 같고, 용도는 100% 같다.
Scanner scanner = new Scanner(System.in);
String str = scanner.nextLine();
switch (str) {
case "과자":
System.out.println("후레쉬베리");
break;
case "초코":
System.out.println("가나");
break;
case "사탕":
System.out.println("박하");
break;
case "젤리":
System.out.println("하리보");
break;
default:
System.out.println("먹을 게 아닙니다.");
break;
for (int m = 2; m <= 9; m++) {
System.out.println("*** " + m + "단 ***");
for (int n = 1; n <= 9; n++) {
System.out.println(m + " x " + n + " = " + (m*n));
다른 것보다
if
문for
문while
문이 중요.
break
: 멈추고 루프 탈출
continue
: 멈추고 위로 가서 이어서