Java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。
substring()
它有两种形式,第一种是:String substring(int startIndex)
第二种是:String substring(int startIndex,int endIndex)
concat() 连接两个字符串
replace() 替换
它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下:
String replace(char original,char replacement)
例如:String s=”Hello”.replace(’l',’w');
第二种形式是用一个字符序列替换另一个字符序列,形式如下:
String replace(CharSequence original,CharSequence replacement)
trim() 去掉起始和结尾的空格
valueOf() 转换为字符串
toLowerCase() 转换为小写
toUpperCase() 转换为大写
length() 取得字符串的长度
例:
char chars[]={’a',’b’.’c'};
String s=new String(chars);
int len=s.length();
charAt() 截取一个字符
例:
char ch;
ch=”abc”.charAt(1);
返回值为’b’
getChars() 截取多个字符
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
sourceStart 指定了子串开始字符的下标
sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。
target 指定接收字符的数组
targetStart target中开始复制子串的下标值
例:
String s=”this is a demo of the getChars method.”;
char buf[]=new char[20];
s.getChars(10,14,buf,0);
getBytes()
替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()
例:
String s = “Hello!你好!”;
byte[] bytes = s.getBytes();
toCharArray()
例:
String s = “Hello!你好!”;
char[] ss = s.toCharArray();
equals()和equalsIgnoreCase() 比较两个字符串
regionMatches() 用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。
boolean regionMatches(int startIndex,String str2,int
str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase,int startIndex,String
str2,int str2StartIndex,int numChars)
startsWith()和endsWith()
startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束
equals()和==
equals()方法比较字符串对象中的字符,==运算符比较两个对象是否引用同一实例。
例:String s1=”Hello”;
String s2=new String(s1);
s1.eauals(s2); //true
s1==s2;//false
compareTo()和compareToIgnoreCase() 比较字符串
indexOf()和lastIndexOf()
indexOf() 查找字符或者子串第一次出现的地方。
lastIndexOf() 查找字符或者子串是后一次出现的地方。
StringBuffer构造函数
StringBuffer定义了三个构造函数:
StringBuffer()
StringBuffer(int size)
StringBuffer(String str)
StringBuffer(CharSequence chars)
下面是StringBuffer相关的函数:
length()和capacity()
一个StringBuffer当前长度可通过length()方法得到,而整个可分配空间通过capacity()方法得到。
ensureCapacity() 设置缓冲区的大小
void ensureCapacity(int capacity)
setLength() 设置缓冲区的长度
void setLength(int len)
charAt()和setCharAt()
char charAt(int where)
void setCharAt(int where,char ch)
getChars()
void getChars(int sourceStart,int sourceEnd,char target[],int targetStart)
append() 可把任何类型数据的字符串表示连接到调用的StringBuffer对象的末尾。
例:int a=42;
StringBuffer sb=new StringBuffer(40);
String s=sb.append(”a=”).append(a).append(”!”).toString();
insert() 插入字符串
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
index指定将字符串插入到StringBuffer对象中的位置的下标。
reverse() 颠倒StringBuffer对象中的字符
StringBuffer reverse()
delete()和deleteCharAt() 删除字符
StringBuffer delete(int startIndex,int endIndex)
StringBuffer deleteCharAt(int loc)
replace() 替换
StringBuffer replace(int startIndex,int endIndex,String str)
substring() 截取子串
String substring(int startIndex)
String substring(int startIndex,int endIndex)
第一节、String对象
一、
Java中将字符串作为String类型对象来处理。当创建一个String对象时,被创建的字符串是不能被改变的。每次需要改变字符串时都要创建一个新的String对象来保存新的内容。原始的字符串不变。之所以采用这种方法是因为实现固定的,不可变的字符串比实现可变的字符串更高效。对于那些想得到改变的字符串的情况,有一个叫做StringBuffer的String类的友类,它的对象包含了在创建之后可以改变的字符串。
String类和StringBuffer类都在java.lang中定义。因此它们可以自动的被所有程序使用。两者均被说明为final,这意味着两者均不含子类。
二、String构造函数
(1)String(), 默认构造函数,无参数
String s1 = new String();
(2)String( char chars[]) ,传入字符数组
char[] myChars={'a', 'b', 'c'};
String s2 = new String(myChars) // 使用字符串“abc”初始化s2
(3)String( char chars[], int startIndex, int numChars) ,传入一个字符数组,从指定下标位置开始获取指定个数的字符,用这些字符来初始化字符串变量。
char[] myChars={'h', 'e', 'l', 'l', 'o'};
String s3 = new String(myChars,1,3); //使用字符串“ell”初始化s3
(4)String(String strObj),传入另一个字符串对象,用该字符串对象的内容初始化
String s4= new String(s3); // 这是s4也是“ell”了。
(5)String(byte asciiChars[])
String(byte asciiChars[], int startIndex, int numChars)
尽管Java的char类型使用16位(bit)表示Unicode编码字符集,在Internet中,
字符串的典型格式使用由ASCII字符集构成的8位数组,因为8位ASCII字符串是共同的,当给定一个字节(byte)数组时,String类提供了上面两个初始化字符串的构造函数。
例子:
package Examples;
class SubStringConv{
public static void main(String[] args){
byte ascii[]={65,66,67,68,69,70};
String s1=new String(ascii);
System.out.println(s1);
String s2=new String(ascii,2,3);
System.out.println(s2);
}
}
编译和运行后输出:
ABCDEF
CDE
三、
(1)调用字符串的length()方法可以得到该字符串的长度(字符个数);
(2)前面说明了如何使用new运算符创建一个字符串实例。然而这是一种早期的使用字符串常量的处理方法。对于程序中的每一个字符串常量,Java会自动创建String对象。因此,可以使用字符串常量初始化String对象。例如:
String s5="abc";
int i = "abc".length(); //可以将字符串作为对象来进行操作
(3)可以使用“+”运算符来将两个字符串连接起来产生一个新的String对象。只要+运算符有一个运算数是字符串(String)实例时,编译器就将另一个运算数转换为它的字符串形式。这种操作是通过调用一个由String类定义的 字符串转换方法valueOf()来完成的。对于简单类型,valueOf()方法返回一个字符串,该字符串包含了该类型的值的字符串。对于对象,valueOf()方法调用toString()方法。每一个类都执行toString()方法,因为它是由Object定义的。toString()方法具有如下一般形式: String toString() 。 toString()方法返回一个String对象(即字符串)。该对象一般是对类的一个描述。
四、一些字符串操作
(1)字符截取
*char charAt(int where) ,注意,这里返回一个char字符例如:
char a ;
a="abcde".charAt(2); //将索引为2 ,即第三个字符赋给a
* void getChars(int sourceStart, int sourceEnd, char target[], int targetStart) ,这里是无返回值方法,指定要截取的子字符串的开始和结束下标,再指定要储存子字符串内字符的数组,和存放这些字符的起始位置。注意,子字符串并不包括位于结束下标的字符。
* byte[] getBytes() 这是getBytes()方法最简单的形式,它实现将字符存放于字节数组中。在将字符串(String)值输出到一个不支持16位Unicode编码的环境时,getBytes
()是最有用的。例如,大多数Internet协议和文本文件格式在文本交换时使用8位ASCII编码。
* char[] toCharArray() 将字符串中所有的字符转换到一个字符数组的最简当方法,也可以使用getChars()方法实现。
(2)字符串比较
* boolean equals(Object str) 比较两个字符串对象是否相等,
boolean equalsIgnoreCaseJ(String str) 比较两个字符串对象,且忽略字符的大小写
* regionMatches() 方法允许将一个字符串中指定的区间和另一字符串中指定的区间进行比较,它的重载形式允许在比较时忽略大小写。下面给出这两种方法的一般形式:
boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars)
boolean regionMatches(boolean ignoreCase ,int startIndex,String str2,int str2StartIndex,int numChars)
其中startIndex指定调用此方法的字符串内子字符串的起始位置。
* boolean startsWith(String str) startsWith方法还有第二种形式:
boolean startWith(String str, int startIndex)
boolean endsWith(String str)
上面的方法用来判断一个给定的字符串是否是从指定的字符串开始或结束。
* int compareTo(String str) 方法用于比较两个字符串的大小。字符串比较的结果及其含义:
值 | 含义 |
小于0 | 调用此方法的字符串小于参数str |
大于0 | 调用此方法的字符串大于参数str |
等于0 | 两个字符串相等 |
(3)其他操作
* 搜索字符串:
int indexOf( int ch)
int lastIndexOf( int ch)
int indexOf(String str)
int lastIndexOf(String str)
指定搜索的起始点:
int indexOf( int ch, int startIndex)
int lastIndexOf( int ch ,int startIndex)
int indexOf(String str ,int startIndex)
int lastIndexOf(String str, int startIndex)
* 使用 substring()截取子字符串:
String substring(int startIndex) 注意substring中string没有大写,截取指定位置后的子字符串。
String substring(int startIndex,int endIndex) 截取指定起始位置和结束位置的子字符串。注意截取的字字符串不包括结束位置的字符。
* concat() 连接连个字符串,与+ 运算符执行相同功能。
String concat(String str)
* replace() 用另一个字符取代指定字符串中指定字符:
String replace(char original, char replacement) 例如:
String s=”Hello”.replace(‘l’,’w’); //执行后 s =”Hewwo”;
* trim() 返回一个字符串,该字符串是删除调用字符串前后的空白符所得的字符串
* 改变字符串内字符的大小写
String toLowerCase() 返回一个所有字母都是小写的字符串
String toUpperCase()返回一个所有字母都是大写的字符串
* 使用 valueOf()方法实现数据转换
例如:
String str = String.valueOf(3) ; //将int类型转换成字符串类型,其他基本数据类型和任何类的对象也可作为参数。
第二节、StringBuffer
StringBuffer定义了下面三个构造函数:
StringBuffer() // 默认构造函数,预留了16个字符的空间,该空间不需再分配
StringBuffer(int size) // 设置指定缓冲区大小
StringBuffer(String str) // 设置StringBuffer对象初始化的内容并预留16个字符空间,且不需再分配空间
* int length()
调用length()方法可以得到StringBuffer对象的长度,调用capacity()可以得到总的分配容量。两个方法都是返回一个int类型的值。
* void ensureCapacity(int capacity)
如果想在构造StringBuffer对象后为某些字符预分配空间,可以使用ensureCapacity()方法,设置缓冲区的大小,这在事先已知要在StringBuffer上追加大量小字符串的情况下是有用的。ensureCapcity()方法具有如下的一般形式: void ensureCapacity(int capacity)
* void setLength(int len)
使用setLength()方法可以设置StringBuffer对象的长度,它的一般形式如下:
void setLength(int len) 如果len大于StringBuffer对象当前的length()值的话,那么会在StringBuffer对象后面加上空字符;如果比length()小的话,则len后面的字符串会丢失。
* char charAt(int where)
void setCharAt(int where, char ch)
使用charAt()方法可以得到StringBuffer对象中指定位置上的字符,setCharAt() 可以设置指定位置上的字符。它们的一般形式如下:
char charAt(int where)
void setCharAt(int where,char ch)
对于这两种法法,where值必须是非负的,同时不能超过或等于StringBuffer对象的长度。
* getChars(int suorceStart,int sourceEnd,char target[] , int targetStart)
* append()
Append()方法将任一其他类型数据的字符串形式连接到调用StringBuffer对象的后面,对所有内置的类型和Object,它都有重载形式。下面是几种形式:
StringBuffer append(String str)
StringBuffer append(int num)
StringBuffer append(Object obj)
* insert()
Insert()方法将一个字符串插入另一个字符串中。下面是它的几种形式:
StringBuffer insert(int index,String str)
StringBuffer insert(int index,char ch)
StringBuffer insert(int index,Object obj)
*reverse() // StringBuffer reverse()
StringBuffer strbf=new StringBuffer(“ABCDEFG”);
strbf.reverse();
System.out.println(strbf); //输出 GFEDCBA
* StringBuffer delete(int startIndex,int endIndex)
StringBuffer deleteCharAt(int loc)
删除指定位置的字符串和指定位置的字符。例如删除第一个字符后的所有字符:
strbf.delete(1,strbf.length());
* replace()
它完成在StringBuffer内部用一个字符串代替另一个指定起始位置和结束位置的字符串的功能,注意的是,被代替的字符不包括结束位置上的字符,它的一般形式是,:
StringBuffer replace(int startIndex, int endIndex,String str)
* substring() 返回StringBuffer的一部分值
String substring(int startIndex)
String substring(int startIndex, int endIndex)
此版本包含简体中文,日文以及巴西葡语。
不是最终发布版本,更新频率为每周两次。
对中文版感兴趣的朋友可以下载试一试,欢迎提出宝贵意见:
http://bits.netbeans.org/netbeans/6.0.1/ml/nightly/latest/

1. 常用快捷键
(1)Ctrl+Space
说明:内容助理。提供对方法,变量,参数,javadoc等得提示,应运在多种场合,总之需要提示的时候可先按此快捷键。
注:避免输入法的切换设置与此设置冲突
(2)Ctrl+Shift+Space
说明:变量提示
(3)Ctrl+/
说明:添加/消除//注释,在eclipse2.0中,消除注释为Ctrl+\
(4)Ctrl+Shift+/
说明:添加/* */注释
(5)Ctrl+Shift+\
说明:消除/* */注释
(6)Ctrl+Shift+F
说明:自动格式化代码
(7)Ctrl+1
说明:批量修改源代码中的变量名,此外还可用在catch块上.
(8)Ctril+F6
说明:界面切换
(9)Ctril+Shift+M
说明:查找所需要得包
(10)Ctril+Shift+O
说明:自动引入所需要得包
(11)Ctrl+Alt+S
说明:源代码得快捷菜单。其中的Generate getters and setters 和 Surround with try/catch
block比较常用.建议把它们添加为快捷键.快捷键设置在windows->preferences->Workbench->Keys
2. 快捷键列表
编辑
作用域 功能 快捷键
全局 查找并替换 Ctrl+F
文本编辑器 查找上一个 Ctrl+Shift+K
文本编辑器 查找下一个 Ctrl+K
全局 撤销 Ctrl+Z
全局 复制 Ctrl+C
全局 恢复上一个选择 Alt+Shift+↓
全局 剪切 Ctrl+X
全局 快速修正 Ctrl1+1
全局 内容辅助 Alt+/
全局 全部选中 Ctrl+A
全局 删除 Delete
全局 上下文信息 Alt+?Alt+Shift+?Ctrl+Shift+Space
Java编辑器 显示工具提示描述 F2
Java编辑器 选择封装元素 Alt+Shift+↑
Java编辑器 选择上一个元素 Alt+Shift+←
Java编辑器 选择下一个元素 Alt+Shift+→
文本编辑器 增量查找 Ctrl+J
文本编辑器 增量逆向查找 Ctrl+Shift+J
全局 粘贴 Ctrl+V
全局 重做 Ctrl+Y
查看
作用域 功能 快捷键
全局 放大 Ctrl+=
全局 缩小 Ctrl+-
窗口
作用域 功能 快捷键
全局 激活编辑器 F12
全局 切换编辑器 Ctrl+Shift+W
全局 上一个编辑器 Ctrl+Shift+F6
全局 上一个视图 Ctrl+Shift+F7
全局 上一个透视图 Ctrl+Shift+F8
全局 下一个编辑器 Ctrl+F6
全局 下一个视图 Ctrl+F7
全局 下一个透视图 Ctrl+F8
文本编辑器 显示标尺上下文菜单 Ctrl+W
全局 显示视图菜单 Ctrl+F10
全局 显示系统菜单 Alt+-
导航
作用域 功能 快捷键
Java编辑器 打开结构 Ctrl+F3
全局 打开类型 Ctrl+Shift+T
全局 打开类型层次结构 F4
全局 打开声明 F3
全局 打开外部javadoc Shift+F2
全局 打开资源 Ctrl+Shift+R
全局 后退历史记录 Alt+←
全局 前进历史记录 Alt+→
全局 上一个 Ctrl+,
全局 下一个 Ctrl+.
Java编辑器 显示大纲 Ctrl+O
全局 在层次结构中打开类型 Ctrl+Shift+H
全局 转至匹配的括号 Ctrl+Shift+P
全局 转至上一个编辑位置 Ctrl+Q
Java编辑器 转至上一个成员 Ctrl+Shift+↑
Java编辑器 转至下一个成员 Ctrl+Shift+↓
文本编辑器 转至行 Ctrl+L
搜索
作用域 功能 快捷键
全局 出现在文件中 Ctrl+Shift+U
全局 打开搜索对话框 Ctrl+H
全局 工作区中的声明 Ctrl+G
全局 工作区中的引用 Ctrl+Shift+G
文本编辑
作用域 功能 快捷键
文本编辑器 改写切换 Insert
文本编辑器 上滚行 Ctrl+↑
文本编辑器 下滚行 Ctrl+↓
文件
作用域 功能 快捷键
全局 保存 Ctrl+X Ctrl+S
全局 打印 Ctrl+P
全局 关闭 Ctrl+F4
全局 全部保存 Ctrl+Shift+S
全局 全部关闭 Ctrl+Shift+F4
全局 属性 Alt+Enter
全局 新建 Ctrl+N
项目
作用域 功能 快捷键
全局 全部构建 Ctrl+B
源代码
作用域 功能 快捷键
Java编辑器 格式化 Ctrl+Shift+F
Java编辑器 取消注释 Ctrl+\
Java编辑器 注释 Ctrl+/
Java编辑器 添加导入 Ctrl+Shift+M
Java编辑器 组织导入 Ctrl+Shift+O
Java编辑器 使用try/catch块来包围 未设置,太常用了,所以在这里列出,建议自己设置。也可以使用Ctrl+1自动修正。
运行
作用域 功能 快捷键
全局 单步返回 F7
全局 单步跳过 F6
全局 单步跳入 F5
全局 单步跳入选择 Ctrl+F5
全局 调试上次启动 F11
全局 继续 F8
全局 使用过滤器单步执行 Shift+F5
全局 添加/去除断点 Ctrl+Shift+B
全局 显示 Ctrl+D
全局 运行上次启动 Ctrl+F11
全局 运行至行 Ctrl+R
全局 执行 Ctrl+U
重构
作用域 功能 快捷键
全局 撤销重构 Alt+Shift+Z
全局 抽取方法 Alt+Shift+M
全局 抽取局部变量 Alt+Shift+L
全局 内联 Alt+Shift+I
全局 移动 Alt+Shift+V
全局 重命名 Alt+Shift+R
全局 重做 Alt+Shift+Y
JAVA要求你的文件和你的类名严格对应的。
比如 public class HelloWorld{ .....
那么文件名一定只能是HelloWorld.java!
2、你的程序中有main方法吗?参数对吗?
main方法的声明应该是这样子的:
public static void main(String[] args)
3、javac后面跟的参数是文件名,但java 后面跟的是类名!比如:
javac HelloWorld.java
java HelloWorld
4、设置classpath了吗?
不仅是在安装JDK时要设置的内容,一般来说最好还要自己设置一个目录来存放自己的类文件的。比如d:\class目录。设置classpath=%classpath%;d:\class
那么,现在将HelloWorld.class文件拷贝到d:\class目录下,再java HelloWorld应该就行了。
5、结合第3点和第4点
如果你的类是属于某一个包的,比如这样一个类sony.test.HelloWorld,那么按照第4点中的目录来说,就应该将HelloWorld.class文件存放到d:\class\sony\test\目录下。
执行的时候应该参考第3点中说的,按类名执行:java sony.test.HelloWorld。






