정보
-
업무명 : 자바 문자열에 대한 유용한 방법
-
작성자 : 이상호
-
작성일 : 2020-04-07
-
설 명 :
-
수정이력 :
내용
[개요]
-
안녕하세요? 웹 개발 및 연구 개발을 담당하고 있는 해솔입니다.
-
Java 프로그래밍 언어는 원래 Sun Microsystems가 개발했으며 James Gosling이 시작하여 1995년 Sun Microsystems Java 플랫폼 (Java 1.0 J2SE)의 핵심 구성 요소로 발표하였습니다.
-
Java Standard Edition의 최신 버전은 Java SE 1.2입니다. Java의 개발과 광범위한 인기로 인해 다양한 유형의 플랫폼에 맞게 다양한 구성이 구성되었습니다.
-
예를 들어 엔터프라이즈 애플리케이션용 J2EE, 모바일 애플리케이션용 J2ME뿐만 아니라 새로운 J2 버전은 각각 Java SE , Java EE 및 Java ME로 이름이 변경되었습니다.
-
오늘 포스팅에서는 자바 문자열에 대한 유용한 방법을 소개해 드리고자 합니다.
[장점]
-
객체 지향
-
Java에서는 모든 것이 객체입니다. Java는 오브젝트 모델을 기반으로하기 때문에 쉽게 확장할 수 있습니다.
-
-
플랫폼 독립적
-
다른 많은 프로그래밍 언어 (C 및 C ++ 포함)와 달리 Java를 컴파일 할 때 플랫폼 특정 시스템으로 컴파일되지 않지만 플랫폼 독립적 바이트 코드로 컴파일됩니다. 이 바이트 코드는 웹을 통해 배포되며 실행되는 모든 플랫폼에서 가상 머신 (JVM)에 의해 구문 분석됩니다.
-
-
간단함
-
Java는 배우기 쉽습니다. OOP Java의 기본 개념을 이해하면 쉽게 익힐 수 있습니다.
-
-
보안
-
Java의 보안 기능 덕분에 바이러스가없고 변조가없는 시스템을 개발할 수 있습니다. 신원 확인 기술은 공개 키 암호화를 기반으로합니다.
-
-
아키텍처 중립적
-
Java 컴파일러는 아키텍처 중립적 객체 파일 형식을 생성하여 많은 프로세서에서 컴파일 된 코드를 실행할 수 있으며 Java 런타임 시스템이 있습니다.
-
-
이식성
-
아키텍처가 중립적이고 사양 관련 구현이 없기 때문에 Java는 이식 가능합니다. Java의 컴파일러는 이식성 경계가 깨끗한 ANSI C로 작성되었으며 POSIX 하위 세트입니다.
-
-
강력한
-
Java는 컴파일 타임 오류 검사 및 런타임 검사를 강조하여 오류가 발생하기 쉬운 상황을 해결하기 위해 노력합니다.
-
-
멀티스레딩
-
Java의 멀티 스레딩 기능을 사용하면 많은 작업을 동시에 수행 할 수있는 프로그램을 작성할 수 있습니다. 이 디자인 기능을 통해 개발자는 원활하게 실행할 수있는 대화 형 응용 프로그램을 구축 할 수 있습니다.
-
-
설명 언어
-
Java 바이트 코드는 즉시 기본 기계 명령어로 변환되며 어디에도 저장되지 않습니다. 링크는 점진적이고 가벼운 프로세스이므로 개발 프로세스가 더 빠르고 분석적입니다.
-
-
고성능
-
Just In Time 컴파일러를 사용하여 Java가 고성능을 달성 할 수 있습니다.
-
-
Distributed
-
Java는 인터넷의 분산 환경을 위해 설계되었습니다.
-
-
동적
-
Java는 변화하는 환경에 적응하도록 설계 되었기 때문에 C 또는 C ++보다 동적으로 간주됩니다. Java 프로그램은 많은 런타임 정보를 전달할 수 있으며 런타임시 오브젝트에 대한 액세스를 확인하고 해결하는 데 사용될 수 있습니다.
-
[역사]
-
James Gosling은 1991년 06월에 수많은 셋톱 박스 프로젝트 중 하나에서 사용되는 Java 언어 프로젝트를 시작했습니다.
-
Sun은 1995년에 최초의 공개된 Java 1.0 구현을 발표했습니다. Write Once, Run Anywhere (WORA)를 약속하며 널리 사용되는 컴퓨터 플랫폼에서 실행됩니다.
-
2006년 11월 13일 Sun은 GNU General Public License (GPL)의 조건에 따라 대부분의 Java를 무료 및 오픈 소스 소프트웨어로 출시했습니다.
-
2007년 05월 08일 Sun은이 프로세스를 완료했습니다. Sun이 소유하지 않은 코드의 일부를 제외하고 모든 핵심 Java 코드는 무료이며 공개 소스입니다.
[특징]
-
웹 개발을 위해서 자바 (Java)기술이 요구되며 이 프로그램은 이러한 목적을 달성하기 위한 기술서
[기능]
-
자바 문자열에 대한 유용한 방법
[활용 자료]
-
없음
[자료 처리 방안 및 활용 분석 기법]
-
없음
[사용법]
-
없음
[사용 OS]
-
Windows 10
[사용 언어]
-
Java v1.8
-
Visual Studio Code v1.43.2
세부 내용
문자열을 비교하는 방법
[compareTo 메서드를 사용하여 비교]
-
str.compareTo(string)와 str.compareToIgnoreCase(String) 및 compareTo(object string) 문자열 클래스를 비교
public class StringCompareEmp {
public static void main(String args[]) {
String str = "Hello World";
String anotherString = "hello world";
Object objStr = str;
System.out.println(str.compareTo(anotherString));
System.out.println(str.compareToIgnoreCase(anotherString));
System.out.println(str.compareTo(objStr.toString()));
}
}
-32
0
0
[equals 메소드를 사용하여 비교]
-
equals를 통해 문자열 객체와 비교
-
전달 인자 (s1, s4)가 다른 경우에 대해서만 false로 반환
public class StringCompareequlA {
public static void main(String[] args) {
String s1 = "yiibai";
String s2 = "yiibai";
String s3 = new String("yiibai");
String s4 = new String("Yiibai");
System.out.println(s1.equals(s2));
System.out.println(s2.equals(s3));
System.out.println(s3.equals(s4));
}
}
true
true
false
[사용 == 비교]
public class StringCompareequlB {
public static void main(String[] args) {
String s1 = "yiibai";
String s2 = "yiibai";
String s3 = new String("yiibai");
String s4 = new String("Yiibai");
System.out.println(s1 == s2);
System.out.println(s2 == s3);
System.out.println(s3 == s4);
}
}
true
false
false
지정된 문자열의 마지막 항목을 검색하는 방법
-
strOrig.lastIndexOf(Stringname)를 통해 문자열 내에서 지정된 문자열의 마지막을 검색
public class SearchlastString {
public static void main(String[] args) {
String strOrig = "Hello world ,Hello Reader,Hello Sukida";
int lastIndex = strOrig.lastIndexOf("Hello");
if (lastIndex == -1) {
System.out.println("Hello not found");
} else {
System.out.println("Last occurrence of Hello is at index "
+ lastIndex);
}
}
}
Last occurrence of Hello is at index 26
문자열에서 지정된 문자를 삭제하는 방법
-
removeCharAt(string,position)를 통해 문자열에서 지정된 문자를 삭제
public class DeletingCharacter {
public static void main(String args[]) {
String str = "This is a Java grogram.";
System.out.println(removeCharAt(str, 13));
}
public static String removeCharAt(String s, int pos) {
return s.substring(0, pos) + s.substring(pos + 1);
}
}
This is a Jav grogram.
문자열의 하위 문자열을 변경하는 방법
-
replace는 java String 클래스의 메소드로서 지정된 문자열을 새로운 문자로 바꾸는 방법
public class StringReplaceEmp {
public static void main(String args[]) {
String str = "Welcome to yiibai.com";
System.out.println("Result 1:"+str.replace('W', 'H'));
System.out.println("Result 2:"+str.replaceFirst("He", "Wo"));
System.out.println("Result 3:"+str.replaceAll(".com", ".cn"));
}
}
Result 1:Helcome to yiibai.com
Result 2:Welcome to yiibai.com
Result 3:We.cne to yiibai.cn
문자열을 역전하는 방법
-
StringBuffer(String string)를 통해 입력 문자열을 버퍼링 및 반전시켜 문자열로 변환
public class StringReverseExample {
public static void main(String[] args) {
String string = "abc123";
String reverse = new StringBuffer(string).reverse().toString();
System.out.println("String before reverse: " + string);
System.out.println("String after reverse: " + reverse);
}
}
String before reverse: abc123
String after reverse: 321cba
-
매개 변수에서 문자열 (input)을 반복문을 통해 거꾸로 출력
public class StringReverseExample2 {
public static void main(String[] args) {
String input = "yiibai.com";
char[] try1 = input.toCharArray();
for (int i = try1.length - 1; i >= 0; i--)
System.out.print(try1[i]);
}
}
moc.iabiiy
문자열에서 문구를 검색하는 방법
-
문자열에서 단어의 위치값을 반환하는 indexOf를 사용하여 단어를 검색
-
검색 결과가 없을 경우 -1을 반환
public class SearchStringEmp {
public static void main(String[] args) {
String strOrig = "Hello, Sukida";
int intIndex = strOrig.indexOf("Su");
if (intIndex == -1) {
System.out.println("Su not found");
} else {
System.out.println("Found Su at index : " + intIndex);
}
}
}
Found Su at index : 7
-
String 객체에서 contains를 통해 단어를 검색
public class SearchStringEmp2 {
public static void main(String[] args) {
String text = "This is my dog, it is name PigPig";
System.out.print("Is found the word ? " + text.contains("dog"));
}
}
Is found the word ? true
문자열을 여러 개의 하위 문자열로 나누는 방법
-
split(string)를 통해 문자열 및 구분자 (-, \\.)로부터 여러 하위 문자열로 분할
-
구분자가 공백의 경우 \\s를 사용
public class JavaStringSplitEmp {
public static void main(String args[]) {
String str = "this-is-my-dog";
String[] temp;
String[] temp2;
String delimeter = "-";
temp = str.split(delimeter);
for (int i = 0; i < temp.length; i++) {
System.out.println(temp[i]);
}
System.out.println("--------------- line -----------------");
str = "max.min.avg.sum";
delimeter = "\\.";
temp2 = str.split(delimeter);
for (int i = 0; i < temp2.length; i++) {
System.out.println(temp2[i]);
}
}
}
this
is
my
dog
--------------- line -----------------
max
min
avg
sum
문자열을 대문자로 완전히 변환하는 방법
-
String 클래스의 toUpperCase를 통해 대문자로 변경
public class StringToUpperCaseEmp {
public static void main(String[] args) {
String str = "string 123 ab1 Sukida toupperCase ";
String strUpper = str.toUpperCase();
System.out.println("Original String: " + str);
System.out.println("String changed to upper case: " + strUpper);
}
}
Original String: string 123 ab1 Sukida toupperCase
String changed to upper case: STRING 123 AB1 SUKIDA TOUPPERCASE
문자열의 영역을 일치시키는 방법
-
regionMatches을 통해 두 문자열의 영역이 일치 확인
-
해당 전달 인자에 대한 설명
-
11 : 비교가 시작되는 문자열의 인덱스
-
second_str : 대상 문자열
-
12 : 대상 문자열과 비교할 인덱스
-
3 : 비교할 문자수
-
public class StringRegionMatch {
public static void main(String[] args) {
String first_str = "Welcome to IBM";
String second_str = "I work with IBM";
boolean match = first_str.regionMatches(11, second_str, 12, 3);
System.out.println("first_str[11->14] == " + "second_str[12 -> 15]: "
+ match);
}
}
first_str[11->14] == second_str[12 -> 15]: true
두 문자열의 생성 성능을 비교하는 방법
-
2가지 서로 다른 방식 (String literals vs String objects)으로 생성된 문자열의 성능을 비교
public class StringComparePerformance {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 50000; i++) {
String s1 = "This is a String";
String s2 = "This is a String";
}
long endTime = System.currentTimeMillis();
System.out.println("Time taken for creation" + " of String literals : "
+ (endTime - startTime) + " milli seconds");
long startTime1 = System.currentTimeMillis();
for (int i = 0; i < 50000; i++) {
String s3 = new String("This is a String");
String s4 = new String("This is a String");
}
long endTime1 = System.currentTimeMillis();
System.out.println("Time taken for creation" + " of String objects : "
+ (endTime1 - startTime1) + " milli seconds");
}
}
Time taken for creation of String literals : 0 milli seconds
Time taken for creation of String objects : 16 milli seconds
문자열 생성을 최적화하는 방법
-
literals와 new String 및 String.intern를 통해 문자열 생성
public class StringOptimization {
public static void main(String[] args) {
String variables[] = new String[50000];
for (int i = 0; i < 50000; i++) {
variables[i] = "s" + i;
}
long startTime0 = System.currentTimeMillis();
for (int i = 0; i < 50000; i++) {
variables[i] = "hello";
}
long endTime0 = System.currentTimeMillis();
System.out.println("Creation time" + " of String literals : "
+ (endTime0 - startTime0) + " ms");
long startTime1 = System.currentTimeMillis();
for (int i = 0; i < 50000; i++) {
variables[i] = new String("hello");
}
long endTime1 = System.currentTimeMillis();
System.out.println("Creation time of"
+ " String objects with 'new' key word : "
+ (endTime1 - startTime1) + " ms");
long startTime2 = System.currentTimeMillis();
for (int i = 0; i < 50000; i++) {
variables[i] = new String("hello");
variables[i] = variables[i].intern();
}
long endTime2 = System.currentTimeMillis();
System.out.println("Creation time of"
+ " String objects with intern(): " + (endTime2 - startTime2)
+ " ms");
}
}
Creation time of String literals : 0 ms
Creation time of String objects with 'new' key word : 0 ms
Creation time of String objects with intern(): 15 ms
문자열을 포맷하는 방법
-
format를 통해 형식화된 문자열로 반환
public class StringFormat {
public static void main(String[] args) {
double e = Math.E;
System.out.format("%f%n", e);
System.out.format(Locale.GERMANY, "%-10.4f%n%n", e);
}
}
2.718282
2,7183
두 줄을 연결하는 방법
-
+ 연산자 및 StringBuffer.append를 사용하여 문자열 연결
public class StringConcatenate {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
for (int i = 0; i < 99999; i++) {
String result = "This is" + "testing the" + "difference"
+ "between" + "String" + "and" + "StringBuffer";
}
long endTime = System.currentTimeMillis();
System.out.println("Time taken for string"
+ "concatenation using + operator : " + (endTime - startTime)
+ " ms");
long startTime1 = System.currentTimeMillis();
for (int i = 0; i < 99999; i++) {
StringBuffer result = new StringBuffer();
result.append("This is");
result.append("testing the");
result.append("difference");
result.append("between");
result.append("String");
result.append("and");
result.append("StringBuffer");
}
long endTime1 = System.currentTimeMillis();
System.out.println("Time taken for String concatenation"
+ "using StringBuffer : " + (endTime1 - startTime1) + " ms");
}
}
Time taken for stringconcatenation using + operator : 0 ms
Time taken for String concatenationusing StringBuffer : 47 ms
문자열의 유니 코드를 얻는 방법
-
codePointBefore를 사용하여 지정된 인덱스 앞에 문자 (Unicode 코드 포인트)를 반환
public class StringUniCode {
public static void main(String[] args) {
String test_string = "Welcome to Yiibai.com";
System.out.println("String under test is = " + test_string);
System.out.println("Unicode code point at"
+ " position 15 in the string is = "
+ test_string.codePointBefore(15));
}
}
String under test is = Welcome to Yiibai.com
Unicode code point at position 5 in the string is = 98
문자열을 버퍼링하는 방법
-
문자열을 버퍼링하여 emit를 사용
public class StringBuffer {
public static void main(String[] args) {
countTo_N_Improved();
}
private final static int MAX_LENGTH = 30;
private static String buffer = "";
private static void emit(String nextChunk) {
if (buffer.length() + nextChunk.length() > MAX_LENGTH) {
System.out.println(buffer);
buffer = "";
}
buffer += nextChunk;
}
private static final int N = 100;
private static void countTo_N_Improved() {
for (int count = 2; count <= N; count = count + 2) {
emit(" " + count);
}
}
}
2 4 6 8 10 12 14 16 18 20 22
24 26 28 30 32 34 36 38 40 42
44 46 48 50 52 54 56 58 60 62
64 66 68 70 72 74 76 78 80 82
참고 문헌
[논문]
- 없음
[보고서]
- 없음
[URL]
- 없음
문의사항
[기상학/프로그래밍 언어]
- sangho.lee.1990@gmail.com
[해양학/천문학/빅데이터]
- saimang0804@gmail.com
본 블로그는 파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
최근댓글