Java int, double -> String, String -> int, double




결과

결과





코드

public static void main(String[] args) {
		String s = "100";
		int num = 10;
		double num2 = 12.34;
		
		System.out.println("--- String -> int, double ---");
		System.out.print("변환 전 덧셈 : ");
		System.out.println(s+5);
		System.out.print("변환 후 덧셈 : ");
		System.out.println(Integer.parseInt(s)+5);
		System.out.print("Double로 변환 : ");
		
		System.out.println(Double.parseDouble(s));
		
		System.out.println("\n--- int -> String ---");
		if(String.valueOf(num) instanceof String)
			System.out.println("num은 String이다.");
		if(num2+"" instanceof String)
			System.out.println("num2은 String이다");
		
	}





String -> int, double

- int형으로 변환할 때는 Integer.parseInt(String s) 를 사용한다.


- double형으로 변환할 때는 Double.parseDouble(String s) 를 사용한다.


- "String + int =" 일경우 int가 String으로 자동으로 변환되어 연산된다.

 따라서, 형변환 전 연산한 값과 형변환 후 연산 값은 다른 결과를 얻는다.  





int, double -> String

- String.valueOf( int num)를 사용하여서 String으로 형변환할 수 있다. 

 valueOf 메소드는 오버로드로 여러 타입이 선언되어 있어 Double형이나 Char형으로도 변환할 수 있다.


- 또는, 간단하게 ""를 더해주면 String형으로 변환된다.









Java 문자열 변경, 자르기 replace(), substring(), split()





결과

결과





코드

public static void main(String[] args) {
		String s = "aaaabbbb";
		String s2 = "aa-aa,bb-bb";
		
		System.out.println("문자열 : " + s);
		System.out.println("a를 c로 바꾸기 : " + s.replace("a", "c"));
		System.out.println("ab를 c로 바꾸기 : " + s.replace("ab", "c"));
		
		System.out.println("substring(4): " + s.substring(4));
		System.out.println("substring(0,4): " + s.substring(0, 4));
		System.out.println("\n문자열 : " + s2 + "\n---,로 문자열 분리---");
		String[] srr = s2.split(",");
		for(String temp : srr) System.out.println(temp);
		
		System.out.println("\n문자열 : " + s2 + "\n---,와-로 문자열 분리---");
		String[] srr2 = s2.split(",|-");
		for(String temp : srr2) System.out.println(temp);
	}





String replace(String old, String new) : 문자열 내 문자(열) 바꾸기

- old 문자(열) 을 new 문자(열) 로 변환한다.


- old 문자(열)이 없을 경우에는 본래 문자열을 받는다.





String substring(int begin [, int end]) : 문자열 잘라서 가져오기

- begin만 주었을 경우 begin부터 문자열 끝까지를 잘라서 리턴한다.


- end도 입력하였을 때는 index가 begin <= index < end 의 문자열을 가져온다.


- 범위를 벗어난 index를 입력하였을 때는 StringIndexOutOfBoundsException 에러가 발생한다.





String[] split(String tok) : 특정 문자를 경계로 문자열 자르기

- 구분자에 따라 문자열을 분리한 문자열 배열을 리턴한다.


- 구분자가 여럿 있을 경우 |을 사용하여서 추가로 지정하면 된다.


- 결과를 보면 ","로 잘랐을 때와 ",|-"로 잘랐을 시 다른 결과를 갖는것을 볼 수 있다.





Java 바이트 변환 getBytes(), equals(), trim()




결과

결과




코드

public static void main(String[] args) {
		String s = new String(" ab cde");
		String s2 = new String(" ab cde");
		
		System.out.println("문자열 : " + s);
		System.out.println("앞뒤 공백 제거 전 : " + s);
		System.out.println("앞뒤 공백 제거 후 : " + s.trim());
		System.out.print("객체 비교 : ");
		System.out.println(s == s2);
		System.out.println("문자열 비교 : " + s.equals(s2) + "\n");
		
		System.out.println("--- 바이트 변환 ---");
		try {
		// byte[] b = s.getBytes("EUC-KR");
		byte[] b = s.getBytes("UTF-8");
		
		System.out.print("바이트 형식 : ");
		for(byte t : b) {
			System.out.print(t + ", ");
		}
		
		String re = new String(b, "UTF-8");
		System.out.println("\n복구 : " + re);
		
		}catch(Exception e) {
			e.printStackTrace();
		}
	}





String trim() : 앞뒤 공백 제거

- 문자열 앞과 뒤의 있는 공백을 제거해 준다.


- 이후 입력 받은 문자열을 비교하거나 할 때 공백이 포함되어 원하는 결과를 얻을 못 얻을 수 있다.

 따라서 이같은 가능성이 있는 곳에는 사용해주어야 좋다. 단, 무분별한 사용은 낭비이다.





boolean equals(Object obj) : 문자열 비교

- 위 결과를 보면 '=='를 사용하여 객체를 비교하였을 시 false로 두 문자열이 다르다고 나온다. 이는 new를 사용하여서 다른 객체로 만들어주었기 때문이다.


- 대신 equals를 사용하면 그 객체의 문자열만을 비교하여서 true가 나오게 된다.





byte[] getBytes(String cs) : 받은 문자형식으로 변환된 byte 배열 생성

- 네트워크로 문자열을 전송하거나, DB의 이미지를 저장하거나 할 때 byte 배열 형식으로 변환할 때 사용한다.


- 'EUC-KR'은 영어는 1byte, 한글은 2byte로 변환한다.


- 'UTF-8'은 영어는 1byte, 한글은 3byte로 변환한다.


- 특정 형식으로 변환할 때는 UnsupportedEncodingException이 발생할 수 있어 try~catch문으로 예외처리를 해야만 사용할 수 있다.


- 다시 String으로 만들 때는 new String(byte[] b, String cs) 으로 디코딩하면 된다.





Java String 메소드 charAt(), indexOf(), length() 등.



결과

결과




코드

public static void main(String[] args) {
		String s = "aBcD BEfGh";
		
		System.out.println("문자열 : " + s);
		System.out.println("charAt(1) : " + s.charAt(1));
		System.out.println("indexOf('b') : " + s.indexOf('b'));
		System.out.println("indexOf(\"B\") : " + s.indexOf("B"));
		System.out.println("indexOf(\"B\". 2) : " + s.indexOf("B", 2));
		System.out.println("length() : " + s.length());
		System.out.println("toUpperCase() : " + s.toUpperCase());
		System.out.println("toLowerCase() : " + s.toLowerCase());
	}






char charAt(int index) : index의 문자 가져오기

- 해당 문자열의 입력한 인덱스의 문자를 리턴한다.


- 범위 밖에 인덱스를 입력하면 에러가 발생한다.





int indexOf(String s [, int index]) : 문자(열)의 index 구하기

- 인수로 받은 문자(열)을 문자열에서 찾아서 index를 리턴해 준다.


- 해당 문자(열)이 없을 경우 : -1 리턴


- 2번 째 파라미터를 주면 해당 index부터 문자(열)을 찾는다. 위 예시에서는 2를 주어서 'B'를 index 2부터 검색함으로써 5번 째의 있는 B의 index를 리턴 받았다.





int length() : 문자열 길이 구하기

- 문자열의 길이를 리턴한다.


- index는 0부터 시작하므로 마지막 index는 s.length()-1 이다.





String toUpperCase() : 문자열 대문자 변환

- 문자열을 대문자로 변환한 새로운 문자열을 생성해 리턴한다.





String toLowerCase() : 문자열 소문자 변환

- 문자열을 소문자로 변환한 새로운 문자열을 생성해 리턴한다.





Java Overloading vs. Override [오버로딩 vs. 오버라이딩]







1. 오버로딩 (Overloading)


- 클래스 내에 같은 이름의 생성자나, 메소드를 여러 개 생성하는 것


- 조건은 메소드 이름이 동일하고, 매개 변수의 개수, 순서, 타입 (들)이 달라야 한다.


- return 타입은 동일하든 말든 상관없다.


- 매개 변수의 이름만 다른 것은 에러가 발생한다.







2. 오버라이딩 (Overriding)


- 상속받은 자식 클래스에서 메소드를 재정의 하는 것을 말한다.


- 부모의 메소드와 동일한 리턴 타입, 메소드 이름, 매개변수들을 가져야 한다.


- 접근 제한은 더 넓어질 수 있다. ( 부모:default면 오버라이딩: defualt 또는 public)







'JAVA > 기초' 카테고리의 다른 글

Java 바이트 변환 getBytes(), equals(), trim()  (0) 2020.03.22
Java String charAt(), indexOf(), length() 등  (0) 2020.03.22
Java Annotation 어노테이션  (0) 2020.03.19
Java import  (0) 2020.03.18
Java 상수 static final  (0) 2020.03.18

Java Annotation(어노테이션)






Annotation(어노테이션)


- 어노테이션은 메타데이터(데이터의 대한 설명)로 볼 수 있다.


- 어노테이션은 컴파일러가 코드의 문법 에러를 체크하도록 정보를 제공해준다.


- 또한, 코드를 보는 사람의 입장에서도 소스 코드가 더욱 직관적이 되도록 만들어준다.






- 어노테이션 예

@Override : 선언한 메서드가 오버라이드 되었다는 것을 나타낸다.


@Deprecated


@SuppressWarnings






'JAVA > 기초' 카테고리의 다른 글

Java String charAt(), indexOf(), length() 등  (0) 2020.03.22
Java Overloading vs. Overriding [오버로딩 vs. 오버라이딩]  (0) 2020.03.19
Java import  (0) 2020.03.18
Java 상수 static final  (0) 2020.03.18
Java Singleton(싱글톤)  (0) 2020.03.17

java import문






import android.view.*;


- * 는 패키지에 속하는 모든 클래스들을 의미한다.


- 단, import문으로 지정된 패키지의 하위 패키지의 클래스들은 포함되지 않는다.




> 따라서 하위 패키지의 클래스를 사용하기 위해서는 import문을 1번 더 사용하여서 선언해주어야 한다.




'JAVA > 기초' 카테고리의 다른 글

Java Overloading vs. Overriding [오버로딩 vs. 오버라이딩]  (0) 2020.03.19
Java Annotation 어노테이션  (0) 2020.03.19
Java 상수 static final  (0) 2020.03.18
Java Singleton(싱글톤)  (0) 2020.03.17
Java static 정적 변수, 메소드  (0) 2020.03.17

Java 상수 static final






상수 static final


- final은 단어뜻대로 값을 한번 초기화하면 이후 수정할 수 없다.


- 그렇다면 final로 선언하면 상수라고 할 수 있지만, 생성자에서 초기화할 때 다른 값으로 초기화하면 인스턴스마다 다른 값을 갖게되어 상수의 의미와 맞지 않는다.


- 따라서 상수를 만들기 위하여 final이면서 static이여야 한다.





코드1

결과1


- static이여서 인스턴스 없이 사용할 수 있으며 final이라서 값을 변경할 수 없다.









'JAVA > 기초' 카테고리의 다른 글

Java Annotation 어노테이션  (0) 2020.03.19
Java import  (0) 2020.03.18
Java Singleton(싱글톤)  (0) 2020.03.17
Java static 정적 변수, 메소드  (0) 2020.03.17
Java 배열 기본값, 배열 복사  (0) 2020.03.16

+ Recent posts