>Java >java지도 시간 >Java의 문자열에 대한 자세한 설명

Java의 문자열에 대한 자세한 설명

迷茫
迷茫원래의
2017-03-26 15:56:451621검색
  • String

Java에서는 문자열을 String 유형의 객체로 취급합니다. String 클래스는 기본적으로 모든 프로그램에서 자동으로 가져오는 java.lang 패키지에 있습니다.

문자열 객체 생성 방법:

String s1 = "java";
String s2 = new String();
String s3 = new String("Java");
  1. Java 문자열의 불변성

문자열 객체는 생성된 후에 수정할 수 없습니다. , 소위 수정은 실제로 다른 메모리 공간을 가리키는 새 객체를 생성합니다.

변경할 수 있는 문자열이 필요한 경우 StringBuffer 또는 StringBuilder를 사용할 수 있습니다.

새 문자열이 생성될 때마다 새 개체가 생성됩니다. 두 문자열의 내용이 동일하더라도 "=="를 사용하여 비교하면 "false"가 됩니다. 내용이 같은지 비교하려면 "equals()" 메소드를 사용해야 합니다.

Java의 상수 풀은 컴파일 중에 결정된 컴파일된 클래스 파일에 데이터를 저장하는 데 사용됩니다.

package cn.test;public class Demo12 {    public static void main(String[] args) {
        String s1 = "java";//先检查字符串常量池中是否有"java"字符串,如果有则直接指向,如果没有就在字符串常量池中添加"java"字符串并指向它,所以这种方式创建字符串时最多创建一个对象,或者不创建对象
        String s2 = "java";//s2直接指向字符串常量池中的"java"
        String s3 = new String("java");//在堆内存申请一块内存存储字符串"java",s3指向其内存块对象,同时检查字符串常量池中是否有"java"字符串,如果没有就添加字符串"java"到常量池中,所以new String()有可能创建两个对象
        String s4 = new String("java");
        System.out.println(s1 == s2);
        System.out.println(s1 == s3);
        System.out.println(s3 == s4);
        s1 = "欢迎来到" + s1;
        System.out.println(s1);
        System.out.println(s3.equals(s4));
    }
}

실행 결과:

true
false
false
Java에 오신 것을 환영합니다
true

  • String 클래스 일반적으로 사용된 메소드

예 1:

String fileName = "HelloWorld.java"; 
String email = "xiaoli@163.com";
        
// 判断.java文件名是否正确:合法的文件名应该以.java结尾
int index = fileName.lastIndexOf('.');  
String prefix = fileName.substring(index+1);
if ( index > 0 && prefix.equals("java")) {
    System.out.println("Java文件名正确");
} else {
    System.out.println("Java文件名无效");
}

// 判断邮箱格式是否正确:合法的邮箱名中至少要包含"@", 并且"@"是在"."之前
int index2 = email.indexOf('@');    
int index3 = email.indexOf('.');
if (index2 != -1 && index3 > index2) {
    System.out.println("邮箱格式正确");
} else {
    System.out.println("邮箱格式无效");
}

  String str = "boo:and:foo";
  String[] arr = str.split(":");
  for (int i = 0; i < arr.length; i++)
  {
    System.out.print(arr[i]);
  }
rrree

실행 결과:

Java 파일 이름이 정확합니다
이메일 형식이 정확합니다
booandfoo

예시 2:

String str = "boo:and:foo";
  String[] arr = str.split(":");
  
for
 (int i = 0; i < arr.length; i++)
  {
    System.out.print(arr[i]);
  }

실행 결과:

[97][98][99][100][-80 ][- 94]

참고: 1바이트는 8비트와 같습니다. gbk 인코딩에서는 한자 1자 저장에는 2바이트가 필요하고, 영문자 1자 저장에는 1바이트가 필요합니다.

예 3:

String str = "abcd阿";
byte[] b = str.getBytes();
for (int j = 0; j < b.length; j++) {
    System.out.print("[" + b[j] + "]");
}

실행 결과:

문자 a 발생 횟수: 8

  • StringBuilder 클래스

String 클래스는 변경 가능하며 문자열을 자주 조작할 때 많은 임시 변수 가 생성됩니다. 이 문제는 StringBuilder 또는 StringBuffer를 사용하여 피할 수 있습니다. 기본적으로 비슷하지만 StringBuffer는 스레드안전하므로 성능이 약간 더 높다는 차이점이 있습니다. 따라서 일반적으로 가변 내용이 포함된 문자열 개체를 만들려면 StringBuilder 클래스가 선호됩니다.

String s = "aljlkdsflkjsadjfklhasdkjlflkajdflwoiudsafhaasdasd";        
// 出现次数int num = 0;        
 // 循环遍历每个字符,判断是否是字符 a ,如果是,累加次数for (  int i = 0;i < s.length(); i++ )
{ // 获取每个字符,判断是否是字符a
    if (  s.charAt(i) == &#39;a&#39; ) {     // 累加统计次数
    num++; 
    }
}
System.out.println("字符a出现的次数:" + num);

StringBuilder 클래스의 일반적인 메서드:

위 내용은 Java의 문자열에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.