[Java] 배열 관련 코드예제와 Arrays.toString() / System.arraycopy()
·
TIL/Java
1. Arrays.toString() 메서드 ㄱ. 기능 : 배열의 참조변수 값을 String (ex. [1요소 , 2요소, 3요소..])으로 가져오는 기능 * Arrays.toString() 사용하기 위해서는 util을 import 해야한다. > import java.util.Arrays; 2. char[] : 배열은 syso로 출력하면 각 요소가 구분자없이 그대로 출력 3. System.arraycopy() 메서드 ㄱ. 기능 : 배열을 복사하는 기능 ㄴ. 매개변수 : 옮길 배열명, 인덱스, 옮겨지는 배열명, 인덱스, 옮길 배열의 길이(배열명.length) ex) import java.util.Arrays; public class Pr16 { public static void main(String[] a..
[Java] System.in.read() / System.in.skip() / System.in.available()
·
TIL/Java
1. System.in.read() - 기능 : 입력스트림(키보드)로 부터 입력된 값을 1바이트로 읽어서 0 ~ 255의 정수를 int 값으로 반환해 준다. - 매개변수 : X - 리턴값(리턴자료형) : 0~255(int) * read는 한 문자만 읽어온다. * 더 이상 가져올 값이 없으면 -1을 반환한다. 2. System.in.skip() - 기능 : 키보드에 남아있는 buffer(버퍼)를 매개변수만큼 버려준다. - 매개변수 : long n - 리턴값(리턴자료형) : 매개변수로 받은 값만큼 건너뛰고 난 수 3. System.in.available() - 기능 : 키보드에 남아있는 모든 버퍼를 버린다. - 매개변수 : X - 리턴값(리턴자료형) : 남아있는 모든 버퍼를 버리고 난 수 코드 예제) pac..
[Java] 대소문자 구별없이 비교하기 : equalsIgnoreCase()
·
TIL/Java
자바에서 문자열을 비교할 때는 equals(); 메서드를 사용한다. 만약, 대소문자 구별없이 비교를 하고싶으면 equalsIgnoreCase(); 메서드를 사용하면된다. 사용방법은 equals(); 메서드와 동일하다. 간단한 예제는 아래와 같다. // 결과 : true
[Java] 복제와 참조
·
TIL/Java
아래 코드는 복제와 참조에 관련된 간단한 코드이다. runValue 메소드를 실행하면 결과는 1이 나오고, runReference 메소드를 실행하면 결과가 2가 나온다. 21행을 살펴보면 변수 b에 담긴 인스턴스의 id 값을 2로 변경했을 뿐인데 a.id의 값도 2가 된 것이다. 변수 b와 변수 a에 담긴 인스턴스가 서로 같다는 것을 의미한다. * 자바에서는 int와 같이 기본 데이터 타입은 복제를 한다. 기본 데이터 타입이 아닌 것은 참조가 되어 참조 데이터 타입이라고 하며, new 사용해서 객체를 만다는 모든 데이터 타입은 참조 데이터 타입이라고 생각하자! 아래 코드는 메소드의 매개변수는 어떻게 동작하는지 살펴보는 코드이다. 먼저, 4행 ~ 12행의 코드를 살펴보자 메소드 _value의 매개변수는 기..
[Java] replace
·
TIL/Java
replace는 기존의 문자를 원하는 단어로 바꿀 수 있다. replace("기존문자", "바꿀 문자") replaceAll은 바꾸고 싶은 문자로 다 바꿔주는 기능을 한다. repalceAll("기존 문자", "바꿀 문자") replace와 replaceAll의 기능이 똑같아 보이지만 차이점이 있다. replaceAll은 .(마침표)를 다른 단어나 특수 문자로 바꾸려고 하면 .(마침표)를 모든 문자로 인식하여 바꾸려고 하는 단어나 특수 문자로 바뀌게 된다.
[Java] enum(enumerated type)
·
TIL/Java
enum enum은 열거형이라고 부른다. 열거형은 서로 연관된 상수들의 집합(연관된 상수들을 저장)이라고 할 수 있다. 또 그 값들이 변경되지 않도록 보장한다. 열거형 자체가 클래스이기 때문에 열거형 내부에 생성자, 필드, 메소드를 가질 수 있다. 아래 코드를 살펴보면 3행에서 class Fruit에서 만든 APPLE, PEACH, MELON을 enum을 통해 간결한 코드로 변경할 수 있다. 10행의 코드가 3행~7행의 코드와 동일한 것이다. 아래 코드를 살펴보자 18행을 보면 상수들이 생성될 때 마다 생성된 수만큼 생성자(Fruit)를 호출한다. 이 말은 즉, enum은 생성자를 가질 수 있다는 뜻이다. 현재 Fruit에 APPLE, PEACH, MELON 상수 3개를 생성해서 Call Construc..
[Java] Clone
·
TIL/Java
clone clone은 복제라는 뜻이다. 어떤 객체가 있을 때 그 객체와 똑같은 객체를 복제해주는 기능이 clone 메소드의 역할이다. s1의 객체를 s2에 그대로 복사하기 위해서 s1.clone()을 입력하면 에러가 발생한다. clone 메소드를 사용하기 위해서는 class 명 뒤에 implements Cloneable을 구분자를 입력해줘야 가능하다. * Cloneable은 비어있는 인터페이스이지만 클래스가 복제 가능하다는 것을 표시하기 위한 구분자 역할을 한다. clone의 접근제어자는 protected이다. 아래 코드를 살펴보면 Human이라는 클래스를 추가하여 test라는 메소드의 접근제어자를 protected를 설정하니 22행의 s1.test()를 실행해도 아무런 문제없이 작동하는 것을 확인할 ..
[Java] equals
·
TIL/Java
equals equals는 객체와 객체가 같은 것인지 비교하는 API이다. 객체 간에 같고 다름은 필요에 따라서 달라질 수 있기 때문이다. 아래 코드를 살펴보면 14행과 15행의 결과 값은 모두 false가 나온다. 14행이 false가 나오는 이유는 s1과 s2가 서로 다른 객체이기 때문이고 15행이 false가 나오는 이유는 객체 간 동일성이 같지 않기 때문이다. s1과 s2의 객체가 김탄이라는 값을 가지고 있기 때문에 저 두개의 객체가 같은 객체로 간주되길 바래 Object의 메소드 equals를 overriding하려고 한다. 아래 코드 중 9행 ~ 12행 코드는 (student)obj는 메소드 equals로 전달된 obj의 데이터 타입이 Object이기 때문에 이를 student 타입으로 강제 ..
[Java] toString
·
TIL/Java
toString toString은 객체를 문자로 표현하는 메소드이다. 이전에 사용했던 계산기 코드를 활용하여 toString을 살펴보자. 23행의 코드는 클래스 Calculator의 인스턴스 c1을 화면에 출력하고 있다. 출력 결과는 콘솔 창과 같으며, @ 뒤의 내용은 각자 다르다. 'ObjectClass.Calculator'은 인스턴스 c1이 클래스 Calculator의 인스턴스라는 의미이며, @ 뒤의 내용은 인스턴스에 대한 고유한 식별 값이라고 생각하면 된다. 클래스 설계자의 필요에 따라서 toString의 결과를 더욱 유용하게 만들 수 있다. 예를 들어 계산기의 인스턴스의 left와 right 값을 알 수 있다면 좀 더 편하게 할 수 있을 것이다. 아래 코드는 클래스 Calculator에 toStr..