`

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`类创建对象的一些关键知识点的详细说明: 1. **字面量方式创建**: 在Java中,我们最常用的方法是通过字面量直接创建`String`对象,如`String str = "Hello"`。这种方式创建的`String`对象会存储...

    String对象创建问题

    在Java编程语言中,`String`对象的创建是开发者经常遇到的问题,因为它涉及到内存管理和效率。`String`类在Java中被广泛使用,因为它代表不可变的字符序列,这使得它在很多场景下非常安全。这里我们将深入探讨`...

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

    - **元类或元对象协议**:在某些框架(如Qt)中,存在元类系统,可以解析类的元数据,包括类名,来创建对象。但这超出了C++标准库的范畴,需要特定框架的支持。 总结来说,C++的RTTI机制提供了在运行时检查和转换...

    Java String对象的经典问题

    ### Java String对象的经典问题 #### 一、String 类与对象机制概述 在Java中,`String`类是一个非常重要的类,它提供了丰富的功能用于处理文本数据。`String`类是不可变的(immutable),这意味着一旦一个`String`...

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

    ### 创建string对象过程的内存分配详解 #### 一、引言 在Java中,`String` 类是最常用的数据类型之一,用于表示不可变的字符序列。`String` 对象的创建涉及复杂的内存分配机制,特别是在Java虚拟机 (JVM) 的环境中...

    Java中颜色的String和Color对象之间的互相转换

    在 Java 中,我们可以使用 `java.awt.Color` 类来表示颜色,该类提供了多种构造函数,可以根据不同的参数创建颜色对象。例如,我们可以使用 `Color(int r, int g, int b)` 构造函数根据红、绿、蓝三个分量的值创建...

    java自制string类例程

    在Java编程语言中,String类是一个非常基础且重要的部分,它是不可变的,也就是说一旦创建了一个String对象,就不能更改它的内容。然而,许多初学者在学习过程中可能会尝试自己创建一个类似的字符串类,以便更好地...

    JAVA【第5章:面向对象基础】_String类的常用方法.rar

    由于其不可变性,每次对`String`对象的操作都会创建新的`String`对象,这在处理大量字符串时需要注意性能问题。`String`类位于`java.lang`包中,因此在使用时无需显式导入。 下面我们将详细讲解几个重要的`String`...

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

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

    java String类的实现

    `String`类代表不可变的字符序列,这意味着一旦创建了`String`对象,它的值就不能改变。这个特性使得`String`在处理文本时既安全又高效。 ### 1. `String`类的构造方法 `String`类提供了多种构造方法,允许我们以...

    c++自定义string类

    在C++编程中,自定义`string`类是一项常见的练习,它可以帮助我们深入理解对象、内存管理和操作符重载等核心概念。以下是对这个主题的详细讲解: 首先,`string`类是C++标准库中的一个关键部分,用于处理字符串。...

    string类的构造方法_String类重要吗_C++_STL_string_

    标题中的“string类的构造方法”揭示了我们要探讨的核心内容——如何初始化和创建`std::string`对象。`std::string`类不仅在日常编程中频繁使用,而且在很多高级功能如正则表达式、文本处理等方面都有重要应用,因此...

    自己写的String类

    创建自己的`String`类通常是学习面向对象编程时的一个常见练习,目的是更好地理解类的构造、成员函数、内存管理和继承等概念。 自定义的`String`类可能包含以下关键组成部分: 1. **构造函数**:这是创建新对象时...

    JNI处理hashmap,string等对象的操作

    对于String对象的处理,JNI提供了`NewStringUTF`函数来创建一个新的Java String对象,以及`GetStringUTFChars`和`ReleaseStringUTFChars`来获取和释放字符串的UTF-8表示。例如,你可能需要在本地代码中解析或修改...

    java四种创建对象的方式

    通过反射创建对象时,可以使用Class类的newInstance()方法。但是需要注意的是,这要求Customer类必须有一个默认构造方法,且该方法需要无参。使用反射创建对象的代码示例如下: ```java Class objClass = Class.for...

    介绍java中String类的方法

    但要注意,频繁的拼接操作会生成新的String对象,可能导致性能问题。 4. **String的方法**: - `charAt(int index)`:返回指定索引处的字符。 - `startsWith(String prefix)`:检查字符串是否以指定的前缀开始。 ...

    深入探讨Java中的String类.pdf

    Java 中的 String 类是一个特殊的类,它是一个 immutable 类,也就是说,一旦创建了 String 对象,它的值就不能被改变。String 类的 immutable 性质是通过 final 关键字实现的。 二、String 对象的创建 Java 中有...

Global site tag (gtag.js) - Google Analytics