조건식의 결과에 따라 수행문이 실행되는 조건문
if(조건식) {
수행문;
}else{
수행문2;
}
public static void main(String[] args) {
System.out.println("나이를 입력하시오 :");
Scanner scanner = new Scanner(System.in); // 입력을 할수 있게 함
int age = scanner.nextInt();
int charge = 0;
if(age < 8) {
charge = 1000;
}else if(age < 14){
charge = 1500;
}else if(age < 20) {
charge = 2000;
}else {
charge = 3000;
}
System.out.println("나이 : "+ age);
System.out.println("요금 : "+ charge);
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("월 : ");
int month = scanner.nextInt();
int day;
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
day = 31;
break;
case 2:
day = 28;
break;
case 4: case 6: case 11:
day = 30;
break;
default :
System.out.println("Error");
day = 0;
}
System.out.println(month +"월은" + day + "입니다.");
}
응용) 2월은 윤년인 경우로 나누고 외부 클래스에서 사용하지 말도록하며, boolean을 사용해라
public class MyDate{
private int day;
private int month;
private int year;
private boolean isValid = true;
public MyDate(int day, int month, int year) {
setYear(year);
setMonth(month);
setDay(day);
}
public int getDay() {
return day;
}
public void setDay(int day) {
switch(month) {
case 1: case 3: case 5: case 7: case 8: case 10: case 12:
if (day <0 || day >31) {
isValid = false;
}
else {
this.day = day;
}
break;
case 4: case 6: case 9: case 11:
if (day <0 || day >30) {
isValid = false;
}
else {
this.day = day;
}
break;
case 2:
if (( ( year % 4 ==0 && year % 100 !=0 ) || year % 400 ==0)){ //윤년인 경우
if (day <0 || day >29) {
isValid = false;
}
else {
this.day = day;
}
}
else {
if (day <0 || day >28) {
isValid = false;
}
else {
this.day = day;
}
}
break;
default:
isValid = false;
}
}
public int getMonth() {
return month;
}
public void setMonth(int month) {
if( month <1 || month >12) {
isValid = false;
}
else {
this.month = month;
}
}
public int getYear() {
return year;
}
public void setYear(int year) {
if (year > Calendar.getInstance().get(Calendar.YEAR)) {
isValid = false;
}
else {
this.year = year;
}
}
public String isValid() {
if(isValid) {
return year + "년" + month + "월" + day + "일" + "입니다.";
}
else {
return "유효하지 않은 날짜입니다.";
}
}
}
public static void main(String[] args) {
MyDate date1 = new MyDate(29, 2, 2000);
System.out.println(date1.isValid());
MyDate date2 = new MyDate(2, 100, 2006);
System.out.println(date2.isValid());
}
( 부가 설명 )
public
, private
, protected
는 해당 멤버들의 접근을 어떻게 하느냐를 지정하는 것입니다.
예를들어, public
은 프로젝트 전체에서 접근이 가능하고
protected
는 현재클래스와 상속클래스에서 접근이 가능합니다.
private
는 현재 클래스에서만 접근이 가능합니다.
private
를 사용하려면 getters & setters
설정을 해주어야 됩니다.
getters & setters
설정하는 방법
-> (private)있는 화면에 마우스 오른쪽 클릭 -> source -> getters & setters -> generate
instance of
public boolean equals(Object obj){
if(obj instance of student){
Student std = (Student)obj;
return(this.student == std)
}
public class WhileExample {
public static void main(String[] args) {
int input;
int sum = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("갑을 입력하시오 : ");
input = scanner.nextInt();
while(input != 0) {
System.out.println("갑을 입력하시오 : ");
sum += input;
input = scanner.nextInt();
}
System.out.println(sum);
}
}
Scanner
로 입력 값을 받아 0
을 입력 받을 때, while 반복문이 끝이 나고 입력 받은 수의 합으로 결과 값을 받습니다.
public class DoWhileExample {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int input;
int sum = 0;
do {
System.out.println("값을 입력하시오 : ");
input = scanner.nextInt();
sum += input;
}while(input !=0);
System.out.println(sum);
}
}
Example)) Scanner로 입력 받아 구구단을 만드시오.
public class NestedLoop {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int dan = 0;
int num = 0;
while(dan < 10) {
num = 1; // 숫자를 1로 초기화 시켜줍니다.
System.out.println(" 숫자를 입력 하시오: ");//scanner 입력 값을 받는다.
dan = scanner.nextInt();
while(num < 10) { //
System.out.println(dan + "x" + num + "=" + dan * num);
num++;
}
System.out.println();
dan++;
}
}
}
public class ForExample {
public static void main(String[] args) {
int sum = 0;
for(int num = 0; num < 11; num++) {
sum += num;
}
System.out.println(sum);
}
}
결과 값 : 55
public class ContinueExample {
public static void main(String[] args) {
for(int num = 1; num <= 100; num++) {
if((num % 3) != 0) continue;
System.out.println(num);
}
}
}
public class BreakExample {
public static void main(String[] args) {
int sum = 0;
for(int num = 0; ; num++) {
sum += num;
if(sum > 100)break;
}
System.out.println(sum);
System.out.println(num);
}
}
결과 값 : 105, 14
1차원 배열 : toString
다차원 배열 : deepToString
테이블 형태의 데이터를 저장하기 위한 배열
int[][] score = new int[4][3]; // 4행 3열의 2차원 배열 score를 생성
int[][] score = {
{100,100,100},
{20,20,20},
{30,30,30},
{40,40,40}
};
결과
class Data {int x;}
class Ex2_1 {
public static void main(String[] args) {
Data d = new Data();
d.x = 10;
System.out.println("main() : x = " + d.x);
change(d.x);
System.out.println("After change(d.x)");
System.out.println("main() : x = " + d.x);
}
static void change(int x) {
x = 1000;
System.out.println("change() : x = " + x);
}
}
결과 값 :
package ch01;
class Data {int x;}
class Ex2_1 {
public static void main(String[] args) {
Data d = new Data();
d.x = 10;
System.out.println("main() : x = " + d.x);
change(d);
System.out.println("After change(d.x)");
System.out.println("main() : x = " + d.x);
}
static void change(Data d) {
d.x = 1000;
System.out.println("change() : x = " + d.x);
}
}
결과 값 :
Garbage Collection(가비지 컬렉션)이란?
프로그램을 개발 하다 보면 유효하지 않은 메모리인 가바지(Garbage)가 발생하게 된다. C언어를 이용하면 free()라는 함수를 통해 직접 메모리를 해제해주어야 한다. 하지만 Java나 Kotlin을 이용해 개발을 하다 보면 개발자가 메모리를 직접 해제해주는 일이 없다. 그 이유는 JVM의 가비지 컬렉터가 불필요한 메모리를 알아서 정리해주기 때문이다. 대신 Java에서 명시적으로 불필요한 데이터를 표현하기 위해서 일반적으로 null을 선언해준다.