`
ltx
  • 浏览: 25857 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
最近访客 更多访客>>
社区版块
存档分类
最新评论

Java中的String类

 
阅读更多

1String

1.1String的两种实例化方式

       String本身是一个类,在String类中定义了如下的构造方法:
public String (String original)
       可以接收一个String类的对象,并重新数实例化String对象,除此之外String还可以采用直接赋值的方式进行对象初始化。
public class StringDemo01{
       public static void main(String args[]) {
              String str1 = "hello" ;
              String str2 = new String("AUST") ;
              System.out.println(str1 + " " + str2);
              System.out.println() ;
       }
}
 

1.2String的比较方式

       范例:用“==”比较
public class StringDemo02{
       public static void main(String args[]){
              String str1 = "hello" ;
              String str2 = new String("hello") ;
              String str3 = str2 ;
              System.out.println("str1 == str2 -->" + (str1==str2));   //false
              System.out.println("str1 == str3 -->" + (str1==str3));  //false
              System.out.println("str2 == str3 -->" + (str2==str3));  //true
       }
}
 
       得出结果,用“==”比较的是两个对象的地址是否相等,具体来讲实际上比较的是地址的值,因为地址是以数值的形式存在的。
       但是现在真正要比较的不是地址的值,而是两个字符串的内容,用String类中的equals()方法完成比较,此方法定义如下:
l  public boolean equals(String str)
范例:使用equals()修改程序
public class StringDemo03 { 
       public static void main(String args[]) { 
              String str1 = "hello" ; 
              String str2 = new String("hello") ; 
              String str3 = str2 ; 
              System.out.println("str1  equals  str2 -->" + str1.equals(str2));   //true 
              System.out.println("str1  equals  str3 -->" + str1.equals(str3));  //true 
              System.out.println("str2  equals  str3 -->" + str2.equals(str3));  //true 
       }  
}
 

1.3、一个字符串实际上就是String的匿名对象

一个字符串是使用“”括起来的,那么一个字符串的常量实际上就属于String的一个匿名对象。
public class StringDemo04{
       public static void main(String args[]) {
              String str1 = "hello" ;
              System.out.println("hello".equals(str1));   
       }
} 

   

1.4String的两种实例化方式的区别

       所有的操作以内存图形表示出来
String str1 = “hello” ;
 
       此时在堆内存空间中,只开辟一个空间,不会产生多余的内容。
如果使用关键字new的方式呢?
String str2 = new String(“hello”) ;
可以发现,程序开辟了两个空间,与前一个相比方便多了。所以在开发中绝对不能使用关键字new调用String类的StringString org)的构造方法。
       而且,如果直接使用赋值的方式也可以减少堆内存的开销。
public class StringDemo05{
       public static void main(String args[]){
              String str1 = "hello" ;
              String str2 = "hello" ;
              String str3= "hello" ;
              System.out.println("str1 == str2 -->" + (str1==str2));   //true
              System.out.println("str1 == str3 -->" + (str1==str3));  //true
              System.out.println("str2 == str3 -->" + (str2==str3));  //true
       }
} 

        
           
       实际上,以上的三个对象表示的都是同一个空间的引用,因为对于String来讲使用直接赋值的方式会在字符串池中保存内容。如果之后在声明字符串的时候发现内容一样,则不会重新开辟空间,而是从内存池中取出数据继续使用。

1.5、字符串的内容一旦声明后则无法修改

public class StringDemo06{
       public static void main(String args[]){
              String str1 = "hello" ;
              str1 += " world" ;
              System.out.println(str1);  
       }
} 

 
       虽然最终输出的结果改变了,但是字符串的内容真的改变了吗?
 实际上来讲,字符串变量的改变改变的是内存空间的地址指向,而本身的字符串内容没有任何改变。所以,在开发中以下的操作代码绝对要避免。
public class StringDemo07 { 
       public static void main(String args[]) { 
              String str1 = "hello" ; 
              for (int i = 0 ; i< 100 ; i ++ ) 
              { 
                     str1 += i ; 
              }     
              System.out.println(str1);  
       } 
} 
 
以上操作要不断的断开已有的连接,指向新连接100次,整体代码的性能极其低,所以遇到此类代码绝对不要使用。

本文出自 “笑问客” 博客,请务必保留此出处http://javalinux.blog.51cto.com/1027174/362719

分享到:
评论

相关推荐

    Java中String类中的常用方法.TXT

    简单总结可以下Java中String类中的常用方法

    Java中String类的详细文档打印版

    ### Java中String类详解 #### 引言 在Java编程语言中,`String`类扮演着至关重要的角色,它用于表示字符序列。本文档旨在深入探讨`String`类的特性和功能,帮助开发者更好地理解和应用这一核心类。 #### String类...

    java中String类的知识

    ### Java中String类的知识 #### 一、String 类概述与创建方式 在Java语言中,`String`类是用于表示不可变字符序列的核心类之一。它代表了一个字符串对象,一旦被初始化后,其内容不能被改变。这被称为不可变性...

    java基础String类选择题练习题

    根据提供的信息,我们可以总结出这份Java基础String类选择题练习题主要聚焦于String及StringBuffer类的使用。尽管具体的题目内容未给出,但从所展示的信息中可以推断出该练习题集涵盖了以下几方面的知识点: ### 一...

    介绍java中String类的方法

    Java中的String类是编程中非常基础且重要的一个类,它代表不可变的字符序列,即一旦创建,其内容就不能更改。下面我们将详细讨论String类的一些主要特性、实例化方式以及常用方法。 1. **String类的实例创建**: -...

    javastring类的源码

    java jdk中string类的源码 ,了解string类的书写,定义和声明

    Java中String类.pdf

    Java中的String类是编程中最常用的数据类型之一,它在处理文本数据时扮演着核心角色。String类位于java.lang包中,意味着它无需显式导入即可在任何Java程序中使用。由于字符串在Java中被视为不可变对象,即一旦创建...

    深入解析 Java 中的 String 类:特性与使用

    Java 中的 String 类是 Java 编程语言中最基本的类之一,用于表示字符串。它在 java.lang 包中,是所有 Java 程序的默认一部分。String 类是不可变的,这意味着一旦创建了 String 对象,就不能更改它所包含的字符...

    Java中String类的方法及说明.doc

    在Java编程语言中,String类是一个非常基础且重要的类,它代表不可变的字符序列。String类提供了多种方法,使得开发者能够方便地处理字符串。以下是对标题和描述中提到的Java String类方法的详细说明: 1. **构造...

    JAVA中String类与StringBuffer类的区别

    在Java编程语言中,String类和StringBuffer类是处理字符串的两种主要方式,它们各自有不同的特性和适用场景。理解二者的区别对于编写高效、优化的代码至关重要。 1. **String类**: - **不可变性**:String类的...

    Java中String类的方法及说明.pdf

    Java中的String类是Java语言中最基础且至关重要的类之一,它代表不可变的字符序列。在Java中,字符串被广泛用于各种数据处理和文本操作。本文将深入探讨String类的一些关键方法及其用法。 首先,让我们看看String类...

    Java中String中类的常用方法.doc

    ### Java中String类的常用方法详解 在Java编程语言中,`String` 类是一个非常重要的类,用于表示不可变的字符序列。它提供了丰富的内置方法,使得开发人员能够轻松地处理字符串相关的操作。本文将详细介绍Java中`...

    Java中String类(字符串操作)的10个常见问题和解决方法

    标题为"Java中String类(字符串操作)的10个常见问题和解决方法"的文档主要探讨了Java语言中字符串处理的核心类String的使用细节和最佳实践。以下是根据文档内容总结的知识点: 1. 字符串比较 在Java中,比较字符串...

    全面解析Java中的String类的使用

    在Java编程语言中,String类是使用最广泛的类之一,它代表不可变的字符序列。以下是对Java中String类的全面解析,包括其比较方式、字符串常量的本质、以及常用的字符串操作方法。 一、String的比较方式 在Java中,...

    java中String类的笔试面试题含答案

    Java中的String类是编程面试和笔试中经常出现的考察点,因为它在日常开发中极其重要。下面我们将深入探讨几个关于String类的知识点。 1. **字符串对象的创建和比较** 在Java中,创建字符串有两种方式:直接赋值...

    5.javaString类.zip

    5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5.javaString类.zip5....

    Java的String类

    在Java编程中,`String`类是最常用的数据类型之一,用于处理文本数据。它是一个不可变类,意味着一旦创建了一个`String`对象,其内容就不能更改。这使得`String`类在多线程环境中非常安全,同时也带来了一些性能上的...

Global site tag (gtag.js) - Google Analytics