一起Talk Android吧(第十六回:Java常用类之String)
2017-04-16 09:31
399 查看
各位看官们,大家好,上一回中咱们说的是Java常用类之Arrays的例子,这一回咱们说的例子是Java常用类之String。闲话休提, 言归正转。让我们一起Talk Android吧!
看官们,我们在前面章回中介绍Java中的基本类型时提到过String类型,当时还没有介绍类,因此一笔带过,今天我们将详细介绍它。
这两种方式都可以定义一个字符串类型的变量,并且给变量进行了赋值操作。不过它们还是有区别的:
方式一是把已经在堆内存中的变量和str1关联在了一起,在此之前堆内存中的变量是没有具体的名称的, 因此我们称它为匿名对象,匿名对象可以和变量str1关联,也可以和其它字符串类型的变量关联;
方式二是为str2在堆内存中重新申请一块内存空间,而且把内存空间和str2关联在了一起。
为了看清楚这两种方式之间的区别,我们再来一段代码:
对比上面的代码,我们可以说,str1和str3关联了同一段内存空间,而且str2和str4则是关联了不同的内存空间。真的是这样吗?有客官提问了,看官莫急,我们待会儿通过具体的代码来证明。
除了不同点外,这两种方式也有共同的特点,那就是它们都是字符串类型的变量,该变量只是一个名称,而真正的值位于内存中,我们可以通过操作变量名称来操作位于内存中的字符串。好了,不多说了,我们来点代码做说明:
在上面的代码中我们使用了操作符“==”来判断字符串变量是否使用了相同的内存空间,下面是程序的运行结果,请大家参考:
从程序的运行结果中可以直观地看到两种字符串实例化方式的区别。这是对我们上面分析结果最好的验证。
此外,我们说一下操作符“==”,它用来判断两个变量的值是否相等,但是它只可用于Java中基本类型的变量,比如
看官们String类提供了许多方法,我们就不一一列出了。在这里只列出一些常用的方法,其它的方法大家可以查阅JDK文档。我们列出了常用方法的函数原型及其功能,接下来我们通过具体的例子来说明如何使用这些函数:
在上面的代码中,有两点我需要特别说明一下:
字符串的位置是从0开始的,这点和数组的下标值相同;
分隔字符串时,如果使用特殊的字符串去分隔,那么需要对其进行转义,而且使用两个“\”进行转义。比如上面代码中“.”就是进行了转义操作。
下面是程序的运行结果,请大家结合代码进行参考:
各位看官,关于Java中常用类之String的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
看官们,我们在前面章回中介绍Java中的基本类型时提到过String类型,当时还没有介绍类,因此一笔带过,今天我们将详细介绍它。
1. String的初始化
String就是我们通常说的字符串,它也是Java中常用的类之一。既然它是类,那么可以使用它来实例化对象。接下来我们通过具体的代码的形式来演示如何实例化String类型的对象。String str1 = "Java"; //方式一 String str2 = new String("Java"); //方式二
这两种方式都可以定义一个字符串类型的变量,并且给变量进行了赋值操作。不过它们还是有区别的:
方式一是把已经在堆内存中的变量和str1关联在了一起,在此之前堆内存中的变量是没有具体的名称的, 因此我们称它为匿名对象,匿名对象可以和变量str1关联,也可以和其它字符串类型的变量关联;
方式二是为str2在堆内存中重新申请一块内存空间,而且把内存空间和str2关联在了一起。
为了看清楚这两种方式之间的区别,我们再来一段代码:
String str3 = "Java"; String str4 = new String("Java");
对比上面的代码,我们可以说,str1和str3关联了同一段内存空间,而且str2和str4则是关联了不同的内存空间。真的是这样吗?有客官提问了,看官莫急,我们待会儿通过具体的代码来证明。
除了不同点外,这两种方式也有共同的特点,那就是它们都是字符串类型的变量,该变量只是一个名称,而真正的值位于内存中,我们可以通过操作变量名称来操作位于内存中的字符串。好了,不多说了,我们来点代码做说明:
public class StringEx { public static void main(String args[]) { String str1 = "Java"; String str2 = new String("Java"); String str3 = "Java"; String str4 = new String("Java"); if(str1 == str3) System.out.println("Str1 and Str3 use the same memory address"); else System.out.println("Str1 and Str3 don't use the same memory address"); if(str2 == str4) System.out.println("Str2 and Str4 use the same memory address"); else System.out.println("Str2 and Str4 don't use the same memory address"); } }
在上面的代码中我们使用了操作符“==”来判断字符串变量是否使用了相同的内存空间,下面是程序的运行结果,请大家参考:
Str1 and Str3 use the same memory address Str2 and Str4 don't use the same memory address
从程序的运行结果中可以直观地看到两种字符串实例化方式的区别。这是对我们上面分析结果最好的验证。
此外,我们说一下操作符“==”,它用来判断两个变量的值是否相等,但是它只可用于Java中基本类型的变量,比如
int或者
double类型的变量,对于
String类型的变量,它只能判断变量的内存地址是否相同,不能判断变量的值是否相等。
2. String的方法
谈完了String类型的初始化,我们看看String类给我们提供的方法,通过这些方法,可以方便地操作String类型的变量。public int length() //返回字符串的长度 public boolean equals(Object arg0) //判断两个字符串的内容是否相等,注意它与操作符“==”的区别 public boolean equalsIgnoreCase(Object arg0) //比较两个字符串是否相等,比较时忽略字符的大小写 public int indexOf(String arg0) //在字符串中查找某个字符串的位置,找到后返回字符串的位置,否则返回-1。注意字符串的位置从0开始 public String substring(int arg0) //从字符串中ar0所在的位置开始截取一段字符串,直到字符串末尾为止 public String[] split(String arg0) //依据字符串ar0的内容对原来的字符串进行分隔,把分隔后的字符串存放到字符串数组中,并且返回该数组
看官们String类提供了许多方法,我们就不一一列出了。在这里只列出一些常用的方法,其它的方法大家可以查阅JDK文档。我们列出了常用方法的函数原型及其功能,接下来我们通过具体的例子来说明如何使用这些函数:
public class StringEx { public static void main(String args[]) { String str1 = "Java"; String str2 = new String("Java"); String str3 = "Java"; String str4 = new String("Java"); String str5 = "www.google.com"; String strArray[] ; strArray = str5.split("\\."); System.out.println("The length of str1 is: "+str1.length()); System.out.println("str1 equals str2: "+str1.equals(str2)); System.out.println("str1 compare with str5: "+str1.equalsIgnoreCase(str5)); System.out.println("is google in str1? "+str1.indexOf("google")); System.out.println("is google in str5? "+str5.indexOf("google")); System.out.println("str5 substring from 4: "+str5.substring(4)); System.out.println("str5 split by '.' :"); for(int i=0; i<strArray.length; ++i) System.out.println(strArray[i]); } }
在上面的代码中,有两点我需要特别说明一下:
字符串的位置是从0开始的,这点和数组的下标值相同;
分隔字符串时,如果使用特殊的字符串去分隔,那么需要对其进行转义,而且使用两个“\”进行转义。比如上面代码中“.”就是进行了转义操作。
下面是程序的运行结果,请大家结合代码进行参考:
The length of str1 is: 4 str1 equals str2: true str1 compare with str5: false is google in str1? -1 is google in str5? 4 str5 substring from 4: google.com str5 split by '.' : www google com
各位看官,关于Java中常用类之String的例子咱们就介绍到这里,欲知后面还有什么例子,且听下回分解!
相关文章推荐
- 一起Talk Android吧(第十九回:Java常用类之Date)
- 一起Talk Android吧(第十五回:Java常用类之Arrays)
- 一起Talk Android吧(第二十回:Java常用类之Date续)
- 一起Talk Android吧(第十七回:Java常用类之StringBuffer)
- 一起Talk Android吧(第十八回:Java常用类String VS StringBuffer)
- 一起Talk Android吧(第五回:Java中的程序结构)
- 一起Talk Android吧(第十回:Java中的封装:二)
- 一起Talk Android吧(第二十四回:Java多线程编程二)
- 一起Talk Android吧(第六回:Java中的函数)
- 一起Talk Android吧(第二十五回:Java多线程编程三)
- 一起Talk Android吧(第二十一回:Java常用类之文件操作一)
- 一起Talk Android吧(第八回:Java中的面向对象)
- 一起Talk Android吧(第十三回:Java面向对象综合练习)
- 一起Talk Android吧(第二十六回:Java包装类)
- 一起Talk Android吧(第九回:Java中的封装:一)
- 一起Talk Android吧(第十四回:Java中的异常)
- 一起Talk Android吧(第二十三回:Java多线程编程一)
- 一起Talk Android吧(第十二回:Java中的多态)
- 一起Talk Android吧(第三回:Java中的变量类型)
- 一起Talk Android吧(第七回:Java综合小练习)