본문 바로가기

Java

(8)
Break, Continue 많이 보고 사용하지만 항상 헷갈리는 Break문과 Continue문. 쉽지만 제대로 정리안해서 항상 헷갈리는 것이 문제다. 이번에 제대로 한 번 정리해보고 또 내가 예전에 어느 회사에 면접을 보러 갔을 때 Java 문제를 푼 적이 있는데 그 때 생소했던 것들과 연관 된 내용들이 있어 한 번 정리해보고자 한다. 일단 Break 문은 말 그대로 만났을 때 곧바로 그 문장을 멈추는 것이다. class Break { public static void main(String[] args) { // break - 자신이 포함된 하나의 반복문을 벗어난다. int sum = 0; int i = 0; while(true) { if(sum > 100) break; ++i; sum += i; } // end of while ..
while문 Switch문 때와 비슷한 경우의 while문이다. Switch문 때도 이런 말을 했었다. 'IF~ELSE 구문은 정말 많이 써도 Switch문은 잘 안써서 낯설다고' While문도 마찬가지다 반복문을 사용할 때 거의 For문만 사용했지 While은 좀 낯설다. 여기에 더해 do while은 정말 더 낯설다. 예전에 백준 문제 풀 때 while문을 정말 많이 활용했었는데 그래도 한 번 더 정리 해보도록 하자. import java.util.*; class While { public static void main(String[] args) { int num = 0, sum = 0; System.out.print("숫자를 입력하세요.(예:12345)>"); Scanner scanner = new Scanne..
Switch문 Java를 공부하면서 조건문을 사용할 때 IF문, IF~ELSE문은 정말 많이 이용해서 익숙하지만 이 Switch문은 정말 익숙하지 않았다. 그래서 어렴풋이 알고만 있었는데 막상 나오면 항상 헷갈리고 틀리고 그랬는데 이번에 한 번 제대로 파헤쳐 보자. import java.util.Scanner; class Switch{ public static void main(String[] args) { System.out.print("현재 월을 입력하세요.>"); Scanner scanner = new Scanner(System.in); int month = scanner.nextInt(); // 화면을 통해 입력받은 숫자를 month에 저장 switch(month) { case 3: case 4: case 5:..
형변환(Java) 형변환이란 변수 또는 상수의 타입을 다른 타입으로 변환하는 것을 말한다. (타입) 피연산자 이런 형태로 나타낸다. double d = 85.4; int score = (int) d; System.out.println("score=" + score); System.out.println("d=" + d); 형변환을 하는 이유는 주로 서로 다른 두 타입을 일치시키기 위해서인데, 형변환을 생략하면 컴파일러가 알아서 자동적으로 형변환을 한다. 이 때 아무렇게나 형변환 하는 것이 아니라 "기본의 값을 최대한 보존할 수 있는 타입으로 자동 형변환이 된다" 그래서 표현범위가 좁은 타입에서 넓은 타입으로 형변환하는 경우에는 값 손실이 없으므로 두 타입 중에서 표현범위가 더 넓은 쪽으로 형변환 된다. Byte -> Sho..
Printf(Java) public class Hello { public static void main(String[] args) { System.out.println(10.0 / 3); System.out.printf("%d%n", 15); System.out.printf("%#o%n", 15); System.out.printf("%#x%n", 15); System.out.printf("%s", Integer.toBinaryString(15)); double f = 123.456789; System.out.printf("%f%n", f); System.out.printf("%e%n", f); System.out.printf("%g%n", f); System.out.printf("[%5d]%n", 10); System.out...
Static에 대하여 - JAVA 공부를 하다보면 함수나 변수 앞에 이 static을 붙인 것을 종종 볼 수 있다. 이건 왜 붙이는 걸까??? 일단 static을 붙이면 모든 객체가 이 static 붙은 변수는 공유가 된다. 예를 들어 class Marine() { static int hp = 50; } public class Sample { public static void main(String[] args) { Marine m1 = new Marine(); Marine m2 = new Marine(); } } 이렇게 되면 이 hp 값 50은 marine 새로 생성할 때마다 이 값을 다 공유하고 또 메모리에 딱 한 번만 할당하기 때문에 메모리 사용에 이점이 있다. 그래서 main 메서드가 시작되기 전에 메모리에 이미 로딩이 된다. St..
접근지정자에 대하여 자바를 공부하면서 새로운 개념을 배웠다. 바로 접근 지정자이다. public class HelloJava { public static void main(String[] args) { // TODO Auto-generated method stub System.out.print("Hello, Java"); System.out.println("Hello, Java"); //마지막에 줄바꿔준다. System.out.print(10 + 5); System.out.println(); 자바를 처음 배울 때 저 main 앞에 있는 public은 뭐고 static은 뭐고 void는 뭔가 했는데 이번에 static을 제외하고 그 뜻을 알게 되었다. 일단 void 부터 살펴보자.(※ 사실 이 부분은 접근지정자 말고 메소드 ..
Getter 와 Setter Getter와 Setter에 대해서 알아보자. 사실 이걸 알려면 정보은닉, 캡슐화라는 걸 알아야 한다. 뭐 다양한 방법들 이론들이 있겠지만 간단히 살펴보면 ​ 캡슐화 말 그대로 캡슐에 꽁꽁 싸매듯이 밖에서 안에 있는 것들을 접근할 수 없게끔 만드는 것이 캡슐화다. 데이터(속성)와 데이터를 처리하는 함수를 하나로 묶는 것. 다시 말해 객체 외부에서는 객체 내부 정보를 직접 접근하거나 조작할 수 없고, 외부에서 접근할 수 있도록 정의된 메서드를 통해서만 관련 데이터를 접근할 수 있다. ​ 정보은닉 즉 말 그대로 정보를 숨기는 것이다. 다른 객체에게 자신의 정보를 숨기고 자신의 연산만을 통하여 접근을 허용하는 것이다. 이를 통해서 외부 객체가 특정 객체의 데이터와 함수를 직접 접근하여 사용하거나 변경하지 못하..