Java字符串理解
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)
Java字符串理解的更多相关文章
- Java 字符串格式化详解
Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...
- Effective Java通俗理解(持续更新)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- Effective Java通俗理解(下)
Effective Java通俗理解(上) 第31条:用实例域代替序数 枚举类型有一个ordinal方法,它范围该常量的序数从0开始,不建议使用这个方法,因为这不能很好地对枚举进行维护,正确应该是利用 ...
- 为什么Java字符串是不可变对象?
转自 http://developer.51cto.com/art/201503/468905.htm 本文主要来介绍一下Java中的不可变对象,以及Java中String类的不可变性,那么为什么Ja ...
- 【JAVA零基础入门系列】Day6 Java字符串
字符串,是我们最常用的类型,每个用双引号来表示的串都是一个字符串.Java中的字符串是一个预定义的类,跟C++ 一样叫String,而不是Char数组.至于什么叫做类,暂时不做过多介绍,在之后的篇章中 ...
- Java开发知识之Java字符串类
Java开发知识之Java字符串类 一丶简介 任何语言中.字符串都是很重要的.都涉及到字符串的处理. 例如C++中. 字符串使用内存. 并提供相应的函数进行处理 strcmp strcat strcp ...
- Effective Java通俗理解(上)
这篇博客是Java经典书籍<Effective Java(第二版)>的读书笔记,此书共有78条关于编写高质量Java代码的建议,我会试着逐一对其进行更为通俗易懂地讲解,故此篇博客的更新大约 ...
- 灵魂拷问:为什么 Java 字符串是不可变的?
在逛 programcreek 的时候,发现了一些精妙绝伦的主题.比如说:为什么 Java 字符串是不可变的?像这类灵魂拷问的主题,非常值得深思. 对于绝大多数的初级程序员来说,往往停留在" ...
- 面试官刁难:Java字符串可以引用传递吗?
老读者都知道了,六年前,我从苏州回到洛阳,抱着一幅"海归"的心态,投了不少简历,也"约谈"了不少面试官,但仅有两三个令我感到满意.其中有一位叫老马,至今还活在我 ...
随机推荐
- vue2.0 + vux 项目搭建
1.快速搭建项目模板 因为项目使用vux,所以推荐使用vux官网的airyland/vux2 模板,vue-cli工具是vue项目的搭建脚手架 默认为 webpack2 模板,如果你需要使用webpa ...
- Solaris Samba服务器与DNS服务
用于文件传输的协议,类似于ftp,ssh,只是它比其他两个好用. Samba协议 NetBIOS :一种编程接口. SMB:server message block .主要作为Microsoft网络通 ...
- JavaScript的string方法(demo)
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...
- HTML+CSS要点
1.td占据多行 / 列时,其挤开的 td 不写(但是包裹 td 的 tr 要写) 2. display:td 的元素中的文本默认垂直不居中(table中的td中的文本是垂直居中的) 3.th虽然定义 ...
- 当CSDN携手Markdown
当CSDN携手Markdown Tags: CSDN Markdown 当CSDN携手Markdown Markdown CSDN-Markdown 也不知道是不是基于 Github 崛起的因素,Ma ...
- iOS菜鸟学习--怎样避免两个button同一时候响应
在測试应用时.有时会变态的将两个UIButton同一时候按住来測试.结果就是两个button会同一时候响应,会出现同一时候push两个viewcontroller等非正常情况.为了避免用户误操作造成这 ...
- 【iOS开发】---- UIView动画
iOS 动画UIView动画 原文:http://www.cocoachina.com/bbs/read.php?tid=110168 1.概述 UIKit直接将动画集成到UIView类中,实现简 ...
- Cena使用
打开cena,在工具-选项中,修改G++和GCC的编译命令.格式:[g++目录]g++.exe %s.cpp -o %s.exe [编译选项]例如以下命令使用刚安装的mingw4.8.1 g++编译, ...
- Windows平台,开机自动运行应用
打开注册表编辑器(Win+R后执行regedit) 进入HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run 新建字符串值, ...
- Linux环境编程之同步(三):读写锁
概述 相互排斥锁把试图进入我们称之为临界区的全部其它线程都堵塞住.该临界区通常涉及对由这些线程共享一个或多个数据的訪问或更新.读写锁在获取读写锁用于读某个数据和获取读写锁用于写直接作差别. 读写锁的分 ...