String类的特点:
    字符串对象一旦被初始化就不会被改变,字符串存储在字符串常量池中(字符串缓冲区)。如果池中没有就创建,如果有就直接拿过来用。
 代码验证如下:
 
  String s = "abc";//在常量池中创建了一个字符串对象
  String s1 = "abc";//true
//s与s1内容相同,地址相同
  System.out.println(s==s1);//true
  System.out.println(s==s1);//true
 
String s2 = new String("abc");//在堆内存中创建了两个对象,一个new对象一个字符串对象
//s与s2内同相同,地址不同
  System.out.println(s==s2);//false
  System.out.println(s==s2);//true  原因是String类中的equals复写了String类中的equals建立了String类属于自己的判断字符串对象是否相同的依据,其实就是比较字符串的内容。
 
String s = new String();//等效于String s= "" 都是空字符串,内容相同,但是不等效于String s = null;
 
 
 
 
按照面向对象的思想对字符串功能进行分类
            思考思路:如果我们想要使用某种方法或说是功能来达到自己的目的,那么就首先需要对这种方法进行查找,看这种方法是否已经给我们封装好了,例如:如果想要获取字符串的长度,那么返回值必然是int,确定了返回值再想要找到方法就会很简单了。那么再思考的就是我们是否要给这个方法进行参数的传递,获取长度其实就是对象直接调用方法就可以了,因此我们也可以确定,这个方法是不需要来进行参数传递的。经过以上方式的思考,我们很快就可以确定下来这个方法是哪个。如果这样的思考之后,还没有找到我们需要的方法,那么有可能就需要我们自己进行封装了。
 
以下为String类常用的一些方法,也是通过面向对象的思想来进行整理的。
如字符串"string"
1,获取
    1.1获取字符串中字符的个数(长度)。
            返回值int  方法名:length();
    1.2根据位置获取字符。
            返回值char   方法名: charAt(int index);
    1.3根据字符获取在字符串中第一次出现的位置。
            返回值int     方法名:indexOf(int ch);
            返回值int     方法名:indexOf(int ch,int fromIndex);
            返回值int     方法名:indexOf(String str);
            返回值int     方法名:indexOf(String str,int fromIndex);
      1.4根据字符串获取在字符串中第一次出现的位置。
            返回值int     方法名:lastIndexOf(int ch);
            返回值int     方法名:lastIndexOf(int ch,int fromIndex);
            返回值int     方法名:lastIndexOf(String str);
            返回值int     方法名:lastIndexOf(String str,int fromIndex);

1.5根据字符串获取字符串中的一部分字符串,即子串。

            返回值String 方法名:subString(int beginIndex, int endIndex);      
            返回值String 方法名:subString(int beginIndex);      
 
2,转换
        2.1将字符串变成字符串数组(字符串的切割)
            返回值String[] 方法名 split(String regex);//添加正则表达式的切割规则
        2.2将字符串变成字符数组。
            返回值char[]  方法名 toCharArray();
        2.3将字符串变成字节数组
            返回值byte[]  方法名getBytes();
        2.4将字符串中字母转为大小写字母
            返回值String  方法名toUpperCase();
            返回值String  方法名toLowerCase();
        2.5将字符串中的内容进行替换
            返回值String  方法名replace(char oldChar,char newChar);//没有oldChar则不改变
            返回值String  方法名replace(CharSequence target,CharSequence replacement);
            也可以理解为
            返回值String  方法名replace(String oldString,String newString);因为String类是Sequence的子类
        2.6去除字符串中两端的空格
            返回值String  方法名trim();
        2.7将字符串进行连接
            返回值String  方法名concat(String s);
        2.8将基本数据类型转换为字符串类型
            返回值String  方法名ValueOf(基本数据类型);
        2.9将字符数组转化为字符串
            可以使用构造方法String(char [] value);
            返回值String  方法名copyValueOf(char[] data)
3,判断
    3.1两个字符串内容是否相同
            返回值boolean  方法名 equals(Object obj);
            返回值boolean  方法名equalsIgnoreCase(String str); //忽略大小写比较字符串内容是否相同。
    3.2字符串中是否包含指定字符串
            返回值boolean  方法名contains(String str);
    3.3字符串是否以指定字符串开头,是否以指定字符串结尾
            返回值boolean  方法名startsWith(String str);
            返回值boolean  方法名endsWith(String str);
4,比较
    4.1比较两个字符串的大小
            返回值int  方法名compareTo(String str);
 
 

Java之String类的使用细节的更多相关文章

  1. java中String类的面试题大全含答案

    1.下面程序的运行结果是()(选择一项)String str1="hello";String str2=new String("hello");System.o ...

  2. Java中String类的方法及说明

    String : 字符串类型 一.      String sc_sub = new String(c,3,2);    //      String sb_copy = new String(sb) ...

  3. java.lang.String 类的所有方法

    java.lang.String 类的所有方法 方法摘要 char charAt(int index) 返回指定索引处的 char 值. int codePointAt(int index) 返回指定 ...

  4. java中String类学习

    java中String类的相关操作如下: (1)初始化:例如,String s = “abc”; (2)length:返回字符串的长度. (3)charAT:字符操作,按照索引值获得字符串中的指定字符 ...

  5. 深入分析Java的String类的方法与特点

    字符串是任何编程语言都必须支持的变量类型,有些编程语言是直接提供了原生的变量类型,有些编程语言则使用语法特性以 SDK 的形式提供支持.在Java编程平台中,对字符串的支持使用了后者的形式,就是通过在 ...

  6. java 中String类的常用方法总结,带你玩转String类。

    String类: String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.String类对象创建后不能修改,StringBuffer & St ...

  7. 在java中String类为什么要设计成final

    在java中String类为什么要设计成final? - 胖胖的回答 - 知乎 https://www.zhihu.com/question/31345592/answer/114126087

  8. java中String类为什么不可变?

    在面试中经常遇到这样的问题:1.什么是不可变对象.不可变对象有什么好处.在什么情景下使用它,或者更具体一点,java的String类为什么要设置成不可变类型? 1.不可变对象,顾名思义就是创建后的对象 ...

  9. JAVA的String类的常用方法(转载)

    Java-String类的常用方法总结   一.String类String类在java.lang包中,java使用String类创建一个字符串变量,字符串变量属于对象.java把String类声明的f ...

随机推荐

  1. Hadoop Mapreduce刮

    前言 的一个渣渣程序猿一枚,因为个人工作,须要常常和hadoop打交道,可是自己之前没有接触过hadoop.所以算是边学边用,这个博客算是记录一下学习历程,梳理一下自己的思路,请各位看官轻拍.本博客大 ...

  2. hdu1115(重力算法的多边形中心)

    标题的含义: 给定一个n刚n顶点.这是获得n分众协调多边形. http://acm.hdu.edu.cn/showproblem.php? pid=1115 题目分析: /** *出处:http:// ...

  3. 最具体的历史centos下一个 postfix + extmail + dovecot + maildrop 安装注意事项2014更新

    这篇文章原本是2008年发表的,近期几天照此笔记又安装了一遍系统.这里更新一下记录. 作者:wangdy 本文发表于  http://blog.csdn.net/aryang/article/deta ...

  4. 不同版本的SQL Server之间数据导出导入的方法及性能比较

    原文:不同版本的SQL Server之间数据导出导入的方法及性能比较 工作中有段时间常常涉及到不同版本的数据库间导出导入数据的问题,索性整理一下,并简单比较下性能,有所遗漏的方法也欢迎讨论.补充. 0 ...

  5. Android.mk中的经常使用语法

    Android.mk编译文件是用来向Android NDK描写叙述你的C,C++源码文件的, 今天查了一些经常使用的的语法. 一 概述: 一个Android.mk文件用来向编译系统描写叙述你的源码. ...

  6. uva10067 Playing with Wheels 【建图+最短路】

    题目:option=com_onlinejudge&Itemid=8&page=show_problem&problem=1008">uva10067 Play ...

  7. 于XAML导入命名空间的代码

    例如,下面的代码到指定的命名空间.不仅导入的命名空间,并且还为指定的命名空间前缀local.当然,你也可以指定一个前缀为另一个名称,这可以定义.导入后,市民可以在命名当前空间XAML使用代码.例如,在 ...

  8. Forbidden You don't have permission to access / on this server.

    原文:Forbidden You don't have permission to access / on this server. Forbidden You don't have permissi ...

  9. 单机部署redis主从备份

    redis为了避免单点故障,也支持主从备份.个人在做主从备份的实验时,因为机器数量有限,一般非常少有多台机器做支撑. 本文就将叙述怎样在一台电脑上实现redis的主从备份. 同一台机器上部署多个red ...

  10. 超可爱 纯CSS3实现的小猪、小老鼠、小牛

    原文:超可爱 纯CSS3实现的小猪.小老鼠.小牛 利用纯CSS3绘制一些人物.动物.风景已经不是一件新鲜的事情了,主要是利用CSS3可以让直线变成任意的曲线,于是简单的矢量图形绘制对CSS3来说就小菜 ...