[Java] 숫자 도구(Math, Random)
·
TIL/Java
Math 클래스 절댓값 '절댓값(Absolute Value)' a의 절댓값은 a와 0 사이의 거리라고 생각하면 된다. a >= 0일 경우에 a의 절댓값은 그냥 a이고, a < 0일 경우에 a의 절댓값은 -a입니다. import java.lang.Math; public class Driver { public static void main(String[] args) { System.out.println(Math.abs(-10)); System.out.println(Math.abs(8)); } } 10 8 최솟값, 최댓값 Math 클래스에는 최솟값과 최댓값을 구해주는 max 메소드와 min 메소드가 있다. import java.lang.Math; public class Driver { public static..
[Java] String 클래스(대소문자 변환, 문자열비교_equals)
·
TIL/Java
일반적으로 인스턴스를 생성할 때는 이렇게 생성자를 통해서 만든다. char data[] = {'a', 'b', 'c'}; String myString = new String(data); abc 하지만 문자열의 경우에는 '문자열 리터럴(String Literal)'로 만들기 때문에 기본형이 아닌가 오해를 할 수도 있다. String myString = "abc"; 어쨌든 문자열도 클래스 기반의 자료형이기 때문에 여러 가지 메소드를 사용할 수 있다. 유용해보이는 몇 가지만 살펴보자! 대소문자 변환 toUpperCase 메소드를 이용하면 모든 글자를 대문자로, toLowerCase 메소드를 이용하면 모두 소문자로 변환할 수 있다. String myString = "aBc"; System.out.println(..
[Java] 단위 변환기
·
TIL/Java
단위 변환기 단위 변환기를 만들어봅시다. 우리가 만들 단위 변환기는 인스턴스를 생성하지 않고도 사용할 수 있도록, 클래스 변수와 클래스 메소드로만 이루어져 있습니다. 언제든 간편하게 사용할 수 있는 도구를 만드는 거죠! 상수 이 클래스와 관련 있는 상수(static final 변수)를 만들어야 합니다. 1 파운드 = 0.45359237 킬로그램 1 인치 = 2.54 센티미터 위의 두 공식을 이용해서 상수 네 개(KILOGRAMS_PER_POUND, POUNDS_PER_KILOGRAM, CENTIMETERS_PER_INCH, INCHES_PER_CENTIMETER)를 만들어보세요. 예시 public static final double KILOGRAMS_PER_POUND = 0.45359237; 클래스 메소..
[Java] 인스턴스 메소드 vs 클래스 메소드
·
TIL/Java
클래스 메소드란? 클래스 변수는 인스턴스가 아닌 클래스에 속한 변수이다. 마찬가지로, 클래스 메소드는 인스턴스가 아닌 클래스에 속한 메소드이다. 클래스 메소드는 언제 사용할까? '인스턴스 메소드'는 인스턴스에 속한 것이기 때문에, 반드시 인스턴스를 생성해야 사용할 수 있다. 하지만 '클래스 메소드'는 클래스에 속한 것이기 때문에, 인스턴스를 생성하지 않고도 바로 실행할 수 있다. 인스턴스를 생성하지 않는 클래스, 어떤 것이 있을까? 두 가지 예를 살펴보자. + 22.01.16 클래스 메소드 사용할 때는 언제인가? 각각 다른 값을 보관하는 인스턴스가 필요하지 않을 때 필요할 때 매개변수(인자)를 이용하여 한 번만 사용할 때 Math 클래스 수학 관련 기능을 모아둔 Math 클래스를 import해서 확인해보..
[Java] 인스턴스 변수 vs 클래스 변수
·
TIL/Java
클래스 변수란? 지금까지는 인스턴스에 해당되는 '인스턴스 변수'와 '인스턴스 메소드'를 사용했습니다. Person p1 = new Person("문종모", 25, 50000); BankAccount a1 = new BankAccount(100000); a1.setOwner(p1); // a1에 대한 인스턴스 메소드 a1.withdraw(20000); // a1에 대한 인스턴스 메소드 하지만, 인스턴스에 해당되지 않고, 클래스에 해당되는 '클래스 변수'도 존재합니다. 이 둘의 차이점을 정확히 이해해야, 좋은 객체 지향 코드를 작성할 수 있습니다. '클래스 변수'가 무엇인지, '인스턴스 변수'와는 어떻게 다른지, 같은 기능을 두 가지 방식으로 구현해 보면서 알아봅시다. 인스턴스 변수 버전 현재는 Person..
[Java] 예외(Exception) - 코드 안전하게 만들기(try-catch 예외 처리)
·
TIL/Java
예외 처리(Exception Handling) 기본 구조 try { ... // 오류를 발생시킬 수 있는 코드 } catch(Exception e) { ... // 오류가 발생한 경우 해결(예외가 발생했을 때 실행되는 코드) } > 자바의 예외 처리는 try-catch를 사용한다. 예시1) try { ... // 오류를 발생시킬 수 있는 코드 } catch(ArrayIndexOutOfBoundsException e) { ... // 오류가 발생한 경우 해결 } 예시2) try { ... // 오류를 발생시킬 수 있는 코드 } catch(NullPointerException e) { ... // 오류가 발생한 경우 해결 } 코드 예시 +22.01.27 뒷수습의 방법 e.getMessage(); 오류에 대한..
[Java] 변수를 안전하게 만드는 법: final
·
TIL/Java
변수를 정의할 때 final을 써주면, 그 변수는 '상수'가 됩니다. 즉, 한 번 정의하고 나서 다시 바꿀 수 없다는 것이다. 사용 방법이 경우에 따라 미세하게 다르니, 각 상황을 예시를 통해 보자! +22.01.25 메소드와 클래스도 final을 사용할 수 있다. 여기서 주의할 점은 final 변수, 메소드, 클래스는 상속할 수 없다. 기본형 final double pi = 3.141592; pi = 2.54; 이 코드는 오류가 나온다. final로 정의된 변수의 값을 바꿀 수 없기 때문이다. π(pi)처럼 바꾸지 않는, 바꾸지 말아야 할 값이 있으면 final을 써주면 된다. 참조형 public class Person { private String name; public Person(String na..
[Java] 기본형vs참조형 / null 퀴즈
·
TIL/Java
출력되는 값은 무엇입니까? 0 int[] a = new int[2]; System.out.println(a[0]); 출력되는 값은 무엇입니까? null Person[] people = new Person[2]; System.out.println(people[0]); 출력되는 값은 무엇입니까? 0 Person person = new Person(); people[0] = person; person.age = a[0]; a[0] = 26; System.out.println(person.age); 출력되는 값은 무엇입니까? 27 a[0]++; people[1] = people[0]; people[1].age = a[0]; a[0] = 28; System.out.println(people[0].age); 출력되..
[Java] null
·
TIL/Java
자바에서 실수로 발생하는 대표적인 에러 중 하나를 살펴보자. 자바에서는 '비어있음'이 null이라는 값으로 표현된다. 단, null은 참조형 변수(Reference Type)만 가질 수 있는 값이다. Person p1 = null; System.out.println(p1); null 만약 null을 보관하고 있는 변수의 메소드를 호출하려고 하면 NullPointerException이라는 오류가 난다는 점을 주의하자 Person p1 = null; p1.getName(); Exception in thread "main" java.lang.NullPointerException 대처법 아래 코드는 오류가 날 것이다. people[1]과 people[4]는 null이기 때문에 p.getName()을 할 수가 없..