链接地址:http://www.cnblogs.com/vamei/archive/2013/04/08/3000914.html

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。谢谢!

之前的Java基础系列中讨论了Java最核心的概念,特别是面向对象的基础。在Java进阶中,我将对Java基础进行补充,并转向应用层面。

大部分编程语言都能够处理字符串(String)。字符串是有序的字符集合,比如"Hello World!"。在Java中,字符串被存储为String类对象。调用字符串对象的方法,可以实现字符串相关的操作。

String类包含在java.lang包中。这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class)。我们不需要显式的使用import引入String类。

创建字符串

我们之前使用类来创建对象。需要注意的时候,创建String类对象不需要new关键字。比如:

public class Test
{
public static void main(String[] args)
{
String s = "Hello World!";
System.out.println(s);
}
}

实际上,当你写出一个"Hello World"表达式时,内存中就已经创建了该对象。如果使用new String("Hello World!"),会重复创建出一个字符串对象。

An Object

String类是唯一一个不需要new关键字来创建对象的类。使用的时候需要注意。

字符串操作

可以用+实现字符串的连接(concatenate),比如:

"abc" + s

字符串的操作大都通过字符串的相应方法实现,比如下面的方法:

方法                               效果

s.length()                        返回s字符串长度

s.charAt(2)                       返回s字符串中下标为2的字符

s.substring(0, 4)                 返回s字符串中下标0到4的子字符串

s.indexOf("Hello")                返回子字符串"Hello"的下标

s.startsWith(" ")                 判断s是否以空格开始

s.endsWith("oo")                  判断s是否以"oo"结束

s.equals("Good World!")           判断s是否等于"Good World!"

==只能判断字符串是否保存在同一位置。需要使用equals()判断字符串的内容是否相同。

s.compareTo("Hello Nerd!")        比较s字符串与"Hello Nerd!"在词典中的顺序,

返回一个整数,如果<0,说明s在"Hello Nerd!"之前;

如果>0,说明s在"Hello Nerd!"之后;

如果==0,说明s与"Hello Nerd!"相等。

s.trim()                          去掉s前后的空格字符串,并返回新的字符串

s.toUpperCase()                   将s转换为大写字母,并返回新的字符串

s.toLowerCase()                   将s转换为小写,并返回新的字符串

s.replace("World", "Universe")    将"World"替换为"Universe",并返回新的字符串

不可变对象

String类对象是不可变对象(immutable object)。程序员不能对已有的不可变对象进行修改。我们自己也可以创建不可变对象,只要在接口中不提供修改数据的方法就可以。

然而,String类对象确实有编辑字符串的功能,比如replace()。这些编辑功能是通过创建一个新的对象来实现的,而不是对原有对象进行修改。比如:

s = s.replace("World", "Universe");

右边对s.replace()的调用将创建一个新的字符串"Hello Universe!",并返回该对象(的引用)。通过赋值,引用s将指向该新的字符串。如果没有其他引用指向原有字符串"Hello World!",原字符串对象将被垃圾回收。

不可变对象

Java API

Java提供了许多功能强大的包。Java学习的一个重要方面是了解这些包以及其中包含的API(Application Programming Interface)。String类定义在java.lang.String。你可以查询下面的Oracle网址,来找到该类的官方文档:

http://docs.oracle.com/javase/6/docs/api/java/lang/String.html

该文档中包含了String类最全面的介绍。

事实上,API文档中有丰富的内容,你通过下面链接概览:

http://docs.oracle.com/javase/6/docs/api/

欢迎继续阅读“Java快速教程”系列文章

Java进阶01 String类的更多相关文章

  1. Java进阶01 String类(转载)

    String类包含在java.lang包中.这个包会在Java启动的时候自动import,所以可以当做一个内置类(built-in class).我们不需要显式的使用import引入String类. ...

  2. Java常用API(String类)

    Java常用API(String类) 概述: java.lang.String 类代表字符串.Java程序中所有的字符串文字(例如 "abc" )都可以被看作是实现此类的实例 1. ...

  3. 关于Java中的String类知识点小总结

    Java中的String类知识点 前言 在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 如何创建字符串 最简单的方式 String str = "he ...

  4. Java基础教程——String类

    String类 Java程序中的所有字符串字面值(如 "abc" )都是String的实例 字符串是常量(因为 String 对象是不可变的,所以可以共享) 字符串的本质是字符数组 ...

  5. Java中的String类

    /*String类用于描述字符串事物的那么它就提供了多个方法对字符串进行操作 方法都会用,字符串这块就结束了常见的操作有哪些?“abcd”它应该具备什么功能,我们才能更好得操作它?1.获取(必须要掌握 ...

  6. Java基础笔记-String类

    String 类(被final修饰) 字符串是一种特殊的对象,一旦字符串被初始化就不可以被改变了.(内容不变) 例如: String  s = “abc”; String  s1 = new Stri ...

  7. Java笔记:String类

    1.String类是不可变类,一旦一个String对象被创建以后,包含在这个对象中的字符序列式不可改变的,直至这个对象被销毁. String s1 = "java"; s1 = s ...

  8. java中的String类常量池详解

    test1: package StringTest; public class test1 { /** * @param args */ public static void main(String[ ...

  9. Java 中的 String 类常用方法

    字符串广泛应用在Java编程中,在Java中字符串属于对象,String 类提供了许多用来处理字符串的方法,例如,获取字符串长度.对字符串进行截取.将字符串转换为大写或小写.字符串分割等. Strin ...

随机推荐

  1. centos主机建立ssh互信

    ssh-keygen 生成密钥 1.ssh-keygen -t rsa 可以加密和签名 rsa 只能加密不能签名 2.ssh-copy-id -i /root/.ssh/id_rsa.pub USER ...

  2. 安装andriod studio时出现Internal error. Please report to https://code.google.com/p/an

    有两种方法的哈 一,在文件中添加  disable.android.first.run=true (我试了这种就好使了哈) 1)进入刚安装的Android Studio目录下的bin目录.找到idea ...

  3. elk工作原理

    这个配置文件,是读取nginx日志写入到redis zjtest7-redis:/usr/local/logstash-2.3.4/config# cat logstash_agent.conf in ...

  4. 关于异或(Xor)的一点笔记

    因为博弈论里,尤其实在求sg函数时,经常会用到异或运算,所以我就把网上搜到的一些相关知识和自己的一些理解记下来. 如果出现差错,还请指出,谢谢! 异或:可以简称Xor,可以用数学符号⊕表示,计算机就一 ...

  5. rac 实例被莫名重启的案例分析

    详见原文博客链接地址: Rac 实例被莫名重启一列分析

  6. Tour(KM算法)

    Tour Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 65535/65535 K (Java/Others) Total Submi ...

  7. 6.基于ZMQ的游戏网络层基础架构

    对于内网服务器的通信采用zmq来进行,对于和客户端的通信采用boost的asio来.这里先来搭建zmq的基础结构. zmq相关的知识可以去zmq官方网站查询. 这里使用zmq的push 和pull来进 ...

  8. js默认行为(也称默认事件)

    对应于智能社21课, 在浏览器的空白页面右击时会出现一个提示框,实际上这是用的document.oncontextmenu属性,如果用下面的代码就能够阻止这样的默认行为: <!DOCTYPE h ...

  9. 20150706 js之定时器

    对应智能社:09 定时器的使用 开启定时器: setInterval(xxx(),1000);//间隔型 第一个参数为函数,第二个为时间,单位为毫秒 setTimeout(xxx(),1000);// ...

  10. Chapter 11 迪米特法则

    迪米特法则也叫最少知识原则:如果两个类不必彼此直接通信,那么这两个类就不应当发生直接的相互作用.如果其中一个类需要调用另一个类的某一个方法的话,可以通过第三者转发这个调用. 迪米特法则首先强调的前提是 ...