文档库 最新最全的文档下载
当前位置:文档库 › JAVA字符串的表示

JAVA字符串的表示

JAVA字符串的表示
JAVA字符串的表示

字符串的表示

Java语言中,把字符串作为对象来处理,类String和StringBuffer 都可以用来表示一个字符串。(类名都是大写字母打头)

1.字符串常量

字符串常量是用双引号括住的一串字符。

"Hello World!"

2.String表示字符串常量

用String表示字符串:

String( char chars[ ] );

String( char chars[ ], int startIndex, int numChars );

String( byte ascii[ ], int hiByte );

String( byte ascii[ ], int hiByte, int startIndex, int numChars );

String使用示例:

String s=new String() ; 生成一个空串

下面用不同方法生成字符串"abc":

char chars1[]={'a','b','c'};

char chars2[]={'a','b','c','d','e'};

String s1=new String(chars1);

String s2=new String(chars2,0,3);

byte ascii1[]={97,98,99};

byte ascii2[]={97,98,99,100,101};

String s3=new String(ascii1,0);

String s4=new String(ascii2,0,0,3);

3.用StringBuffer表示字符串

StringBuffer( ); /*分配16个字符的缓冲区*/

StringBuffer( int len ); /*分配len个字符的缓冲区*/ StringBuffer( String s ); /*除了按照s的大小分配空间外,再分配16个

字符的缓冲区*/

JAVA字符串格式化-String.format()的使用

JAVA字符串格式化-String.format()的使用 常规类型的格式化 String类的format()方法用于创建格式化的字符串以及连接多个字符串对象。熟悉C语言的同学应该记得C语言的sprintf()方法,两者有类似之处。format()方法有两种重载形式。 format(String format, Object... args) 新字符串使用本地语言环境,制定字符串格式和参数生成格式化的新字符串。 format(Locale locale, String format, Object... args) 使用指定的语言环境,制定字符串格式和参数生成格式化的字符串。 显示不同转换符实现不同数据类型到字符串的转换,如图所示。 转换符说明示例 %s 字符串类型"mingrisoft" %c 字符类型'm' %b 布尔类型true %d 整数类型(十进制)99 %x 整数类型(十六进制)FF %o 整数类型(八进制)77 %f 浮点类型99.99 %a 十六进制浮点类型FF.35AE %e 指数类型9.38e+5 %g 通用浮点类型(f和e类型中较短的) %h 散列码 %% 百分比类型% %n 换行符 %tx 日期与时间类型(x代表不同的日期与时间转换符 测试用例 [java]view plaincopy 1.public static void main(String[] args) { 2. String str=null;

3. str=String.format("Hi,%s", "王力"); 4. System.out.println(str); 5. str=String.format("Hi,%s:%s.%s", "王南","王力","王张"); 6. System.out.println(str); 7. System.out.printf("字母a的大写是:%c %n", 'A'); 8. System.out.printf("3>7的结果是:%b %n", 3>7); 9. System.out.printf("100的一半是:%d %n", 100/2); 10. System.out.printf("100的16进制数是:%x %n", 100); 11. System.out.printf("100的8进制数是:%o %n", 100); 12. System.out.printf("50元的书打8.5折扣是:%f 元%n", 50*0.85); 13. System.out.printf("上面价格的16进制数是:%a %n", 50*0.85); 14. System.out.printf("上面价格的指数表示:%e %n", 50*0.85); 15. System.out.printf("上面价格的指数和浮点数结果的长度较短的 是:%g %n", 50*0.85); 16. System.out.printf("上面的折扣是%d%% %n", 85); 17. System.out.printf("字母A的散列码是:%h %n", 'A'); 18.} 输出结果 [plain]view plaincopy 1.Hi,王力 2.Hi,王南:王力.王张 3.字母a的大写是:A 4.3>7的结果是:false 5.100的一半是:50 6.100的16进制数是:64 7.100的8进制数是:144 8.50元的书打8.5折扣是:42.500000 元 9.上面价格的16进制数是:0x1.54p5 10.上面价格的指数表示:4.250000e+01 11.上面价格的指数和浮点数结果的长度较短的是:42.5000 12.上面的折扣是85% 13.字母A的散列码是:41 搭配转换符的标志,如图所示。 标志说明示例结果+ 为正数或者负数添加符号("%+d",15) +15 ?左对齐("%-5d",15) |15 | 0 数字前面补0 ("%04d", 99) 0099 空格在整数之前添加指定数量的 空格 ("% 4d", 99) | 99| , 以“,”对数字分组("%,f", 9999.99) 9,999.990000

Java常用类

常用类 (1)字符串相关类(String,StringBuffer) 1)https://www.wendangku.net/doc/fe3762853.html,ng.String类代表不可变得字符序列; 2)"***"为该类的一个对象; 3)String类的常见构造方法:String(String original)//创建一个String对象为original 的拷贝;String(char[] value)//用一个字符数组创建一个String对象;String(char[] value,int offset,int count); 4)String 类的常用方法:char charAt(int index)//返回第index个字符、int length()//返回字符串的长度、int indexOf(String str)//返回字符串中出现Str的第一个位置;int indexOf(String str,int fromIndex)//返回字符串中从fromindex开始出现Str的第一个位置;boolean equalsIgnoreCase(string another)//比较是否相等,忽略大小写;String replace(char olochar,char newchar);boolean startswith(String prefix)//判断字符串是否以prefix字符串开头;boolean endsWith(String suffix);String toUpperCase()//返回一个字符串为该字符串的大写形式;String toLowerCase();String substring(int beginIndex0)//返回该字符串从beginindex开始到结尾的子字符串;String substring(int beginindex,int endindxt);String trim()//返回将该字符串去掉开头和结尾空格后的字符串。静态重载方法:public static String valueOf(。。。)//将基本类型数据转换为字符串。String[] split(String regex)//将一个字符串按照指定的分隔符分隔,返回分隔后的字符串数组。 (2)StringBuffer类:可变的字符串序列; 1)构造方法:StringBuffer();StringBuffer(string str); 2)常用方法:StringBuffer append();insert();delete();indexOf();rerverse(); (2)基本数据类型包装类:Integer,Double将基本数据类型包装成一个对象; (2)Math类:方法 (3)File类:各类的方法 (4)枚举类Enum:只能够取特定值中的一个,使用enum关键字,是https://www.wendangku.net/doc/fe3762853.html,ng.Enum类型;

Java统计字符串中每个字符出现次数

Java统计字符串中每个字符出现次数package com.perry.test; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /** * * @author perry_zhao * 统计一个字符串中每个字符出现的次数(不忽略大小写) */ public class CountStr { public Map count(String str){ System.out.println("需要统计的字符串:"+str+"准备开始统计每个字符出现的次数..."); Map map = new HashMap(); String temp =""; for(int i=0; i

Java分割字符串

https://www.wendangku.net/doc/fe3762853.html,ng.String 的 split() 方法, JDK 1.4 or later public String[] split(String regex,int limit) 示例代码 public class StringSplit { public static void main(String[] args) { String sourceStr = "1,2,3,4,5"; String[] sourceStrArray = sourceStr.split(","); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } // 最多分割出3个字符串 int maxSplit = 3; sourceStrArray = sourceStr.split(",", maxSplit); for (int i = 0; i < sourceStrArray.length; i++) { System.out.println(sourceStrArray[i]); } } } 输出结果: 1 2 3 4 5 1 2 3,4,5

split 的实现直接调用的 matcher 类的 split 的方法。在使用String.split方法分隔字符串时,分隔符如果用到一些特殊字符,可能会得不到我们预期的结果。在正则表达式中有特殊的含义的字符,我们使用的时候必须进行转义,示例: public class StringSplit { public static void main(String[] args) { String value = "192.168.128.33"; // 注意要加\\,要不出不来,yeah String[] names = value.split("\\."); for (int i = 0; i < names.length; i++) { System.out.println(names[i]); } } } split分隔符总结 1.字符"|","*","+"都得加上转义字符,前面加上"\\"。 2.而如果是"\",那么就得写成"\\\\"。 3.如果一个字符串中有多个分隔符,可以用"|"作为连字符。 比如:String str = "Java string-split#test",可以用Str.split(" |-|#")把每个字符串分开。这样就把字符串分成了3个子字符串。 java.util.Tokenizer JDK 1.0 or later StringTokenizer StringTokenizer 类允许应用程序将字符串分解为标记。StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用String 的 split 方法或 java.util.regex 包。 代码示例 public class StringSplit { public static void main(String[] args) { String ip = "192.168.128.33"; StringTokenizer token=new StringTokenizer(ip,"."); while(token.hasMoreElements()){

JAVA中常用类的常用方法

JAVA屮常用类的常用方法 一.java?丨ang.Object 类 1、clone()方法 创建丼返M此对象的一个副木。要进行“克隆”的对象所属的类必须实现https://www.wendangku.net/doc/fe3762853.html,ng. Cloneable 接口。 2、equals(Objectobj)方法 0 功能:比较引用类型数据的等价性。 0 等价标准.?引用类型比较引用,基木类型比较值。 0 存在特例.?对File、String、Date及封装类等类型来说,是比较类型及对象的内稃而+ 考虑引用的是否为同一实例。 3、finalize〇方法 当垃圾丨"丨收器确定>(、存在对该对象的更多引用时,由对象的垃圾丨"丨收器调用此方法。 4、hashCode〇方法返 回该对象的哈希码值。 5、notify〇方法 唤醒在此对象监视器上等待的中?个线祝。 6、notifyAII〇方法 唤醒在此对象监视器上等待的所有线程= 7、toString()方法 返W该对象的字符串表示。在进行String与其它类型数据的连接操作时,&动调用tostringo 方法。可以根据耑要重写toStringO方法。 8、wait()方法 在其他线程调用此对象的n〇tify()方法或notifyAIIO方法前,异致当前线程等待。 二、字符串相关类 I String 类 charAt(int index)返回指定索引处的char值。compareTo{String anotherString)按字

典顺序比较两个字符串。compareTolgnoreCase(Stringstr)按字典顺序比较两个字 符串,不考虑人小写。concat(String str)将指定字符串连接到此字符串的结尾。 endsWith(String suffix)测试此字符串是否以指定的〗?缀结束。equals{Object anObject)将此字符串与指定的对象比较。 equalslgnoreCase(String anotherString)将此String 与另一个String 比较,考虑人小'与’。indexOf(int ch)返H指定字符在此字符串屮第一次出现处的索引。 indexOf(String str)返回第一次出现的指定子字符串在此字符串屮的索引, lastlndexOf(intch)返回指定字符在此字符串中最后??次出现处的索引。 length()返|n丨此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用newChar替换此字符串中出现的所有oldChar得到的。 split(String regex)根据给定正则表达式的匹配拆分此字符串。startsWith{String prefix)测试此字符 串是否以指定的前缀开始。substring(int beginlndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。 substring(int beginlndex, int endlndex) 返回一个新字符串,它是此字符串的一个子字符串。该子字符串从指定的beginlndex 处开始,一直到索引endlndex-1处的字符。 t〇CharArray()将此字符串转换为一个新的字符数组。

Java字符串查找

Java中字符串中子串的查找共有四种方法,如下: 1、int indexOf(String str) :返回第一次出现的指定子字符串在此字符串中的索引。 2、int indexOf(String str, int startIndex):从指定的索引处开始,返回第一次出现的指定子字符串在此字符串中的索引。 3、int lastIndexOf(String str) :返回在此字符串中最右边出现的指定子字符串的索引。 4、int lastIndexOf(String str, int startIndex) :从指定的索引处开始向后搜索,返回在此字符串中最后一次出现的指定子字符串的索引。 indexof()用法说明 indexof() 返回String 对象内第一次出现子字符串的字符位置。 string.indexOf(subString[, startIndex]) 参数 string 必选项。String 对象或文字。 subString 必选项。 要在String 对象中查找的子字符串。 starIndex 可选项。 该整数值指出在String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。 说明 indexOf 方法返回一个整数值,指出String 对象内子字符串的开始位置。如果没有找到子字符串,则返回-1。 如果startindex 是负数,则startindex 被当作零。如果它比最大的字符位置索引还大,则它被当作最大的可能索引。 从左向右执行查找。否则,该方法与lastIndexOf 相同。 示例 下面的示例说明了indexOf 方法的用法。 function IndexDemo(str2){ var str1 = "BABEBIBOBUBABEBIBOBU" var s = str1.indexOf(str2); return(s); }

java代码_去掉重复字符

注:此篇文档是转载别人的,对原作者表示感谢。 import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; import java.util.Set; //去掉重复字符串的工具类 public class RemoveDuplicateChar { static StringBuffer sb = new StringBuffer(); // 普通的方法,不使用集合 static void removeDuplicateByOriginalMethod(String str) { System.out.println("方法一:普通方法"); char[] cy = str.toCharArray(); String temp = ""; for (int i = 0; i < cy.length; i++) { if (temp.indexOf(cy[i]) == -1) { temp += cy[i]; } } System.out.println("去除重复字符后:" + temp); sb.setLength(0); } // 方法二,使用LinkedHashSet可以在去掉重复字符后按照原字符顺序排列字符 static void removeDuplicateByLinkedHashSet(String str, String[] ss, int len) { System.out.println("方法二:LinkedHashSet"); Set set = new LinkedHashSet(); iterate(set, ss, len); System.out.println("去除重复字符后:" + sb.toString()); // 清空StringBuffer对象sb sb.setLength(0); } // 方法三,使用ArrayList可以在去掉重复字符后按照原字符顺序排列字符 static void removeDuplicateByArrayList(String str, String[] ss, int len) { System.out.println("方法三:ArrayList"); List list = new ArrayList<>(); iterate(list, ss, len); System.out.println("去除重复字符后:" + sb.toString());

java 字符串常用函数及其用法

java中的字符串也是一连串的字符。但是与许多其他的计算机语言将字符串作为字符数组处理不同,Java将字符串作为String类型对象来处理。将字符串作为内置的对象处理允许Java提供十分丰富的功能特性以方便处理字符串。下面是一些使用频率比较高的函数及其相关说明。 String相关函数 1)substring() 它有两种形式,第一种是:String substring(int startIndex) 第二种是:String substring(int startIndex,int endIndex) 2)concat() 连接两个字符串 例:String s="Welcome to "; String t=s.concat("AnHui"); 3)replace() 替换 它有两种形式,第一种形式用一个字符在调用字符串中所有出现某个字符的地方进行替换,形式如下: String replace(char original,char replacement) 例如:String s=”Hello”.replace(’l',’w'); 第二种形式是用一个字符序列替换另一个字符序列,形式如下: String replace(CharSequence original,CharSequence replacement) 4)trim() 去掉起始和结尾的空格 5)valueOf() 转换为字符串 6)toLowerCase() 转换为小写 7)toUpperCase() 转换为大写 8)length() 取得字符串的长度 例:char chars[]={’a',’b’.’c'}; String s=new String(chars); int len=s.length(); 9)charAt() 截取一个字符 例:char ch; ch=”abc”.charAt(1); 返回值为’b’ 10)getChars() 截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) sourceStart 指定了子串开始字符的下标 sourceEnd 指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。

Java中截取字符串

Java中截取字符串——经本人验证通过 考题题干 编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。但是要保证汉字不被截半个,如"我ABC"4,应该截为"我AB",输入"我ABC汉DEF"6,应该输出"我ABC",而不是"我ABC+汉的半个"。 试题分析 本面试题容易产生困惑的是中文字符和英文字符,在这里需要考虑汉字和英文字符的占用字节数问题,中文字符占两个字节,英文字符占一个字节,理解了这个,就很容易完成本题了。参考答案 具体代码实现如下: //package core_java; import java.util.Scanner; public class jiequzichuan { static String ss; // 要进行截取操作的字符串 static int n; // 截取的字符串的字节数 public static void main(String[] args) { System.out.println("请输入字符串:"); Scanner scStr = new Scanner(System.in); // 从键盘获取字符串 ss = scStr.next(); // 将Scanner对象中的内容以字符串的形式取出来 System.out.println("请输入字节数:"); Scanner scByte = new Scanner(System.in);// 从键盘获取字符串 n = scByte.nextInt(); // 将Scanner对象中的内容以数值的形式取出来 Interception(setValue()); // 方法与方法间的套用 } public static String[] setValue() { // 此方法的作用是将字符串转换成字符串数组 String[] string = new String[ss.length()];// 创建一个字符数组string for (int i = 0; i < string.length; i++) { string[i] = ss.substring(i, i + 1); // 将字符串ss中的第i个字符取出,放入字符数组中string中 } return string; // 将这个字符数组返回 } public static void Interception(String[] string) { int count = 0; String m = "[\u4e00-\u9fa5]"; // 汉字的正则表达试 System.out.println("以每" + n + "字节划分的字符串如下所示:"); for (int i = 0; i < string.length; i++) { if (string[i].matches(m)) {

JAVA中常用类的常用方法

JAVA中常用类的常用方法 一、类 1、clone()方法 创建并返回此对象的一个副本。要进行“克隆”的对象所属的类必须实现. Cloneable接口。 2、equals(Object obj)方法 功能:比较引用类型数据的等价性。 等价标准:引用类型比较引用,基本类型比较值。 存在特例:对File、String、Date及封装类等类型来说,是比较类型及对象的内容而不考虑引用的是否为同一实例。 3、finalize()方法 当垃圾回收器确定不存在对该对象的更多引用时,由对象的垃圾回收器调用此方法。 4、hashCode()方法返回该对象的哈希码值。 5、notify()方法唤醒在此对象监视器上等待的单个线程。 6、notifyAll()方法唤醒在此对象监视器上等待的所有线程。 7、toString()方法 返回该对象的字符串表示。在进行String与其它类型数据的连接操作时,自动调用toString()方法。可以根据需要重写toString()方法。 8、wait()方法 在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。

二、字符串相关类 l String类 charAt(int index) 返回指定索引处的 char 值。 compareTo(String anotherString) 按字典顺序比较两个字符串。compareToIgnoreCase(String str) 按字典顺序比较两个字符串,不考虑大小写。concat(String str) 将指定字符串连接到此字符串的结尾。 endsWith(String suffix) 测试此字符串是否以指定的后缀结束。 equals(Object anObject) 将此字符串与指定的对象比较。 equalsIgnoreCase(String anotherString) 将此 String 与另一个 String 比较,不考虑大小写。 indexOf(int ch) 返回指定字符在此字符串中第一次出现处的索引。 indexOf(String str) 返回第一次出现的指定子字符串在此字符串中的索引。lastIndexOf(int ch) 返回指定字符在此字符串中最后一次出现处的索引。length() 返回此字符串的长度。 replace(char oldChar, char newChar) 返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。 split(String regex) 根据给定正则表达式的匹配拆分此字符串。 startsWith(String prefix) 测试此字符串是否以指定的前缀开始。 substring(int beginIndex) 返回一个新的字符串,它是此字符串的一个子字符串。该子字符串始于指定索引处的字符,一直到此字符串末尾。

java字符串属性入门

1 join() 方法用于把数组中的所有元素放入一个字符串。 元素是通过指定的分隔符进行分隔的。 语法 arrayObject.join(separator ) 参数 描述 separator 可选。指定要使用的分隔符。如果省略该参数,则使用逗号作为分隔符。 返回值 返回一个字符串。该字符串是通过把 arrayObject 的每个元素转换为字符串,然后把这些字符串连接起来,在两个元素之间插入 separator 字符串而生成的。 实例 例子 1 在本例中,我们将创建一个数组,然后把它的所有元素放入一个字符串: 输出: George,John,Thomas 例子 2 在本例中,我们将使用分隔符来分隔数组中的元素:

输出: George.John.Thomas 2 lastIndex 属性用于规定下次匹配的起始位置。 语法 https://www.wendangku.net/doc/fe3762853.html,stIndex 说明 该属性存放一个整数,它声明的是上一次匹配文本之后的第一个字符的位置。 上次匹配的结果是由方法 RegExp.exec() 和 RegExp.test() 找到的,它们都以lastIndex 属性所指的位置作为下次检索的起始点。这样,就可以通过反复调用这两个方法来遍历一个字符串中的所有匹配文本。 该属性是可读可写的。只要目标字符串的下一次搜索开始,就可以对它进行设置。当方法 exec() 或 test() 再也找不到可以匹配的文本时,它们会自动把lastIndex 属性重置为 0。 提示和注释 重要事项:不具有标志 g 和不表示全局模式的 RegExp 对象不能使用 lastIndex 属性。 提示:如果在成功地匹配了某个字符串之后就开始检索另一个新的字符串,需要手动地把这个属性设置为 0。

java程序:String字符串处理算法

public class MyString{ public MyString(){ } public int indexOf(String content,String find){ return indexOf(content,find,0); } public int indexOf(String content,String find,int beginIndex){ char[]ca_content=content.toCharArray(); int len_content=content.length(); int len_find=find.length(); for(int i=beginIndex;i

JAVA字符串转日期或日期转字符串

JAVA字符串转日期或日期转字符串(转) 2010-08-16 16:34:03| 分类:java |字号订阅 JAVA字符串转日期或日期转字符串(转) 文章中,用的API是SimpleDateFormat,它是属于 java.text.SimpleDateFormat,所以请记得import进 来! 用法: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy-MM-dd HH:mm:ss " ); 这一行最重要,它确立了转换的格式,yyyy是完整的公元年,MM是月份,dd是日期,至于HH:mm:ss 就不需要我再解释了吧! PS:为什么有的格式大写,有的格式小写,那是怕避免混淆,例如MM 是月份,mm是分;HH是24小 时制,而hh是12小时制。 1.字符串转日期 2008-07-10 19:20:00 要把它转成日期,可以用 Date date = sdf.parse( " 2008-07-10 19:20:00 " ); 2.日期转字符串 假如把今天的日期转成字符串可用 String str = sdf.format(new Date()); 这个字符串内容的格式类似2008-07-10 19:20:00。 透过这个API我们便可以随心所欲的将日期转成我们想要的字符串格式,例如希望将日期输出成2008 年7月10日,我们可以这么写: SimpleDateFormat sdf = new SimpleDateFormat( " yyyy年MM月dd日 " ); String str = sdf.format(new Date());

实验五:Java语言中的常用类

仲恺农业工程学院实验报告纸 计算科学与工程(院、系)网络工程专业班组Java语言程序设计课 学号姓名实验日期2010/11/19 教师评定 实验五:Java语言中的常用类 一、实验目的 1、掌握Java语言中的常用类。 2、学习用Java语言中的常用类编写程序。 二、实验要求 1、字符串调用public String toUpperCase()方法返回一个字符串,该字符串把当前字符串中的小写字母变成大写字母;字符串调用public String toUpperCase()方法返回一个字符串,该字符串把当前字符串的大写字母变成小写字母。String 类的String toUpperCase()方法返回一个字符串,该字符串是把调用该方法的字符串与参数指定的字符串连接。 2、String类的public charAt(int index)方法可以得到当前字符串index 位置上的一个字符。编写程序使用该方法得到一个字符串中的第一个和最后一个字符。 3、输出某年某月的日历页,通过键盘输入年份和月份。 二、实验程序和结果 1、 public class Stg{ public static void main(String args[]){

String s2=new String("LI ZHI DONG"); String s3=s1.concat(s2); System.out.println("连接后的字符:"+s3); char a[]=s3.toCharArray(); for(int n=0;njava Stg 连接后的字符:wo de ming zi shi LI ZHI DONG 大小写转换后的字符:WO DE MING ZI SHI li zhi dong 或者简单点程序代码: public class Stg{ public static void main(String args[]){

java中String的“==”和equals判断相等性

1. 首先String不属于8种基本数据类型,String是一个对象。 因为对象的默认值是null,所以String的默认值也是null;但它又是一种特殊的对象,有其它对象没有的一些特性。 2. ne w String()和ne w String(“”)都是申明一个新的空字符串,是空串不是null; 3. String str=”kvill”与String str=ne w String (“kvill”)的区别: 在这里,我们不谈堆,也不谈栈,只先简单引入常量池这个简单的概念。 常量池(consta nt pool)指的是在编译期被确定,并被保存在已编译的.class文件中的 一些数据。它包括了关于类、方法、接口等中的常量,也包括字符串常量。 看例1: String s0=”kvill”; String s1=”kvill”; String s2=”kv”+ “ill”; Syste m.out.println( s0==s1 ); Syste m.out.println( s0==s2 ); 结果为: true

true 首先,我们要知道Java会确保一个字符串常量只有一个拷贝。 因为例子中的s0和s1中的”kvill”都是字符串常量,它们在编译期就被确定了,所以s0==s1为true;而”kv”和”ill”也都是字符串常量,当一个字符串由多个字符串常量连接而成时,它自己肯定也是字符串常量,所以s2也同样在编译期就被解析为一个字符串常量,所以s2也是常量池中”kvill”的一个引用。 所以我们得出s0==s1==s2; 用new String() 创建的字符串不是常量,不能在编译期就确定,所以new String() 创建的字符串不放入常量池中,它们有自己的地址空间。 看例2: String s0=”kvill”; String s1=ne w String(”kvill”); String s2=”kv”+ ne w String(“ill”); Syste m.out.println( s0==s1 ); Syste m.out.println( s0==s2 ); Syste m.out.println( s1==s2 );

(完整版)Java常用类

常用类 Object类 它是Java所有类的根类.所以Java的所有对象都拥有Object类的成员. 1.一般方法 boolean equals(Object obj) //本对象与obj对象相同,返回true String toString() //返回本对象的字符串表达形式,默认返回类名称和十六进制数的编码,即:getClass().getName+’@’+Integer.toHexString(hashCode()); 如果要显示自定义的对象,则需要覆盖这个方法。 protected void finalize() throws Throwable //对象销毁时被自动调用, native int hashCode() 返回对象的Hash码,Hash码是表示对象的唯一值,故Hash码相同的对象是同一对象。 2.控制线程的方法 final native void wait() //等待对象 final native void notify() //通知等待队列中的对象进入就绪队列 final native void notifyAll()//通知所有处于等待队列中的对象进入就绪队列 3.关于Object类的几点说明: 3.1. native <方法> 是指用C++语言编写的方法。 3.2.“==”运算符一般用于基本数据类型的比较,如果用于两个引用对象的比较,则 只有当两个引用变量引用同一个对象时,才返回true,否则返回false. String s1=new Strng(“java”); String s2=new Strng(“java”); System.out.pritnln(s1==s2); //显示false 但是,假如不使用new 关键字,创建String 型对象s3,s4,则它们引用的是同一个对象。 String s3=“java”; String s4=“java”;因为没有使用new 关键字,所以s4 引用既存的对象 System.out.pritnln(s3==s4); //显示true, 3.3. 比较对象内容时,使用equals()函数 Object 类的equals()定义 Public boolean equals(Object obj){ return (this==obj); } 由于String 类覆盖了继承自Object类的equals()方法,它比较的是引用对象的内容. 所以,没有覆盖equals()方法的类的对象使用该方法与另一对象进行比较时,永远返 回false; 只是因为此时进行比较调用的是Object的equals方法. 4. Object引用型变量 Object引用型变量可以用来引用所有的对对象. Object[] obs=new Object[3]; obs[0]=new Strng(“12345”);//将String对象赋给obs[0] obs[0]=new Boolean(true); obs[0]=new Integer(100); 5. toString()方法

Java语言中String和StringBuffer的分析比较

[收稿日期] 2012-02-01[作者简介]郑霞(1978-),女,讲师,主要从事统计自然语言处理。 Java 语言中字符串常量和变量的分析与比较 郑 霞,郭 磊 (安阳师范学院计算机与信息工程学院,河南安阳455000) [摘要]字符串是所有编程语言中都经常需要处理的问题之一。通过对Java 语言中两类字符串,即字符串常量 String 和字符串变量StringBuffer 的分析和比较,分析了它们的特点和区别,便于程序员在以后的编程中更有效地使用它 们。 [关键词] String ;StringBuffer ;常量;变量[中图分类号] TP312JA [文献标识码] A [文章编号] 1671-5330(2012)02-0046-030引言 字符串是由零个或多个字符组成的有限序 列。一般记为s =“a 1a 2…a n ” (n >=0)。它是编程语言中表示文本的数据类型,代表具有一定意 义的信息, 现实世界的大部分信息都以字符串的形式表示。对于一种编程语言来说,字符串处理 是许多需要进行的重要任务之一,如用户程序输入信息、 程序向用户显示信息等。所以几乎每一种编程语言都要有专门针对字符串的表示和操作。Java 语言是纯粹的面向对象的语言,所以它的字符串是用对象表示的, Java 语言的字符串分为字符串常量(用String 类的对象表示)和字符串变量(用StringBuffer 类的对象表示),它们都位于java.lang 包中,他们除了能够表示字符串外,还定义了很多专门进行字符串的处理方法。本文主要讨论定义两类字符串的特点和区别。 1 字符串常量String 类 1.1 字符串常量的创建 和创建其它的任一种对象的方式相同,创建String 对象也需要调用它的构造方法来完成,如:String s =new String (“abc ”);也可用另一种直接赋值的方式来创建String 对象,如:String s =“abc ”; 虽然通过以上两种方式都可以创建String 对象,但是二者在创建对象时采用的内存分配方式 是不同的。如果是按照以下调用构造方法的形式来创建String 对象:String s1=new String (“abc ”);String s2=new String (“abc ”);s1和s2的内存分配如图1所示。s1和s2分别占有独立 的内存空间, 利用“==”相比较的话,则s1==s2的结果为false 。但是由于在程序中经常出现 大量String 对象的值相同的情况, 造成内存空间的冗余。为了有效地利用内存, Java 中预留了一块特殊的内存区域,称为String 常量池。当编译器遇到一个String 常量时,先检查常量池中是否存在值相同的String 常量,如果存在,则把该常量的引用指向常量池中的String 常量。下面是利用直接赋值的方式创建字符串的内存分配方式,如图2所示 : 图1 字符串常量创建举例 String 对象被称为字符串常量,这表明一旦 为String 对象赋值,它的值就会保持不变。但是String 引用变量的值却可以改变。如String s =

相关文档
相关文档 最新文档