`

String类创建对象问题

    博客分类:
  • Java
 
阅读更多

关于String: 

1.  首先String不属于8种基本数据类型,String是一个对象。因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. new String()和new String(“”)都是申明一个新的空字符串,是空串不是null; 

常量池(constant pool): 

常量池(constant pool)指的是在编译期被确定,并被保存在已编译的.class文件中的一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 

字符串池: 

在JVM中存在着一个字符串池,其中保存着很多String对象,并且可以被共享使用,因此它提高了效率。由于String类是final的,它的值一经创建就不可改变,因此我们不用担心String对象共享而带来程序的混乱。字符串池由String类维护,我们可以调用intern()方法来访问字符串池。

public class Test {

 public static void main(String args[]) {  

      String str0 = "abc";  

      String str1 = "abc";  

      String str2 = "a" + "bc"; 

      System.out.println(str0 == str1);  

      System.out.println(str0 == str2); 

 } 

运行结果: true true 

2: 

public class Test {  

  public static void main(String args[]) {  

      String str0 = "abc"; 

      String str1 = new String("abc");  

      String str2 = "a" + new String("bc");  

      System.out.println(str0 == str1);  

      System.out.println(str0 == str2);  

      System.out.println(str1 == str2); 

 } 

}  

运行结果: false false false 

因为new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。

 

 

public static void test3() { 

 String a = "a"; 

 String b = a + "b"; 

 String c = "ab"; 

 String d = new String(b); 

println(b == c); 

println(c == d); 

println(c == d.intern()); 

println(b.intern() == d.intern()); 

这段代码与上一个例子类似,只是增加了 intern()的调用。同样的,我们可以先看看输

出是什么。

false 

false 

true 

true 

 

String.intern(): 存在于.class文件中的常量池,在运行期被JVM装载,并且可以扩充。String的intern()方法就是扩充常量池的一个 方法;当一个String实例str调用intern()方法时,Java查找常量池中是否有相同Unicode的字符串常量,如果有,则返回其的引用, 如果没有,则在常量池中增加一个Unicode等于str的字符串并返回它的引用.

 

写一个方法来检查输入的字符串是否是回文(对称)?

private static boolean isPalindrome(String str) {
if (str == null)
return false;
StringBuilder strBuilder = new StringBuilder(str);
strBuilder.reverse();
return strBuilder.toString().equals(str);
}

有时候,面试官要求不使用任何其他类来检查这一点,在这种情况下,我们可以从两端String中的字符进行比较,以找出是否是回文与否。

private static boolean isPalindromeString(String str) {
if (str == null)
return false;
int length = str.length();
System.out.println(length / 2);
for (int i = 0; i < length / 2; i++) {

 

if (str.charAt(i) != str.charAt(length – i – 1))
return false;
}
return true;
}

 

写一个方法从字符串中删除给定的字符?

我们可以使用的replaceAll方法替换字符串的中的字符。

private static String removeChar(String str, char c) {
if (str == null)
return null;
return str.replaceAll(Character.toString(c), “”);
}

 

如何在java程序比较两个字符串?

Java的String实现Comparable接口,使用对象的compaareTo 方法比较两个字符串的大小。

 

我们可否在switch 条件中使用字符串?

这是一个用来检查你的当前Java发展的知识一个棘手的问题。 在Java 7是可以的,而早期的Java版本不支持这个。

 

 

分享到:
评论

相关推荐

    String对象创建问题

    String对象的创建问题,分为:编译期和执行期 详细的讲解String对象创建问题

    c++中由类名(string)创建这个类对象(RTTI)

    c++中由类名(string)创建这个类对象(RTTI)

    String创建对象

    要笔试或者要面试JAVA的可以看看!(更新中....)

    Java的String类讲解案例代码(String类使用:创建对象、比较、连接、截取、查找和替换、拆分...)StringBuf

    String类使用(创建字符串对象、比较、长度、连接、截取、查找和替换、切割和拆分、和其他类型的转换、格式化、判断、手动入池、其他操作) StringBuffer类 StringBuilder类 String、StringBuffer和StringBuilder的...

    Java String 类.pdf

    由于String类是不可变的,对字符串进行操作时需要创建新的字符串对象,这可能会导致性能问题。StringBuilder类是可变的,可以避免这种问题,因此它的性能比String类更好。 三、String类和StringBuffer类有什么区别?...

    创建string对象过程的内存分配:

    创建string对象过程的内存分配&&包含多个例子,更加容易理解~~

    String对象详解(附代码)

    对String创建几个对象代码详解,包括字符串相加,对象相加等等

    java四种创建对象的方式

    详细总结了java中创建对象的不同方式和String创建对象的不同方式

    String对象的创建与比较

    可能创建一个对象,或者不创建对象(当创建一个对象时,如果栈上该值存在,那么会直接引用,否则会创建)。  String str1 = new String("ABC");  String str2 = new String("ABC");  System.out.println(str1 ...

    new String(\"abc\")创建几个对象的解释

    java面试的疑惑剪辑 博文链接:https://z-jq1015.iteye.com/blog/248599

    string类的常用方法.pdf

    string类是Java中的一种数据类型,用于表示文本字符串。它是不可变的,也就是说一旦创建了一个字符串对象,它的值就不能被修改。字符串类提供了许多方法来操作字符串,包括拼接、比较、截取和搜索等。 可以使用字符...

    Java程序设计基础:创建String字符串.pptx

    掌握String字符串对象的创建 掌握字符串对象的输入与输出 一般程序需要处理大量文本数据Java语言的文本数据被保存为字符或字符串类型。 若干个字符在计算机里面如何存储? 如何引用呢? 引入 例如 ...

    String.pdf

    在java、C#中,String类对象创建后,字符串一旦初始化就不能更改,因为string类中所有字符串都是常量,数据是无法更改,由于string对象的不可变,所以可以共享。对String类的任何改变,都是返回一个新的String类...

    java中创建对象的步骤有哪些.txt

    创建对象(Object):使用类作为蓝图来创建实际的对象。这可以通过使用new关键字和类构造函数来完成。 java Person person1 = new Person("John Doe", 30); 访问对象属性(Attributes):一旦对象被创建,你就可以...

    JavaScript程序设计课件:String对象.pptx

    1、创建String对象 在JavaScript中可以使用一对单引号或双引号将任意多个字符引起来,即生成字符型数据。这些字符型数据实际上也是构造函数String的实例,即String对象。 6.4.1 String对象 2、String对象常用属性及...

    实验05 Java集合.doc

    1) 创建一个只能容纳String对象名为names的ArrayList集合; 2)按顺序往集合中添加5个字符串对象:"张三"、"李四"、"王五"、"马六"、"赵七"; 3)对集合进行遍历,分别打印集合中的每个元素的位置与内容; 4)打印...

    源代码+报告-Java类的定义和对象的创建

    (1)编写一个复数类...7)String toString()//返回复数对象对应的串(如4+7i) (2)编写一个主类,定义并实例化两个复数对象,输出这两个复数对象的值,然后进行复数的加法和减法运算,输出其运算结果(对象)的值。

    Tenyxy.zip

    练习1(基础): 建立一个学生类,其中成员变量为学号、姓名、及三门课的成绩(数组),另建立一个包含主方法的类,定义2个学生类的对象 ...(3)在main方法中分别调用不同的构造方法创建的对象,并输出其属性值

Global site tag (gtag.js) - Google Analytics