일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 정보처리기사실기
- CSS
- 국비코딩
- 스프링
- 정보처리기사실기정리
- VUE
- 정보처리기사요약
- 평일코딩
- 자스코테
- 정보처리기사실기요약
- 자바스크립트 코딩테스트
- 국비IT
- 정보처리기사
- 타입스크립트
- 리액트네이티브
- Oracle
- 이안의평일코딩
- typescript
- javascript
- Java의정석
- ReactNative
- 리액트
- 오라클
- 코딩테스트
- spring
- 자바의정석
- 자바스크립트
- react
- 정보처리기사정리
- php
- Today
- Total
이안의 평일코딩
JAVA의 정석 29일차 - String, StringBuffer, Math, Wrapper 본문
2020.07.23(목)
1. java.lang - Object : 최상위 클래스 (모든 클래스들 통합)
* 주요 메소드
(1) finalize() : 소멸자 (메모리 해제) => 최적화(퍼포먼스가 좋아짐)
=> PMD(정적분석) 성능테스트, JMeter(서버성능테스트), JUnit 단위테스트
자동 메모리 해제 -> 가비지 컬렉션 gc() 메모리 회수
(2) clone() : 있는 그대로 복제 (Spring에서는 prototype)
1) 새로운 메모리 제작 new
class A {
int a = 10
}
A aa = new A(); (원래는 int malloc(A)였음)
aa.a=100;
A bb = new A(); (new를 쓰게되면 초기화되서 10이 들어감)
2) 기존 -> 복제
A cc = aa clone();
생성자 : 멤버변수 초기화 담당하는 함수
3) 기존 -> 참조 Call by Reference(값이 바뀜) <-> Call by Value (값이 그대로)
* String은 Call by Value만 사용해서 안바뀜
(3) toString : 객체를 문자열로 변환 or (String)으로 형변환
*상속
class A extends B
B a = new A(); 가능 (B 상속받으므로 B가 더 큼)
A a = new B(); 불가능
class A (extends Object)
A a = new A();
Object a = new A(); 가능
2. java.lang - String / StringBuffer
문자열이 같으면 같은 주소에 저장된다
String s1 = "Hello";
String s2 = "Hello";
s1 == s2
String s3 = new String("Hello"); => 새로운 메모리 공간이 생김 (다른 주소에 생성)
s1 != s3
s1.equals(s3)은 같다
equals() : 대소문자를 구분 => 로그인(id, password), 아이디중복
equalsIgnoreCase() : 대소문자 구분없다 => 검색창에서 주로 사용
1) String
(1) 문자열은 주소다 "Hello", "Java"...
(2) char[] => 제어하는 클래스
(3) 주요 기능(메소드)
- length() : 문자의 갯수
- trim() : 좌우의 공백제거
- substring() : 문자 분해
- indexOf() , lastIndexOf() : 문자의 위치
- equals() : 저장된 문자를 비교
- 찾기 => 포함 contains ==> LIKE
시작 startsWith
끝 endsWith
===인스턴스 메소드
static 메소드(공동으로 사용)
- valueOf() => 모든 기본형을 문자열로 변환
indexOf, trim, length, substring
package com.sist.string;
public class MainClass {
public static void main(String[] args) {
String s="background-image: url(' https://mp-seoul-image-production-s3.mangoplate.com/"
+ "0776fea76b4a824ff583128cb51dd45c.jpg ')";
String temp=s.substring(s.indexOf("'")+1,s.lastIndexOf("'"));
System.out.println(temp.trim());
String ss="예쁜 서해바다를 보면서 즐기는 애프터눈티. 조식먹는 곳 보다 뷰가 시원하지 않은게 아쉽지만 날 좋은 때 오후를 보내기에 나쁘지 않다. 샌드위치는";
if(ss.length()>20) {
String sss = ss.substring(0,20)+"...";
System.out.println(sss);
}
}
}
Find
package com.sist.string;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.select.Elements;
import java.util.*;
/*
* Find (true/false => boolean => if문)
* => 포함 contains() =오라클=> LIKE '%데이터%'
* => 시작 문자열 startsWith() => LIKE '데이터%'
* => 끝 문자열 endsWith() => LIKE '%데이터'
*/
public class MainClass2 {
public void find(String ss) {
try {
for(int i=1; i<=3; i++) {
Document doc = Jsoup.connect("https://movie.daum.net/premovie/released?reservationOnly=N&sort=reservation&page="+i).get(); //i가 페이지수
Elements title=doc.select("a.name_movie");
for(int j=0; j<title.size(); j++) { // title.size => 저장된 갯수만큼
// boolean java.lang.String.endsWith(String suffix
// boolean java.lang.String.startsWith(String prefix)
// boolean java.lang.String.contains(CharSequence s)
if(title.get(j).text().endsWith(ss)) {
//if(title.get(j).text().startsWith(ss)) {
//if(title.get(j).text().contains(ss)) {
System.out.println(title.get(j).text());
}
/*
* 실제 찾기 => contains()
* 서제스트 => startsWith() : 자동 완성기
*/
}
}
}catch(Exception ex) {}
}
public static void main(String[] args) {
MainClass2 m = new MainClass2();
Scanner scan = new Scanner(System.in);
System.out.print("검색어:");
String ss = scan.next();
m.find(ss);
}
}
ValueOf()
package com.sist.string;
// valueOf() : 모든 데이터형을 문자열로 변환 ==> static
// String.valueOf(int) ==> 윈도우, 웹, 모바일 ==> 취급을 문자열
// <input type="text">
import java.awt.*;
import javax.swing.*;
public class MainClass3 extends JFrame {
JTextField tf = new JTextField();
JLabel la = new JLabel();
public MainClass3() {
tf.setText(String.valueOf(10)); //윈도우창은 정수라는 개념이 없음 => 문조건 문자열
la.setText(String.valueOf(10.5));
add("North", tf);
add("South", la);
setSize(350, 200);
setVisible(true);
}
public static void main(String[] args) {
new MainClass3();
}
}
2) StringBuffer
package com.sist.string;
// StringBuffer : 문자열을 결합할 경우 ==> append()
import java.io.*; // => CheckException 예외처리를 하고 사용. 파일 읽어온 값
// 또는 throws Exception 해도됨
public class MainClass4 {
public static void main(String[] args) {
try {
// 파일 읽기
// String data = "";
StringBuffer data = new StringBuffer();
FileReader fr = new FileReader("c:\\javaDev\\movie.txt");
int i=0;
while((i=fr.read())!=-1) { //한글자씩 읽어옴, -1이 파일의 종료점 (EOF : End Of File)
data.append(String.valueOf((char)i));
}
fr.close();
System.out.println(data.toString()); //문자열로 변환
}catch(Exception ex) {}
}
}
package com.sist.string;
import java.io.FileReader;
/*
* StringBuffer : 동기화 (Builder보다 더 안정성이 있음)
* StringBuilder : 비동기화 (속도 빠름)
*/
public class MainClass5 {
public static void main(String[] args) throws Exception {
long start = System.currentTimeMillis();
//String data = "";
//StringBuffer sb = new StringBuffer();
StringBuilder sb = new StringBuilder();
FileReader fr = new FileReader("c:\\javaDev\\movie.txt");
int i=0;
while((i=fr.read())!=-1) {
//data+=String.valueOf((char)i);
sb.append(String.valueOf((char)i));
}
fr.close();
long end=System.currentTimeMillis();
System.out.println("수행시간:"+(end-start));
}
}
join, format
package com.sist.string;
// join, format, indexOf => static
public class MainClass6 {
public static void main(String[] args) {
String[] arr = {"홍길동", "심청이", "박문수", "이순신", "춘향이"};
System.out.println(String.join("-", arr)); //홍길동-심청이-박문수-이순신-춘향이
String str = String.format("%d - %d = %d", 10, 2, 10-2);
System.out.println(str); // 10 - 2 = 8
}
}
3. java.lang - Math / Wrapper(기본형에 대한 클래스)
1) Math
= random() => 0.0~0.99
= ceil() => 올림함수 Math.ceil(10.1) => 11
총 페이지 구하기
2) Wrapper(기본형에 대한 클래스)
==================> int a = (int)"10"; (X)
Integer = parseInt()
Double = parseDouble()
Boolean = parseBoolean()
Long = parseLong()
//Integer i = new Integer(10);
//int ii = i.valueOf()
Integer i = 10; // 박싱
int ii = i; // 언박싱
자바 3대 클래스
1. String
2. Integer
3. ArrayList ==> CURD =오라클=> 삭제DELETE, 입력INSERT, 수정UPDATE, 조회SELECT
* System
= System.currentTimeMillis(); 로그파일 => 현재시간
= System.out.println(); => 화면 출력
= System.gc(); => 메모리를 회수 => 가비지컬렉션 호출
= System.exit(); => 프로그램 종료
'Back-end > Java' 카테고리의 다른 글
JAVA의 정석 31일차 - 입출력 I/O (0) | 2020.07.27 |
---|---|
JAVA의 정석 30일차 - java.util, calendar, collection (0) | 2020.07.24 |
JAVA의 정석 28일차 - java.lang패키지 Object클래스 (0) | 2020.07.22 |
JAVA의 정석 27일차 - 예외회피 (0) | 2020.07.21 |
JAVA의 정석 26일차 - 예외처리 (0) | 2020.07.20 |