Java String 类

怎么描述String的重要性呢?我想我无论怎么描述都没办法表达它的重要性,所以,认真学习String对于我们开发人员来说是非常重要的。
首先我们要明白,String类是用来操作和创建字符串的。比如说:
String str = “我是一个字符串”;
String str2 = new String(“我也是一个字符串”)
接着需要明白的也是最需要记住的,String不属于java内置数据类型,也就是不属于8种基本数据类型。String是一个对象,并且,String是一个非常特殊的现象,它有别的对象没有的一些特征。

对于上面两种创建字符串的方式我来具体的分析一下:
1、 对于String来说,有一个特殊的String pool,专门存储字符串数据。
2、 String str = “我是一个字符串”的创建过程:首先、java会去到String pool 寻找有没有一个值为“我是一个字符串”的东西,如果有,则返回该东西的位置给str对象,如果没有,则创建一个,并且把位置返回。
3、 对于String str2 = new String(“我也是一个字符串”)来说,java是先在堆内存中创建一个 “我也是一个字符串”的内存区域,并且把该区域的位置返回给str2,接着,还会再一次的去String pool里面检查是否有一个值为“我也是一个字符串”的东西,若没有,则创建一个。
由此可知:
1、我们现在可以知道的是,直接吧一个字符串赋值给一个String对象时,该字符串最多创建一次或者0次,为 new String(“…”)会创建1次或者是两次字符串。
2、变量的名称都是存储在栈里面的。
3、我们所持的变量(str str2)只是一个具体对象的内存地址,这个地址也可以叫做句柄。
需要做出补充的是:
1、 String类已经对Object类的equals方法进行了覆盖
2、 在比较两个对象是否相等的时候,使用的用必须是equals方法,而不等使用“==”,我会在后续的写作中进行说明。

String常用方法
(1)length() 字符串的长度
  例:char chars[]={'a','b'.'c'};
    String s=new String(chars);
    int len=s.length();

(2)charAt() 截取一个字符
  例:char ch;
    ch="abc".charAt(1); 返回'b'
(3)getBytes()获取对应字节数组

    例:String ok="apple";
           byte[]bytes=ok.getBytes();
           for(int i=0;i<bytes.length;i++)
                 System.out.println(bytes[i]);//输出字节数组,范围为-128---127

(4)indexOf()和lastIndexOf()
   indexOf() 查找字符或者子串第一次出现的地方。
   lastIndexOf() 查找字符或者子串是后一次出现的地方。
(5)substring()  

       它有两种形式,第一种是:String substring(int startIndex) 

  第二种是:String substring(int startIndex,int endIndex)
(6)concat() 连接两个字符串
(7)replace() 替换
  它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
  String replace(char original,char replacement)
  例如:String s="Hello".replace('l','w');
  第二种形式是用一个字符序列替换另一个字符序列,形式如下:
  String replace(CharSequence original,CharSequence replacement)
(8)trim() 去掉起始和结尾的空格

(9)valueOf() 转换为字符串

(10)toLowerCase() 转换为小写

(11)toUpperCase() 转换为大写
(12)startsWith()和endsWith()  

    startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束

更多方法请参考String的API

时间: 2024-08-26 00:36:43

Java String 类的相关文章

java String类创建对象相关

问题描述 java String类创建对象相关 "执行语句 String str = new String("abc") 时,不管字符串池中是否存在"abc" ,直接新建一个字符串"abc"(注意:新建的字符串"abc" 不是在字符串池中),然后将其赋给str." 百度上看到这段,有几个疑问: 1.之前认为new创建String对象时,会先判断常量池中是否存在"abc",如果有就不在常量

Java String类的常用方法汇总_java

一.String类 String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的final类,不能有类.String类对象创建后不能修改,由0或多个字符组成,包含在一对双引号之间.二.String类对象的创建 字符串声明:String stringName; 字符串创建:stringName = new String(字符串常量);或stringName = 字符串常量;三.String类构造方法1.public Str

java String类常量池分析及&quot;equals&quot;和&quot;==”区别详细介绍_java

java "equals"和"=="异同 首先简单说一下"equal"和"==" ==操作对于基本数据类型比较的是两个变量的值是否相等, 对于引用型变量表示的是两个变量在堆中存储的地址是否相同, 即栈中的内容是否相同 equals操作表示的两个变量是否是对同一个对象的引用, 即堆中的内容是否相同. 综上,==比较的是2个对象的地址,而equals比较的是2个对象的内容. 再简单介绍一下String类 String类 又称作不可

java string类的常用方法详细介绍_java

String : 字符串类型 一.构造函数 复制代码 代码如下: String(byte[ ] bytes):通过byte数组构造字符串对象. String(char[ ] value):通过char数组构造字符串对象. String(Sting original):构造一个original的副本.即:拷贝一个original. String(StringBuffer buffer):通过StringBuffer数组构造字符串对象. 例如: 复制代码 代码如下: byte[] b = {'a',

java String 类的一些理解 关于==、equals、null_java

1.String 的==与equal() 在对字符串的相等判断,==判断的是地址是否相同,equal()判断的是字符值是否相同.大多数时候==跟equal()的结果都是相同的.这是因为String对象是不变模式的,如果你不是明确地new一个String对象,Java对于String对象的保存默认的是会把新生成的String 对象放到一个缓冲区,然后每次判断缓冲区中是否已经有了这个对象,如果有了,那么后建立的同样字符值的String对象也会指向最初建立是该字符值对象的地址.也就是说字符值相同的时候

Java String类怎么查找替换啊,用通配符

问题描述 我有一个字符串line=dffdf(abd88*※--%¥#◎)mnbmc:我想用通配符的办法,line.replace()或line.replaceALL()来把括号里的东西去掉,该怎么写?可能line=(abd88*※--%¥#◎),连括号都去掉.谢谢 解决方案 解决方案二:我现在用Stringtemp=line.substring(line.indexOf("("),line.indexOf(")")+1);line=line.replace(tem

java-JAVA String类相关疑问

问题描述 JAVA String类相关疑问 新手疑问 对String类的replace方法有点不懂 如果我想用null替换一些有不定长的字符串 比如字符串里有许多() ()里也有内容 该怎么替换呢? 解决方案 asd(ahd)asd(hjk)qws String str="asd(ahd)asd(hjk)qws "; String[] arr={"(ahd)","(hjk)","w"}; for(int i=0;i<ar

马士兵J2SE-第六章-常用类-String类、StringBuffer类、枚举ENUM

  public class test { public static void main(String[] args) { String s1="hello"; String s2="world"; String s3="hello"; System.out.println(s1==s3); s1=new String("hello"); s2=new String("hello"); System.ou

Java的string类常量池及不可变性

1.String常量池     当使用new String("hello")时,JVM会先使用常量池来管理"hello"直接量,再调用String类的构造器来创建一个新的String对象,新创建的对象被保存在堆内存中.即new String("hello")一共产生了两个字符串对象. [常量池constant pool]管理在编译时被确定并保存在已编译的.class文件中的一些数据,包括关于类.方法.接口中的常量,和字符串常量.  [字符串常量池