String:

    

    两个字符床  String stra 和String strb

    stra = "hello " ;  strb = "hello "

    在对象池中开辟一块内存"hello " stra与strb都指向同一块地址。

    字符串的不可改变性
  在JavaAPI文档中我们可以看到String类的定义:

public final class String extends Object implements Serializable, Comparable<String>, CharSequence

  String类是一个final类,这代表一个String对象是不可改变的,String类的方法中我们也找不到任何能够改变字符串的值和长度的方法。这就是字符串的不可改变性。

  当我们进行连接字符串操作的时候,Java虚拟机没有改变其中任何一个字符串,而是创建了一个新的String对象,把连接后的结果赋予了它。 Sun将String设计成不可改变的,这是为了让String的行为最优化。因为String在多数应用中都被大量使用,所以它的优化是非常关键的。

  

    如果用   == 则比较两个字符串的地址是否一样。

    用 stra.equals(str2) 则是比较两个字符串的内容是否一致。

    

    2.compareTo()

    如果两个字符串的长字符串的前几位是短字符串,则返回长字符串-段字符串的长度差。

    如果两个字符串某个字符不同,则返回两个字符的ascll差

    相等则返回 0;

   String str1 = "hello" ;
        String str2 = "hellow";
        String str3 = "ha" ;
        
        System.out.println("str1.compareto(str2)"+str1.compareTo(str2));//长度差
        System.out.println("str2.comperto(str2)"+ str3.compareTo(str3));//字符差

    结果:

      -1

      0

    3.获取字符串的第 i 个字符  charAt();

    例:System.out.println(str1.charAt(0));    结果:  h

    4.String concat(String str) :将该String对象与str连接在一起。

    

    5.查找

     String str = "helloworld" ;
        //返回满足条件的单词的第一个字母的索引
        System.out.println(str.indexOf("world"));
        //返回查到的的意义个字母索引
        System.out.println(str.indexOf("l"));
        System.out.println(str.indexOf("l",3));
        
        //从后面开始后查找
        System.out.println(str.lastIndexOf("l"));

    //返回bool值
        System.out.println(str.contains("ll"));

  //是否以某些单词开头呢

    String str = "helloworld" ;
        System.out.println(str.startsWith("he")) ;
        System.out.println(str.startsWith("ll",2));
        System.out.println(str.endsWith("ld"));

    6.替换

    public class Test{
    public static void main(String args[])
    {  String str = "helloworld";
        String resultA = str.replaceAll("l","_");//全部替换
        String resultB = str.replaceFirst("l","_") ;//替换首个
        System.out.println(str);
        System.out.println(resultA);
        System.out.println(resultB);
    }
}

  7.字符串截取

   String str = "helloworld" ;
        String str1 =str.substring (0,5);  //从第 0 个开始截取  5个字符
        String str2 =str.substring (5); //第五个开始截取到末尾
        System.out.println(str1);
        System.out.println(str2);

    输出结果:

    hello

    world

    8.字符串拆分

   String str = "helloworld nihao mldn" ;
        String result [] = str.split("  ") ; //中间是一个空格就按照空格拆分,如果引号中间什么都没                      有则按照每个字母拆分

   String result [] = str.split(" ",2) ;//如果能拆好多个,则按照limit(2)最多拆成2个

   String str = "192.168.1.1" ; //IP地址拆分,,如果是敏感字符拆分字符(正则标记)使用                    (\\.)拆分。
        String result [] = str.split("\\.") ;
  9 其他方法

  

  System.out.println(stra.toUpperCase());  //字符转为大写
      System.out.println(stra.toLowerCase());//字符转为小写字母

      System.out.println(stra.trim()) ;//去掉字符串两边的空格,用处就是,用户输入的时候可能        两边会输入不必要的空格 

· str.length()//获得字符的长度,,与数组的*.length 不同

 str.isEmpty()) //是否字符串为空

10.遗憾

String 少了一个功能,首字母大写,其余字母小写的功能。

只能自己写

String str = "hELLo";
         System.out.println(initcap(str));       
         
    }
    public static String initcap(String temp)
    {
        return temp.substring(0,1).toUpperCase() + temp.substring(1).toLowerCase() ;
    }

初学杂文 String类的更多相关文章

  1. 【Java】整理关于java的String类,equals函数和比较操作符的区别

    初学 Java 有段时间了,感觉似乎开始入了门,有了点儿感觉但是发现很多困惑和疑问而且均来自于最基础的知识折腾了一阵子又查了查书,终于对 String 这个特殊的对象有了点感悟大家先来看看一段奇怪的程 ...

  2. Java入门篇(五)——Java的字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  3. Java入门篇(五)——字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  4. 标准库String类

    下面的程序并没有把String类的所有成员方法实现,只参考教程写了大部分重要的成员函数. [cpp] view plain copy #include<iostream> #include ...

  5. 自己实现简单的string类

    1.前言 最近看了下<C++Primer>,觉得受益匪浅.不过纸上得来终觉浅,觉知此事须躬行.今天看了类类型,书中简单实现了String类,自己以前也学过C++,不过说来惭愧,以前都是用C ...

  6. C++ string类的实现

    c++中string类的实现 今天面试被考到了, 全给忘记了!!!   //string类的实现 #include <iostream> #include <string.h> ...

  7. String类的功能

    String类              标红的为较少出现的 1.判断功能 boolean equals(Object obj) :比较字符串内容是否相同,区分大小写 boolean equalsIg ...

  8. java基础复习:final,static,以及String类

    2.final 1)为啥String是final修饰的呢? 自己答: 答案: 主要是为了“效率” 和 “安全性” 的缘故.若 String允许被继承, 由于它的高度被使用率, 可能会降低程序的性能,所 ...

  9. String类和StringBuffer类的区别

    首先,String和StringBuffer主要有2个区别: (1)String类对象为不可变对象,一旦你修改了String对象的值,隐性重新创建了一个新的对象,释放原String对象,StringB ...

随机推荐

  1. loadrunner多负载机联合产生负载

    解说一: 多机联合产生负载 LOADRUNNER 对应用程序施压时,采用的方法就是让一台机器模拟很多用户,同时向被 测用户发送请求或进行操作.这样,如果一台测试机器模拟的虚拟用户数过多,他本身性能的下 ...

  2. Linux RAR 安装和使用

    描述:Linux默认自带ZIP压缩,最大支持4GB压缩,RAR的压缩比大于4GB. 流程:下载 >安装 > 使用 ------------------------------------- ...

  3. Redis 密码设置和登录

    Redis 一般在生产环境中,大家都不使用密码,为了确保安全,都是在防火墙上对redis端口做IP白名单的 我是个技术控,我非得了解一下密码这回事[虽然以后不会用到,呵呵] 好了,废话不多说,简单介绍 ...

  4. shell执行php文件传递参数

    php -f index.php hello test 2314 shell命令执行php文件不像http那样通过GET方式传参 同样php文件获取的时候也不能用$_GET方法了 而是通过$argv[ ...

  5. CentOS 系统中安装postfix+dovecot+openwebmail <转>

    一.先卸载sendmain[root@ser ~]#  yum remove sendmail 二.安装postfix ,dovecot,cyrus-sasl[root@ser ~]#  yum -y ...

  6. filters

    http://www.cloudera.com/content/cloudera/en/documentation/core/latest/topics/admin_hbase_filtering.h ...

  7. zepto学习之路--数组去重和原生reduce

    好吧开始读zepto的源代码,最前面给处理trim和reduce的原生实现,感觉写的很紧凑,其中reduce写的有点晦涩,个人感觉还不错.主要zepto的作者是无分号党,看起了有点不习惯. 3 if ...

  8. MFC-----在MFC中使用Picture控件加载任意图片

    对于刚刚接触OpenCV的童鞋来说,如何在MFC中加载并显示一张图片.应该是初期必定会碰到的问题之一.因此本文在分享这方面经验的同时,也相当于是写给自己的一份备忘录. 本文使用的是OpenCV2.1+ ...

  9. Android网络开发之OkHttp--基本用法GET

    1.OkHttp框架使用了OkIo.jar包,不要忘记添加. 2.对于Request对象是如何实例化的,大家可以参考--java builder设计模式 http://www.cnblogs.com/ ...

  10. Docker 新网络 overlay 网络

    Overlay网络是指在不改变现有网络基础设施的前提下,通过某种约定通信协议,把二层报文封装在IP报文之上的新的数据格式. 这样不但能够充分利用成熟的IP路由协议进程数据分发,而且在Overlay技术 ...