黑马程序员_Java String类
来源:互联网 发布:淘宝怎么看无线端来源 编辑:程序博客网 时间:2024/05/01 06:59
-----------Android培训、Java培训、Java学习型技术博客、期待与您交流! ------------
Java的字符串类(java.lang.String)是Java中使用最多的类,也是最为特殊的一个类
1.String不属于8种基本数据类型,String是一个对象,因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。
2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null;
3.创建字符串的方式很多,归纳起来有三类:
(1)使用new关键字创建字符串,比如String s1 = new String("jeek");
(2)直接指定。比如String s2 = "jeek";
(3)使用串联生成新的字符串。比如String s3 = "je" + "ek";
4.String str="jeek";和String str=new String ("jeek");的区别:这就涉及到了常量池这个概念.
常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于 类、方法、接口等中的常量,也包括字符串常量。
例:
- <SPAN style="FONT-SIZE: x-small"><SPAN style="FONT-SIZE: x-small"><SPAN style="FONT-SIZE: x-small"> String s0=”jeek”;
- String s1=”jeek”;
- String s2=”je” + “ek”;
- System.out.println( s0==s1 );
- System.out.println( s0==s2 );</SPAN></SPAN></SPAN>
String s0=”jeek”; String s1=”jeek”; String s2=”je” + “ek”; System.out.println( s0==s1 ); System.out.println( s0==s2 );
结果都为true.
首先,我们要知结果为道Java会确保一个字符串常量只有一个拷贝。
因为例子中的s0和s1中的”jeek”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true; 而”je”和”ek”也都 是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所 以s2也同样在编译 期就被解 析为一个字符串常量,所以s2也是常量池中”jeek”的一个引用。 所以我们得出 s0==s1==s2;
用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池 中,它们 有自己的地址空间。
例:
- <SPAN style="FONT-SIZE: x-small"><SPAN style="FONT-SIZE: x-small"><SPAN style="FONT-SIZE: x-small"> String s0=”jeek”;
- String s1=new String(”jeek”);
- String s2=”je” + new String(“ek”);
- System.out.println( s0==s1 );
- System.out.println( s0==s2 );
- System.out.println( s1==s2 );</SPAN></SPAN></SPAN>
String s0=”jeek”; String s1=new String(”jeek”); String s2=”je” + new String(“ek”); System.out.println( s0==s1 ); System.out.println( s0==s2 ); System.out.println( s1==s2 );
上述打印结果都为false.
例中s0还是常量池中”jeek”的应用,s1因为无法在编译期确定,所以是运行时创建的新对象”jeek”的引用,s2因 为有后 半部分new String(“ek”)所以也无法在编译期确定,所以也是一个新创建对象”jeek”的应用;明白了这些 也就知 道为何得 出此结果了。
- 黑马程序员_java-String类
- 黑马程序员_Java String类
- 黑马程序员_java String类
- 黑马程序员_java String类
- 黑马程序员_java String类
- 黑马程序员_Java String类
- 黑马程序员_java String类
- 黑马程序员_java基础(5)--String类
- 黑马程序员_java-String类<五>
- 黑马程序员_java基础(5)--String类
- 黑马程序员_JAVA字符串String类
- 黑马程序员_java api String类
- 黑马程序员_Java(object类,scanner类,string类)
- 黑马程序员_JAVA之API(String类与StringBuffer类)
- 黑马程序员_JAVA中String类学习笔记
- 黑马程序员_Java基础_API文档之String类
- 黑马程序员_java中的String类常用的方法
- 黑马程序员_java基础笔记(05)...String类
- POJ2039--To and Fro--字符串水题
- 2009计算机考研题:查找链表中倒数第k个结点
- 学习凸包(一):暴力算法求解
- 打war包
- java中一种不常见的方法声明
- 黑马程序员_Java String类
- Java中如何解析XML文件
- c++ function Undefined symbols for architecture armv7
- Java数字串与数字相加的工具方法
- Android 开 发 资 源 分 享
- POJ1363--Rails--栈
- JAVA经典算法40题(15)
- Java 注解
- 数组定义