10. API _ StringTokenizer
2022. 11. 4. 17:17
JAVA
StringTokenizer - 구분자를 기준으로 해서 문자열을 분리시키는 방법 String str = "Java,Oracle,JDBC,HTML,CSS,Spring"; 방법 1. 분리된 문자열들을 String[] 배열에 차곡차곡 담고자 할 때 // String 클래스에서 제공하는 split메소드 // 배열형 반환 String[] arr = str.split(","); for(String st : arr) { System.out.println(st); } 방법 2. 분리된 문자열들을 각각의 토큰 객체로 관리하고자 할 때 // java.util.StringTokenizer 클래스 이용 // StringTokenizer stn = new StringTokenizer(분리시키고자하는 문자열, 구분자); // n..
10.API_String 메소드
2022. 11. 4. 16:54
JAVA
String str1 = "Hello World"; 1. 문자열. chatAt(int index) : 반환값 char : 문자열에서 전달받은 index위치의 문자만을 추출해 리턴 char ch = str1.charAt(3); System.out.println("ch : " + ch); //l 2.문자열.concat(String str) : String -> new String으로 생성됨 : 문자열과 전달된 또다른 문자열을 하나로 합쳐서 새로운 문자열 리턴 String str2 = str1.concat("!!!"); -//-> new String으로 생성 System.out.println("str2 : "+ str2); //Hell World!!! String str3 = str1 + "!!!"; //->..
10. API_StringBuilder
2022. 11. 4. 16:42
JAVA
- StringBuilder, StringBuffer = 가변클래스( 기존의 자리에서 값이 변경되는 개념) * 두개의 클래스 모두 생성자나 메소드가 동일함 * 유일한 차이점 동기화 유무 => 속도차이 *동기화 : 한자원에 대해 여러 스레드가 접근하려 할 때 한 시점에서 하나의 스레드만 사용될 수 있도록 하는 것 >StringBuilder : 동기화 제공 x -> 속도가 빠름 > StringBuffer : 동기화 제공 o -> 속도가 느림 ** StringBuilder - 리터럴값 바로 대입 불가 StringBuilder sb1 = "hello"; (x) -객체 생성시 처음에 16개의 문자들을 저장할 수있는 버퍼가 내부적으로 생성 public void method1() { //1.기본 생성자로 생성 Str..
10. API _String
2022. 11. 4. 11:59
JAVA
String 클래스 == 불변클래스 * 값 변경이 가능하긴 하나 그자리에서 수정되는 개념 아님 * 값을 변경하는 순간 새로운 곳을 참조하도록 주소값 변경됨 * * 빈번하게 값을 변경해야 될 경우 GC(가비지컬렉터)가 계속 기존의 값들을 지워줘야하는 단점 * 변경이 적고 한번 값을 담은 후 단지 조회만 할경우 String 클래스가 용이 * public void method1() { //1. 생성자를 통한 문자열 생성 String str1 = new String("hello"); String str2 = new String("hello"); System.out.println(str1/*.toString()*/); //hello System.out.println(str2/*.toString()*/); //he..
10. API _ Math
2022. 11. 4. 11:47
JAVA
//java.lang.Math Math 특징 * 모든 필드 상수필드, 모든 메소드 static 메소드 * 즉, 프로그램 실행과 동시에 이미 static메모리 영역에 다 올라가 있음 => 클래스명. 으로 접근가능 * 생성자가 아예 private으로 되어있음 -> 생성불가하도록 ***한번만 메모리 영역에 올려놓고 재사용하는 개념 => 싱글톤패턴 //Math m = new Math(); -> 생성자가 private 생성 불가 -상수필드 * PI System.out.println("파이: "+ Math.PI); *절대값을 알고자 할때 : abs메소드 int num1 = -10; System.out.println("절대값: "+Math.abs(num1)); //10 *실수값 올림 : ceil메소드 double n..
9_3. 다형성 _ 인터페이스
2022. 11. 3. 16:55
JAVA
-인터페이스 = 상수형 필드와 추상메소드만을 작성할 수 있는 추상 클래스의 변형체 메소드의 통일성을 부여하기 위해 추상메소드만 따로 모아놓은 것으로 상속 시 인터페이스 내에 정의된 모든 추상메소드 구현해야함 인터페이스 장점 -상위타입 역할로 다형성을 지원하여 연결 -해당 객체가 다양한 기능 제공시에도 인터페이스 해당하는 기능만을 사용하게 제한가능 -공통 기능 상의 일관성 제공 -공동 작업을 위한 인터페이스 제공 // 추상클래스 : 일반 멤버변수 + 일반적 메소드 + 추상메소드 // 인터페이스 : only 상수필드 + 추상메소드만 가능 //private int a; (X) //인터페이스 안에서는 오로지 상수필드만 쓸 수 있음 public static final int NUM = 10; int a = 10;..
9_2 . 다형성 _ 추상클래스/ 추상메소드
2022. 11. 3. 16:50
JAVA
* 추상메소드 - 미완성된 메소드로 몸통부({})가 구현되어있지 않은 메소드 - 자식 클래스에서 해당 메소드를 오버라이딩해서 완성시켜야함 * 추상클래스 - 미완성된 클래스 - 객체 생성 불가 ( 단, 레퍼런스로는 사용가능 , 다형성 적용 가능) - 일반 멤버변수 + 일반 메소드 [+ 추상메소드] => 추상메소드 없이도 추상클래스 가능 ( 추상메소드 생략가능) *추상메소드 없어도 추상클래스로 선언가능 //추상메소드(미완성된 메소드) , 자식클래스에서 오버라이딩 해서 완성시켜야함 (강제성) public abstract void rule(); 추상메소드 추가하는 순간 -> 추상 클래스로 적용하기 public abstract class Sports { // 특정클래스 안에 추상메소드가 있으면 추상클래스 선언해야..
9_1 .다형성
2022. 11. 3. 16:45
JAVA
* 다형성의 정의 - 상속구조에서 부모타입으로부터 파생된 여러타입의 자식 객체들을 부모타입 하나로 다룰 수 있는 기술 * 다형성을 쓰는 목적(장점) - 코드 길이 감소 - 클래스 형변환 업 캐스팅(Up Casting) : 부모 타입의 참조형 변수가 모든 자식 타입의 객체 주소를 받을 수 있음 (자식타입 --> 부모타입 으로 자동 형변환) 다운캐스팅 (Down Casting) : 자식 객체의 주소를 받은 부모 참조형 변수를 가지고 자식의 멤버를 참조해야할 경우 , 부모 클래스 타입의 참조형 변수를 자식 클래스 타입으로 형변환 하는 것 (부모타입 --> 자식타입으로 강제 형변환) * 다형성을 사용하는 이유 * 1. 부모타입의 배열로 다양한 자식객체들을 받을 수 있음 * 2. 메소드 정의시 다형성 개념을 적용..
8_2. 상속 오버라이딩
2022. 11. 2. 16:17
JAVA
* 오버라이딩 - 상속받고있는 부모클래스의 메소드를 자식클래스에서 재정의하는 것 => 부모가 제공하고있는 메소드를 자식이 일부 고쳐서 사용하겠다는 것을 의미 *오버라이딩 성립 조건 -부모클래스 메소드명과 동일 -매개변수 갯수, 자료형, 순서 동일 -부모메소드의 반환형 동일 (jdk버전 업 되면서 부모메소드 반환형의 자식 자료형들까지 가능) -부모메소드의 접근제한자보다 같거나 커야함. ex) 부모메소드가 protected일 경우 오버라이딩 메소드는 protected, public가능 *@Override 어노테이션 -생략가능함 , 크게 상관없음 -어노테이션 붙이는걸 권장 >> 자식메소드 기술시 오타가 있을경우 -> 오류발생 부모메소드가 변경됐을 경우 -> 오류발생 >> 단지 이 메소드가 오버라이딩 된 메소드..
8. 상속
2022. 11. 2. 12:42
JAVA
* 상속이란 : 부모(상위) 자식(하위)간의 구조로 클래스를 구성하는 것으로 다른 클래스가 가지고 있는 필드 및 메소드들을 새로 작성할 필요 없이 마치 내 것 처럼 사용할 수 있는 기술 * 상속의 장점 -공통적인 코드들을 부모 클래스에 한번 정의 해두면 새로운 클래스 작성시 적은 양의 코드로 작성 가능 -중복된 코드를 별도로 관리하기 때문에 코드의 추가나 변경이 용이 (프로그램의 생산성과 유지보수에 크게 기여) * 표현식 [접근제한자] class (하위)클래스명 extends (상위)클래스명{} ㄱㅇ - 부모클래스 Product 필드 private String brand; private String pCode; private String pName; private int price; // 자식 -----..