1. 字符串基本知识

  用java.lang.String类的对象表示字符串

  字符串类型不是基本类型, 而是引用类型(类似于数组和对象)

  Java基于Unicode字符集

2. 字符串创建

 public static void main(String[] args) {
     String s1 = new String();
     String s2 = new String("Hello");

     //错误的创建方式
     //String s3 = new String('H','e','l','l','o');
     char[] Arr = {'H','e','l','l','o'};
     //public String(char[] value)
     String s3 = new String(Arr);

     //public String(char[] value, int offset, int count)
     //offset数组起始元素下标, count表示元素个数
     String s4 = new String(Arr,0,4);

     //特殊方式
     String s5="Hello";

     System.out.println("s1="+s1);
     System.out.println("s2="+s2);
     System.out.println("s3="+s3);
     System.out.println("s4="+s4);
     System.out.println("s5="+s5);
 }

  输出结果:

3. 字符串有趣的问题

 String s1 = "Hello!";
 String s2 = "Hello!";
 System.out.println ( s1 == s2 );//输出true

 String s1 = "Hello!";
 String s2 = new  String("Hello!");
 System.out.println(s1 == s2);//输出false

  第二个指向新得字符串实体, 而不是已存在的常量

4. 字符串空串与空对象

 String s=null;//空对象
 String s="";//空串, 长度为0

  如果要判断一个String对象为空串, 但不确定是否为空对象的方法

 s == null || s.equals("")
 s == null || s.length() < 1
 s == null || s.isEmpty()

5. 字符串常用方法

 public int length()//获取一个字符串的长度
 public boolean equals(String s)//比较两个字符串是否相等
 public boolean startsWith(String s)//判断字符串的前缀是否是指定字符串s
 public boolean endsWith(String s) //判断字符串的后缀是否是指定字符串s
 //当前字符串firstStart指定的位置开始, 为数组下标
 //other是比较字符串,从othertStart指定的位置开始, 为数组下标
 public boolean regionMatches(int firstStart, String other, int ortherStart, int length)
 public int compareTo(String s)
 public int indexOf (String s) //查找子串s的出现位置,并返回首次出现的位置
 public String substring(int startpoint) //获取子串,该子串从startpoint开始到串末尾
  //用newString替换oldString
 public String  replaceAll(String oldString ,  String newString)
 public String trim() //去掉字符串前后的空格
 public String[] split(String reg)//以reg作为分隔符,获取分隔后的字符串数组

6. 字符串与字符数组互转

 char[] chrCharArray;
 String strStringType="Hello";
 //字符串转字符数组
 chrCharArray = strStringType.toCharArray();
 //字符数组转字符串
 strStringType= String.valueOf(chrCharArray );

7. StringBuffer类

  如果一个字符串经常发生改变, 显然会浪费大量内存.

  String Buffer类能创建可修改的字符串序列. 该类的对象的实体的内存空间自动的改变大小, 适合存放一个可变的字符序列.

构造方法:

 StringBuffer()//默认容量16个字符,可自动扩充
 StringBuffer(int size)//指定容量size, 注意是动态分配的, 指定size, 但是若输出length()为0
 StringBuffer(String s)//容量为s的长度外加16个字符

常用方法:

 append()//追加字符串
 char charAt(int n)//获取指定位置字符
 void setCharAt(int n,char c)//替换指定字符
 StringBuffer insert(int n,String s)//插入字符串
 StringBuffer reverse()//翻转字符串
 StringBuffer delete(int start,int end)//删除指定位置范围的字符,从start到end-1
 //替换指定位置范围的字符,从start到end-1
 StringBuffer replace(int start,int end ,String s)
转载请注明出处, O(∩_∩)O谢谢

Java字符串理解的更多相关文章

  1. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  2. Effective Java通俗理解(持续更新)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  3. Effective Java通俗理解(下)

    Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...

  4. 为什么Java字符串是不可变对象?

    转自 http://developer.51cto.com/art/201503/468905.htm 本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Ja ...

  5. 【JAVA零基础入门系列】Day6 Java字符串

    字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...

  6. Java开发知识之Java字符串类

    Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...

  7. Effective Java通俗理解(上)

    这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...

  8. 灵魂拷问:为什么 Java 字符串是不可变的?

    在逛 programcreek 的时候,发现了一些精妙绝伦的主题.比如说:为什么 Java 字符串是不可变的?像这类灵魂拷问的主题,非常值得深思. 对于绝大多数的初级程序员来说,往往停留在" ...

  9. 面试官刁难:Java字符串可以引用传递吗?

    老读者都知道了,六年前,我从苏州回到洛阳,抱着一幅"海归"的心态,投了不少简历,也"约谈"了不少面试官,但仅有两三个令我感到满意.其中有一位叫老马,至今还活在我 ...

随机推荐

  1. 深度探究apk安装过程

    一.先验知识 0.PcakageaManagerService版本号变化 1.概述 2.PackageManagerService服务启动流程 3. PackageManagerService入口 二 ...

  2. 【分布式计算】DFS &amp;&amp; BigTable

    1.背景 分布式计算的发迹应该是google在2003年发表的三篇paper.各自是GFS.MapReduce.BigTable. 当中MapReduce大家都非常熟悉了.不懂的同学也能够看看我之前写 ...

  3. 【每日Scrum】第五天(4.26) TD学生助手Sprint2站立会议

    站立会议 组员 昨天 今天 困难 签到 刘铸辉 (组长) 今天增加了几个页面的子菜单,然后设计了几个要用的界面 今天和楠哥做了课程事件和日历表操作的例子,并尝试做时间表和日历表的数据库设计 安卓的数据 ...

  4. Arduino关于旋转编码器程序的介绍(Reading Rotary Encoders)--by Markdown

    介绍 旋转或编码器是一个角度測量装置. 他用作精确測量电机的旋转角度或者用来控制控制轮子(能够无限旋转,而电位器只能旋转到特定位置).其中有一些还安装了一个能够在轴上按的button,就像音乐播放器的 ...

  5. 【ZZ】Visual C++ 6.0 精简安装版(支持VA、ICC 等等安装)

    (2012-04-22 08:10:10) 标签: it 分类: 软件_Software Visual C++ 6.0 精简安装版(支持VA.ICC 等等安装) 2012-04-16 21:07 想找 ...

  6. Lua_第17 章 数学库

    第17 章 数学库 在这一章中(以下关于标准库的几章中相同)我的主要目的不是对每个函数给出完整地说明,而是告诉你标准库可以提供什么功能.为了可以清楚地说明问题,我可能 会忽略一些小的选项或者行为.基本 ...

  7. RTSP/RTMP/HLS/HTTP流媒体播放器EasyPlayer

    EasyPlayer播放器系列项目 EasyPlayer是由EasyDarwin开源团队开发和维护的一个流媒体播放器系列项目,随着多年不断的发展和迭代,不断基于成功的实践经验,发展出包括有: Easy ...

  8. Spring mvc接受集合类型参数的方法

    public String xxxxx(String xxxx, String xxxxx, @RequestParam("parameterList[]") List<St ...

  9. SpringBoot-(7)-基于Web,JDBC,MySql,Druid,MyBatis整合创建SpringBoot项目

    1 打开Spring Initializr 如果Project SDK为空,手动指定下JDK SDK路径 2, 填写Group和Artifact 3,选择依赖 选择Web,MySQL,JDBC,MyB ...

  10. Kafka理论学习

    Kafka Consumer设计解析 http://www.jasongj.com/2015/08/09/KafkaColumn4/