Develop/Java41 클래스(Class)와 객체(Object)란? 객체란 우리가 보고 느끼고 생각할 수 있는 모든 것이며, 사용할 수 있는 실체를 말한다. 클래스는 객체를 생성하는 데 사용되는 하나의 틀이다. 클래스는 객체를 정의한 '설계도' 또는 '틀'이라고 볼 수 있고, 객체를 생성하는 데 사용된다. 객체는 클래스에 정의되고 설계된 내용 그대로 생성된다. 둘은 뗄 수 없는 관계이다. 클래스를 통해 생성된 객체를 인스턴스(instance)라고 부르고, 클래스로부터 객체를 만드는 과정을 인스턴스화(instanctiate)라고 부른다. 객체와 인스턴스는 같은 말이다. 둘을 혼용하여 사용할 수 있다. 다만, 객체는 모든 인스턴스를 포함하는 넓은 의미라면, 인스턴스는 어떤 클래스로부터 생성된 것인지를 강조한다. 클래스는 크게 다음 3가지의 구성요소를 가진다. 필드 : 클래스.. 2022. 9. 5. int형의 숫자와 String형의 문자열을 더하면? 문자열로 "123456"이 저장되었다. 나는 당연히 타입이 안 맞아서, 에러가 날 줄 알았다. int형을 String형으로, String형을 int형으로 고쳐서 더할 생각만 하고 있었는데.. 이런 경우, 자동으로 int형이 String형으로 변환된다고 한다... 이런 기초적인 부분, 잊지도 말고 헷갈리지도 말자. 2022. 9. 4. Java : 입력(input) 시, 사용되는 Scanner, BufferedReader Java에서 입력을 원할 때, 기본적으로 Scanner와 BufferedReader 클래스를 이용해서 받아올 수 있다. 다음의 코드처럼 받아올 수 있다. -Scanner- Scanner sc = new Scanner(System.in); -BufferedReader- BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 여기서, InputStreamReader라는 것이 문자를 하나하나 읽어들이고, BufferedReader가 그 문자들을 문자열로 만들어준다. Scanner와 BufferedReader은 모두 버퍼를 이용해서 입력값을 저장한다. 둘의 차이점은 버퍼의 크기이다. Scanner 버퍼 크기 : 1024chars Buf.. 2022. 9. 3. Java : 입출력 예외 처리 (throws IOException) 입력과 출력을 할 때는 예외 처리가 필요하다. public static void main(String[] args) throws IOException { Java는 입력과 출력을 할 때 발생할 수 있는 예외에 대해 매우 까다롭게 규정하고 있다. 그렇기 때문에, 입력과 출력을 다룰 때, 예외 처리가 없다면 컴파일 에러가 발생한다. public class Test { public static void main(String[] arg) { System.out.println("Hello Java!!"); } 위와 같은 코드에서는 출력을 하는 메서드 println()이 사용되었는데, 왜 예외 처리를 안해도 될까? 그 이유는 Java에서는 print(), println(), printf() 메서드에만 자체적으로 예.. 2022. 9. 3. 오버로딩(Overloading) vs 오버라이딩(Overriding) 오버로딩과 오버라이딩은 둘 다 하나의 메소드를 가공해서 사용한다라는 공통점이 있다. 오버로딩은 한 클래스 내에서 이미 같은 이름을 가진 메소드를 가공하는 것이다. 조건은 이름은 같게 하고, 접근 제어자 or 반환 타입 or 매개 변수의 개수나 타입을 다르게 해야 한다. 접근제어자만 다르게 하는 것으로 오버로딩 할 수는 없다. 리턴값만 다른 것으로 오버로딩 할 수는 없다. 오버로딩의 장점은 다음과 같다. 메소드의 이름을 절약할 수 있다. (오버로딩한 메소드들의 이름은 같아야 하기 때문에) 하나의 메소드로 여러 상황에서 같은 기능을 하게끔 만들 수 있다. (같은 기능을 하되, 상황에 따라 결과는 다름) 오버라이딩은 부모 클래스로부터 상속받은 자식 클래스에서 메소드를 가공(재정의)하는 것이다. 조건은 이름, .. 2022. 9. 2. Scanner 사용 시, next()와 nextLine()의 차이 next()와 nextLine() 모두 String 타입의 문자열을 입력받을 때, 사용한다. Scanner sc = new Scanner(System.in); String str1 = sc.next(); String str2 = sc.nextLine(); 다음과 같이 사용하는데, 둘의 차이점은 next()를 사용할 경우, 문자열을 입력하고 스페이스바를 치기 전까지의 문자열을 입력을 받고, nextLine()의 경우는, 문자열을 입력하고 엔터를 치기 전까지의 문자열을 모두 받는다. 다음 코드를 통해 next()와 nextLine()의 출력 결과를 확인해보자. 입력 방식의 차이는 직접 쳐봐야 알기 때문에, 코드를 직접 입력해서 진행해보시길 바랍니다. import java.util.Scanner; public.. 2022. 8. 31. StringBuilder vs StringBuffer StringBuilder와 StringBuffer는 String 클래스와는 다르게 가변성을 가지고 있습니다. 이 둘의 차이점은 바로 동기화의 유무입니다. 먼저, StringBuffer는 동기화(Synchronization)를 지원하기 때문에, Multi-Thread 환경에서 안전하게 동작할 수 있습니다. StringBuilder는 Single-Thread 환경에서만큼은 StringBuffer보다 뛰어나다고 할 수 있지만, Multi-Thread에서만큼은 그렇지 못합니다. Java의 동기화(Synchronized) 키워드는 여러 개의 Thread가 한 개의 자원에 접근하려고 할 때, 현재 데이터를 사용하고 있는 Thread를 제외하고 나머지 Thread들이 데이터에 접근할 수 없도록 막는 역할을 수행합니다. 2022. 8. 30. Java : String <-> int String to int String from = "123"; int to = Integer.parseInt(from); int to String int from = 123; String to = Integer.toString(from); 2022. 8. 30. 자료형 일치 다음은 프로그래머스 12954 알고리즘 문제를 푼 것이다. 이 과정에서 다음과 같이 배열의 자료형은 long, sum의 자료형은 int로 작성했다. 테스트 진행 시, 몇 개의 테스트가 진행되지 않았다. 알고보니, 다음과 같이 배열의 자료형과 그 배열에 들어갈 값의 자료형이 일치해야 한다는 것을 알았다. 잘 참고해서 이런 부분에서 실수가 일어나지 않도록 주의해야겠다. 2022. 8. 25. 이전 1 2 3 4 5 다음