Ⅰ. 생성자
-- 생성자(==constructor)란?
객체를 생성(인스턴스화)할 때마다 자동적으로 호출되어져 실행되어지는 어떠한 행위를 기술한 것이라고 생각하면 된다.
▶▶ 생성자(==constructor)의 지켜야 할 규칙
1) 생성자(==constructor)의 이름은 반드시 클래스명과 같아야 한다.
2) 생성자(==constructor)는 반환타입(리턴타입)을 기술하면 안 된다.
-- java에서 괄호를 사용하는 것은 (1) 생성자와 (2) 메소드 뿐이다.
-- 생성자는 클래스명과 똑같이 써야 하고, 메소드는 다르게 쓸 수 있다.
▷ 파라미터(매개변수)가 있는 생성자 만들기
-- 괄호 속에 들어오는 변수를 파라미터(매개변수)라고 부른다.
public class Member {
String userid;
String passwd;
String name;
int age;
int point;
public Member(String userid, String passwd, String name) {
this.userid = userid;
this.passwd = passwd;
this.name = name;
}
public Member() {
// 기본생성자
}
}
-- 파라미터(==매개변수)가 있는 생성자가 존재하는 순간 기본생성자는 자동적으로 제거가 되어진다.
-- 그러므로 파라미터(==매개변수)가 있는 생성자를 만들면 기본 생성자를 꼭 만들어 주어야 한다.
▶▶
this.userid = userid;
this.passwd = passwd;
this.name = name;
-- 지역변수이름과 인스턴스 변수이름 또는 static 변수이름이 같을 경우, 지역변수이름을 우선하므로 인스턴스 변수를 불러오기 위해서는 this를 사용한다.
-- this란 인스턴스를 가리키는 대명사이므로 즉, this가 인스턴스이다.
▷ 파라미터가 있고 리턴값이 없는 메소드 생성하기
-- void : 해당 메소드를 실행만 해 줄 뿐 리턴시켜 주는 값이 없음을 말한다.
void setAgePoint(int age, int point) { this.age = age; this.point = point; }
패키지, 클래스, 인스턴스 변수 모두 위와 동일
▷ 파라미터가 없고 리턴값이 있는 메소드 생성하기
String getMemberInfo() {
String result = ">> 회원정보 << \n" +
"1. USERID : " + userid + "\n" +
"2. PASSWORD : " + passwd + "\n" +
"3. NAME : " + name + "\n" +
"4. AGE : " + age + "\n" +
"5. POINT : " + point + "\n";
return result;
}
패키지, 클래스, 인스턴스 변수 모두 위와 동일
▷ 파라미터가 있고 리턴값이 있는 메소드 생성하기
int setBonus(int num){
point = point + (num*10);
return point;
}
패키지, 클래스, 인스턴스 변수 모두 위와 동일
Ⅱ. 형변환
1. 자동 형변환(묵시적 형변환)
-- 데이터타입의 크기가 작은 것에서 크기가 큰쪽으로는 자동적으로 형변환이 발생된다.
▷ byte(1byte) → short(2byte) → int(4byte) → long(8byte)
개미 병아리 강아지 사람
개미집 병아리집 강아지집 안방
-- 개미(1byte)는 병아리집(2byte)에 들어가기 쉽지만 강아지(4byte)는 병아리집에 들어가기 어렵다. (2byte)
-- 따라서 크기가 큰 것에서 작은 것으로 가려면 강제적으로 형변환을 해 주어야 한다.
-- float(4byte) → double(8byte)
→ 정수타입은 실수타입으로 자동형변환이 발생한다.
-- char(2byte)
→ char타입은 int형으로 자동형변환이 발생한다.
2. 강제 형변환
-- 데이터타입의 크기가 큰 것을 작은 것으로 강제적으로 형변환 시키는 것을 말한다.
-- 크기가큰타입 = (크기가큰타입)크기가작은타입
▷ 정수 = (정수)실수
-- 실수를 정수로 강제적으로 형변환한다.
-- 소수부는 무조건 절삭을 해버리고 정수만 나온다.
int a = 5000;
short b = (short)a;
System.out.println("b => " +b);
▷ 결과
b => 5000
float ft = 1.234567F;
long ln = (long)ft;
System.out.println("ln => " + ln);
▷ 결과
ln => 1
double db = 93.567;
System.out.println((int)db);
▷ 결과
db => 93
Ⅲ. 연산자
1. 산술 연산자
-- +, -, *, /, %(나머지)
int n = 10;
System.out.println("n+3=" + (n+3));
System.out.println("n-3=" + (n+3));
System.out.println("n*3=" + (n*3));
System.out.println("n/3=" + (n/3));
System.out.println("n/3=" + ((double)n/3));
System.out.println("n%3=" + (n%3));
-- "/" 나누기를 할 때 정수를 정수로 나누면 몫(정수)가 나오고, 실수를 정수로 나누거나 정수를 실수로 나누면 실수가 나온다.
-- "%" 이 표시는 10을 3으로 나누었을 때의 '나머지'를 나타낸다.
2. 증감 연산자
-- 후위증감연산자(a++, b--)는 다른 연산을 다 마친 이후에 1씩 증감한다.
-- 전위증감연산자(++a, --b)는 맨 먼저 1씩 증감을 마친 이후에 다른 연산을 한다.
int a = 7;
int b = 3;
a++; // a++; 은 a=a+1; 와 같다. 즉, a=7+1; 이다.
System.out.println("a=" + a);
b--; // b--; 은 b=b-1; 와 같다. 즉, b=3-1; 이다.
System.out.println("b=" + b);
++a; // ++a; 은 a=a+1; 와 같다. 즉, a=8+1; 이다.
System.out.println("a=" + a);
--b; // --b; 은 b=b-1; 와 같다. 즉, b=2-1; 이다.
System.out.println("b=" + b);
▷결과
a=8
b=2
a=9
b=1
int x=10, y=10;
int z=++x;
System.out.println("z => " + z); // z => 11
System.out.println("x => " + x); // x => 11
z=y++;
System.out.println("z => " + z); // z => 10
System.out.println("y => " + y); // y => 11
▷ 결과
z => 11
x => 11
z => 10
y => 11
3. 논리 연산자
-- &, |, &&, ||
▷ &, &&
수학에서는 T ∧ T ∧ F ==> F : 모든 게 참일 때 참(AND)
수학에서는 F ∧ T ∧ F ==> F : 처음부터 거짓이라면 뒤에 무엇이 오든 상관없이 무조건 거짓
수학에서는 T ∧ T ∧ T ==> T
▷ |, ||
수학에서는 T ∨ T ∨ T ==> T : 하나만 참이면 참(OR)
수학에서는 F ∨ T ∨ F ==> T : 처음부터 참이라면 뒤에 무엇이 오든 상관없이 무조건 참
수학에서는 F ∨ F ∨ F ==> F
int c=50, d=60, e=70;
boolean bool = (c>d) && (d<e) && (c==e); // F && ==> 처음부터 거짓이므로 뒤에 보지 않아도 거짓
System.out.println("bool => " + bool);
bool = (c<d) && (d<=e) && (c==e); // T && T && F ==> 거짓
System.out.println("bool => " + bool);
bool = (c<d) && (d<=e) && (c!=e); // T && T && T ==> 참
System.out.println("bool => " + bool);
▷ 결과
bool => false
bool => false
bool => true
int c=50, d=60, e=70;
bool = (c>d) || (d<e) || (c==e); // F || T ==> 하나가 참이므로 참
System.out.println("bool => " + bool);
bool = (c<d) || (d<=e) || (c==e); // T || F ==> 처음부터 참이므로 참
System.out.println("bool => " + bool);
bool = (c>d) || (d>e) || (c==e); // F || F || F ==> 거짓
System.out.println("bool => " + bool);
▷ 결과
bool => true
bool => true
bool => false
-- &&, || 은 처음 하나가 거짓 또는 참이라면 뒤에는 고려하지 않는다.
bool = (c>d) & (d<e) & (c==e); // F&T&F
System.out.println("bool => " + bool);
bool = (c<d) & (d<=e) & (c==e); // T&T&F
System.out.println("bool => " + bool);
bool = (c<d) & (d<=e) & (c!=e); // T&T&T
System.out.println("bool => " + bool);
▷ 결과
bool => false
bool => false
bool => true
bool = (c>d) | (d<e) | (c==e); // F|T|F
System.out.println("bool => " + bool);
bool = (c<d) | (d<=e) | (c==e); // T|T|F
System.out.println("bool => " + bool);
bool = (c>d) | (d>e) | (c==e); // F|F|F
System.out.println("bool => " + bool);
▷ 결과
bool => true
bool => true
bool => false
-- &, | 은 처음 하나가 거짓 또는 참이라도 계속하여 연산 과정을 거친다.
문제1 ▷▷
int i=1; // i=>1
int j=i++; // j=>1, i=>2
if((i > ++j) & (i++ == j)) {
// (2 > 2) & (2 == 2) j=>2, i=>3
// F & T
i=i+j;
}
System.out.println("i="+i); // i=3
i=1; // i=>1
j=i++; // j=>1, i=>2
if((i > ++j) && (i++ == j)) {
// (2 > 2) && 스킵
i=i+j;
}
System.out.println("i="+i); // i=2
▷ 결과
i=3
i=2
문제2 ▷▷
int m1=0, n1=1;
if((m1++ == 0) | (n1++ == 2)) {
// (0==0) T | (1==1) F m1=>1, n1=>2
m1=42;
}
System.out.println("m1=>"+m1 + ", n1=>"+n1); // m1=42, n1=2
m1=0;
n1=1;
if((m1++ == 0) || (n1++ ==2)) {
// (0==0) T || 스킵 m1=>1, n1=>1
m1=42;
}
▷ 결과
m1=>42, n1=>2
m1=>42, n1=>1
4. 비교연산자
-- !, =, >, <, >=, <=
-- 일반적으로 수학에서 쓰이는 것과 같다.
5. 할당연산자 (연산 후 대입 연산자)
int no = 1; no+=3; // no=no+3; no=1+3; System.out.println("no="+no); no-=2; // no=no-2; no=4-2; System.out.println("no="+no); no*=5; // no=no*5; no=2*5; System.out.println("no="+no); no/=4; // no=no/4; no=10/4; System.out.println("no="+no); no%=3; // no=no%3; no=2%3; System.out.println("no="+no);
▷ 결과
no=4
no=2
no=10
no=2
no=2
6. 삼항연산자
-- 변수선언 = (조건식)?값1:값2
-- 변수를 선언하고 나서 값을 부여하고자 할 때 사용되어지는데 조건식이 참일 경우 변수에 값1을 대입해 주고,
만약에 조건식이 거짓일 경우 변수에 값2를 대입해 준다.
int num1=50, num2=60; int num3=(num1 > num2)?num1:num2; System.out.println("num3="+num3);
▷ 결과
num3=60
'수업내용' 카테고리의 다른 글
[Day8][Java] 가위바위보 게임 / 숫자 맞히는 게임 / 레이블 / 배열 / 확장된 for문 / Random / 로또 당첨번호 / 버블 정렬 (0) | 2019.09.01 |
---|---|
[Day7][Java] while문 / do~while문 / Math.random / equals / 가위바위보 프로그램 (0) | 2019.09.01 |
[Day6][Java] For 문제풀이 / 별 찍기 (0) | 2019.09.01 |
[Day5][Java] switch case / 반복문(for) / break / continue (0) | 2019.09.01 |
[Day4][Java] wrapper클래스 / 제어문(if) / 스캐너(Scanner) / 반올림(round) / 학점 프로그램 (0) | 2019.09.01 |