2021.11.02(화)
> A1. 코드 중복을 없앤다.
예시1번)
if(select == 1){
System.out.println("하복판매");
}
else if(select == 2){
System.out.println("춘추복판매");
}
else if(select == 3){
System.out.println("동복판매");
}
위와 같이 if문이 연속으로 중복이 될때는 for루프로 변환을 고려하거나 배열을 활용하는 방법이 있다고 하는데, for루프로 변환하는 방법은 조금 더 고민을 해봐야 할것 같다.
String seasons [] = {"하복","춘추복","동복"};
System.out.println(seasons[selcet - 1] + "판매");
중복되는 '판매'라는 문자열을 제외하고 기준이 되는 문자열을 배열로 정리하여 보다 간결한 if문으로 개선할 수 있다. 이번에는 어제 풀었던 알고리즘 if문 문제를 개선을 해보려고 한다.
예시2번)
if(90 <= a & a <= 100){
System.out.print("A");
}
if(80 <= a & a <= 89){
System.out.print("B");
}
if(70 <= a & a <= 79){
System.out.print("C");
}
if(60 <= a & a <= 69){
System.out.print("D");
}
if(0 <= a & a <= 59){
System.out.print("F");
}
점수 구간을 5구간으로 나눠 if문으로 구성하였었지만, 구간을 배열로 담아 개선해보겠다.
int score[] = {90, 80, 70, 60};
String arr[] = {"A", "B", "C", "D", "F"};
String grade = "F";
for (int j = 0; j < 4; j++) {
if (a >= score[j] && a <= 100) {
grade = arr[j];
break;
}
}
100점 이상을 기입할 경우 F가 나오는게 흠인데, 방법을 찾아서 다시 업데이트하도록 해야겠다.
>A2.하드코딩이란 값이 고정되어 있는 코딩으로 가변이 불가능한 딱딱한 코딩이고, 소프트코딩이란 하드코딩과 반대로 값이 고정되지 않고 가변적인 코딩을 뜻한다.
>A3.일반적으로 생성한 Class는 Static 영역에 생성되고, new 연산을 통해 생성한 객체는 Heap영역에 생성된다.
객체의 생성시에 할당된 Heap영역의 메모리는 Garbage Collector를 통해 수시로 관리를 받는다.
하지만 Static 키워드를 통해 Static 영역에 할당된 메모리는 모든 객체가 공유하는 메모리라는 장점을 지니지만,
Garbage Collector의 관리 영역 밖에 존재하므로 Static을 자주 사용하면 프로그램의 종료시까지 메모리가 할당된 채로 존재하므로 자주 사용하게 되면 시스템의 퍼포먼스에 악영향을 주게 된다.(추후 내용보충) (출처:코딩팩토리)
>A3-1.간단하게 자바에서 사용하지 않는 객체는 메모리에서 삭제하는 작업을 말한다. 메모리는 JVM 메모리의 5가지 영역중에 Heap메모리만 다룬다.
>A4. 아규먼트(Argumets)로 큰 뜻은 없다.(일종의 변수명이다.)
커멘드라인에서 Java클래스를 실행하게되면 JVM은 길이가 0인 String 배열을 먼저 생성하게 되는데, 이때 main()메소드 호출 시 매개값(args)으로 전달되게 된다.
>A5. 몰랐던 내용이였다. 예를들어 for(int a=1, b=2; a<10 && b<5; a++,b--;) 으로도 코딩이 가능했었다.
>A6.Break는 if조건문이 참일경우 반복문을 중단하고 빠져나오는 문법이며, Countinue는 if조건문이 참일경우 Countinue아래 문장은 생략하고 반복문으로 돌아가 다시 반복하게 되는 문법이다.
>A7.Break문을 활용하거나, 함수로 빼서 리턴하는 방법이 있다. 이외에도 여러가지 방법이 있지만 주로 위 2가지 방법을 활용하는듯 하니 다음에 이중루프를 빠져나가야한다면 이 방법들을 활용해보자.