728x90
반응형
SMALL

String str1 = “abcde”

String str2 = “abcde”

str1 == str2;

 

public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);

package Day06;

public class StringTest {
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);

	String str3 = new String("abcde");
	String str4 = new String("abcde");
	System.out.println(str3 == str4);

	}

}

true
false

//new가 붙지 않을경우 같은 내용으로 본다.
//new가 붙었다면, 동명이인을 생각하면 편하다.
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1 = "abcde";
String str2 = "abcde";
System.out.println(str1 == str2);

	public static void main(String[] args) {
		// TODO Auto-generated method stub
			String str1 = "abcde";
			String str2 = "abcde";
			System.out.println(str1 == str2);
	
package Day06;

	public class StringTest {
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str1 = "abcde";
		String str2 = "abcde";
			System.out.println(str1 == str2);

	str2 = "abcdef"; //전혀 다른 곳에 abcdef를 새로 만든다면 기존의 str2 abcde는 버려진다. //StringBuffer String의 단점을 보완하기 위한것
	str2 = "ddddd";
	str2 = "abcde"; //기존의 abcde를 버리고 새로운 것을 취했어도 버린것을 다시 찾아서 적용한다.
	System.out.println(str1 == str2);

	String str3 = new String("abcde");
	String str4 = new String("abcde");
	System.out.println(str3 == str4);
	}

}

true
true
false

 

(1) final 클래스로 상속을 받아서 수정할 수 없다.

(2) new String 또는 " "로 생성 가능

(3) 많은 주요 메서드들이 있다.

  1) length() : 문자열의 길이를 return

     String a = "hello";

     a.length() = 5 // String에 .을 찍으면 length를 쓸수 있다.

 	// 1. legth()
 	String s1 = "efewterfirjisofeijifjiwoeivjdbnvjks";
 	String s2 = "한글은 몇글자로 침?";
 	System.out.println("s1 문자열의 길이 : " + s1.length());
 	System.out.println("s2 문자열의 길이 : " + s2.length());

 	s1 문자열의 길이 : 35
 	s2 문자열의 길이 : 11

 

  2) charAt(인덱스) : 인덱스 위치에 있는 글자를 return

     String jumin_bunho = "001234-3812367"

     jumin_bunho.charAt(7) -> 성별을 나타내는 숫자

// 2. charAt()
		String s3 = "abcdefghijkl";
		System.out.println(s3.charAt(9));

		2. j

 

  3) equals(str) : str과 동일한 값인지 check

     equalsIgnoreCase(str) : str 대소문자를 무시하고 비교를 한다

    대소문자 관계없이 동일한 문자열 값인지 check

		// 3. equals(), equalsIgnoreCase()
		String s4 = new String("aaaaa");
		String s5 = new String("aaaaa");
		String s6 = new String("AaaAA");
   //System.out.println(s4 == s5); 	   //s4와 s5가 같은지
		System.out.println("3." + (s4 == s5));
		System.out.println("3." + s4.equals(s5)); //값만 비교한것
		System.out.println("3." + s4.equals(s6));
		System.out.println("3." + s4.equalsIgnoreCase(s6));

		3.false
		3.true
		3.false
		3.true

 

  4) replace(찾을문자열, 대체할 문자열) : 특정 문자열을 찾아서 원하는 문자열로 대체

	// 4. replace()
	String s7 = "Heavern helps those";
	String s8 = "help";
	String s9 = s7.replace(s8,"    ");
	String s10 = s7.replace("t", "28352369382636");
	System.out.println("4." + s9);
	System.out.println("4." + s10);

	4.Heavern     s those
	4.Heavern helps 28352369382636hose

 

5) substring(sindex, eindex) : 기존 문자열에서 특정 부분을 잘라내어 retrun

	// 5. substring()
	String s11 = s7.substring(1,4);
	System.out.println("5." + s11);

	5.eav

 

6) trim() : 문자열 앞 뒤의 공백을 제거한다.

	// 6. trim()
	String s12 = "        angel1024         ";
	String s13 = s12.trim();
	System.out.println("6." + s13);

	6.angel1024

	String s14 ="AAAAAAAangel1024AAAAAA";
	String s15 = s14.trim("A");
	//오류가 뜸 trim은 공백만 되기 때문에 공백이 없기에 오류!
	//trim은 문자열을 줄 수 없음.
	//cf) python에서는 strip("쓰레기글자리스트") => strip("1234567890") 문자를 만날때까지 날린다. 해당하는 문자가 하나라고 있으면 지워버린다.

 

7) split(나눌문자) : 특정 문자로 앞 뒤를 나누어 리턴

String s15 = "Victory come from right";
String[] s16= s15.split("o");
for(int i=0; i<s16.length; i++) {
System.out.println(s16[i]);
}

Vict
ry c
me fr
m right

String s15 = "Victory come from right";
String[] s16= s15.split("o ");
for(int i=0; i<s16.length; i++) {
System.out.println(s16[i]);
}

Victory come from right

	String[] s17 = s15.split("[o ]");  // o 또는 space로 구분
	for(int i=0; i<s17.length; i++) {
		System.out.println(s17[i]);
	}
//Vict
//ry
//c
//me
//fr
//m
//right

 

8) mathches(정규표현식) : 문자열이 정규표현식 조건에 맞는지를 리턴

// 8. matches()
String s18 = "010785287322327-875327323";
// 숫자와 -으로만 25자리 이내로 구성되었는가?
System.out.println("8." + s18.matches("[0-9]{1ㅡ25}"));
//영대소문자 또는 한글로 5자 이내냐?
String nameRule = "[A-Za-z가 -힣]{6}";
System.out.println("8." +  "유미의 세포들".matches(s15));

String phoneRule = "[0][0-9]{2}[-][0,9]{3,4}[-][0-9]{4}";
System.out.println("8." + "010-3422-6323".matches(phoneRule));

// Test
// 사용자로부터 전화번호 입력을 받아서 전화번호 조건에 맞으면 마지막 4자리를 ****로 표시
// 규칙에 어긋나면 "올바른 형식이 아닙니다"
Scanner sc = new Scanner(System.in);
System.out.println("전화번호를 입력해라 : ");
String phone_num = sc.next();
if(phone_num.matches(phoneRule)) {
	// (1)
	phone_num = phone_num.substring(0,phone_num.length()-4) + "****";
	System.out.println(phone_num);
//		// (2)
//		String last4 = phone_num.substring(phone_num.length()-4, phone_num.length());
//		phone_num.replace(last4, "****"); //중간번호와 마지막번호가 같을 때 오동작
}
else {
System.out.println("올바른 형식이 아닙니다.");

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

예외(Exception) 처리  (0) 2023.01.09
인터페이스(Interface)  (0) 2023.01.09
상속  (0) 2023.01.09
클래스 심화  (0) 2023.01.09
함수(function)  (0) 2023.01.09
728x90
반응형
SMALL

(1) 정의

객체 지향 프로그램(이벤트 프로그램)의 가장 특성 → 재사용성 → 상속

예전 언어에서는 매크로(Macro), 인라인

클래스를 만들 때 처음부터 모드 것을 새로 만드는 것이 아니라

부모로부터 받고 추가되는 것만 새로 만드는 것

 

(2) 클래스 상속

  1) 용어 : 부모(클래스), 슈퍼(클래스), 상의(클래스), 베이스(클래스)

                자식(클래스), 서브(클래스), 하위(클래스), 파생(derived)(클래스)

 

   2) 클래스 상속 방법 (제일 안나옴)

    키워드 1개 :extenfs(O) // sxtend(X)

    class child extends Parent {

    }

  

  3) 상속의 특징

    단일 상속만 가능 - 부모는 한개만

    new Child() ⇒ Parant 객체 생성 ⇒ Child객체생성

    모든 클래스의 조상 - Object

 

  4) super

   Child 객체에서 Parent객체를 가리키는 변수

   super.변수명

   super.메서드명()

 

(3) 메서드 재정의 (Overriding)

  1) 부모 클래스의 메서드를 자식 클래스가 변경해서 정의하는 것

  2) 메서드 명 뿐 아니라 메서드에 들어갈 입력값까지 완벽하게 동일해야함

    → 메서드명이같고 입력값의 형태가 다르면 Overloading

  3) 동일한 형태의 메서드 일 때 자식 클래스의 메서드가 우선시

  4) 부모의 접근 권한보다 같거나 낮은 권한이어야 함

 

(4) 다형성 (Polymprlhism)

  i < d (O)  i < d (X)

  1) int i =10;

         double d = i;

 

        double b = 10.34;

        int j = (int)b;

  

  2) Parent p = new Child();  ⇒ 가능

       C 100 p 50

 

       Child c = new Parent(); ⇒ 불가능

       c.생떼쓰기(), c.산타에게 선물받기() 이런기능이 Parent에게는 없기 때문

       Child c = (Child) p; ⇒ 가능

 

      Parent p = new Parent();

      Child c = (Child) p; ⇒ ???

      c.생떼쓰기()

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

인터페이스(Interface)  (0) 2023.01.09
String Class  (0) 2023.01.09
클래스 심화  (0) 2023.01.09
함수(function)  (0) 2023.01.09
Colors (추후 수정 필요 !)  (0) 2023.01.09
728x90
반응형
SMALL

(1) Field(변수)

 

    1) 클래스 변수

    변수 앞에 static (모두가 공유하는 것) 키워드 사용

    모든 객체가 공유하는 변수

    객체를 생성하지 않아도 사용할 수 있음

 

    2) 인스턴스 변수

   변수 앞에서 static이 없는 변수(일반적인 변수) cf) self.변수명 in Python

   객체를 생성할 때 생성되며, 객체마다 다름

 

   3)로컬 변수

   함수 내, 제어문 내에서 선언된 변수

 

(2) Methon(메서드, 함수)

    클래스 내에 있는 함수

         public static void main(String[] args){

         }

         접근제한자 [static] 리턴타임 메서드명 (매개변수...){

         }

   

     1) 접근제한자

      메서드를 실행할 수 있는 권한, 가장 넓은 권한 public

     

     2) static

      객체 생성을 하지 않고도 사용할 수 있는지에 대한 keyword

      static이 붙으면 객체 생성을 하지 않고 사용 가능

     

     3) 리턴타입

      메서드는 값을 받기만 하지 않는다!!

      처리 후 값을 돌려줄 수도 있음!!

      돌려주는 값이 없을 때 void

      돌려주는 값이 숫자라면 int, float, double 등이고 문자열이라면 String

     

     4) 메서드명

      변수명 규칙과 동일

      동사 + 대문자로 시작하는 명사 + 대문자로 시작하는 명사

      printScreen, getPremium c에서는 get_Premiun1

     

     5) 매개변수(Parameter)

     매서드의 입력값을 의미

     메서드 입장에서는 외부에서 값을 받기 위해 사용

     입력값이 개수가 졍해져 있을 때에는 (int a, float b) 등으로 전체를 기술

     입력값이 개수가 정해져 있지 않을 때에는 (String[] args) 등으로 배열을 사용

   

    6) 리턴값

      메서드 선언할 때 void가 아닌 경우

      반드시 리턴값이 있어야 한다.

      return 값

     

    7) 메서드의 실행

      call(호출), 부른 쪽을 caller, 불린 쪽을 callee

     

    8) 실행 순서

      처음 실행한 메서드가 가장 늦게 종료된다.(FILO, Stack)

      cf) FIFO(First Out, Queue)

     

    9) 메서드 오버로딩(Overload)

     같은 이름으로 입력값의 종류에 따라 다르게 처리하고 싶을 경우

 

 

 

728x90
반응형
LIST

'개발 > JAVA' 카테고리의 다른 글

String Class  (0) 2023.01.09
상속  (0) 2023.01.09
함수(function)  (0) 2023.01.09
Colors (추후 수정 필요 !)  (0) 2023.01.09
배열 (Array)  (0) 2023.01.09

+ Recent posts