搜档网
当前位置:搜档网 › Java语言中String和StringBuffer的分析比较

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

Java语言中String和StringBuffer的分析比较
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 =

图2字符串常量池举例

“abc”;s=“abcdef”;首先定义s的初值为“abc”,然后将s赋值为“abcdef”,以上语句的内存分配如图3所示

图3字符串常量举例

1.2String类的常用方法

String类的常用方法有

字符串的比较方法:如equals(),equalsIgno-reCase(),compareTo等。

字符串的查找方法:indexOf(),lastIndexOf 等;

字符串的连接方法:concat();

但是不管什么样的方法,String对象本身的内容并没有改变。如String s=“hello”,

System.out.println(s.concat(“world”));则输出hello world,然后再利用System.out.println (s)输出s的值则仍为hello。

2StringBuffer类

String类提供了许多对字符串进行处理的方法,它适用于字符串内容保持不变的情况,如果程序中字符串的内容不会改变,则使用String对象表示字符串,以提高程序的执行效率。当然也可以修改String对象的内容,但是每次对字符串内容的修改都要创建一个新的String对象,原来的String对象就会被废弃掉,因此会在String常量池中产生大量的被废弃掉的String对象,会大大影响程序的执行性能。

StringBuffer类则专门设计了对字符串内容进行修改的操作,改变后的字符串则仍然存放在原来的内存单元中,而且StringBuffer对象的容量还会随着字符串长度的增加而动态增加,与String 对象相比,如果字符串内容改变了,采用String-Buffer对象比String对象会节省大量的内存空间。如创建StringBuffer对象:

StringBuffer s=new StringBuffer(“abc”);可以通过append()方法增加StringBuffer对象的字符串内容,s.append(“de”);相应的内存分配如图4所示

图4字符串变量举例

除此之外,StringBuffer类中还包含很多修改字符串内容的方法,除了append()方法外,还有如insert()、setCharAt()、deleteCharAt()等,都是在原有StringBuffer对象内容的基础上进行修改,而作为字符串常量的String类而言,没有这些直接修改内容的方法。而对于StringBuffer对象,除了以上对字符串内容进行修改的方法外,还包括String类中的查找方法如indexOf()和lastIndexOf ()方法,截取子串的substring()方法等。String-Buffer是一个具有对象引用传递特点的字符串对象。StringBuffer对象可以调用其方法动态地进行增加、插入、修改和删除操作,且不用像数组那样事先指定大小,从而实现多次插入字符,一次整体取出的效果,因而操作字符串非常灵活方便。一旦通过StringBuffer生成最终想要的字符串,就可调用它的toString方法将其转换为一个String对象。

3String和StringBuffer对象实例

下面给出一个关于String和StringBuffer对象的例子。首先分别产生一个String对象textSring 和StringBuffer对象textBuffer,初始值都为“Ja-va”,然后对textSring执行replace(‘j’,’i’)方法,对textBuffer执行append(“C”)方法,输出的结果是textString保持原来的值不变还是“Java”,而textBuffer的值变成了“JavaC”。原因是字符串常量String对象的值永远保持不变,除非给它重新赋值,使它指向一个新的对象。而字符串变量StringBuffer的值是可以改变的,而且是在原来内存的基础上改变的。运行结果如图5所示

图5实例

public class StringAndStringbuffer

74

第2期郑霞,郭磊:Java语言中字符串常量和变量的分析与比较

static void stringReplace(String text)

text=text.replace('j','i');

static void bufferReplace(StringBuffer text)

text=text.append("C");

public static void main(String args[])

String textString=new String("java");

StringBuffer textBuffer=new StringBuffer("ja-va");

stringReplace(textString);

bufferReplace(textBuffer);

System.out.println("textString="+text-String);

System.out.println("textBuffer="+text-Buffer);

4结论

为了提高程序执行的效率,在Java中提供了字符串常量String和字符串变量StringBuffer来表示字符串。其中字符串常量String的值一经给定就不会再改变,如果要进行查找、比较等操作的话,最好使用String类;但是如果要频繁改变字符串的值的话,则使用StringBuffer效率较高。

[参考文献]

[1]赵卓君.Java程序设计———基础教程[M].北京:清华大学出版社,2010.

The Analysis and Comparison of Java String Constant and Variable

ZHENG Xia,GUO Lei

(Anyang Normal University,School of Computer and Information Engineering,Anyang56600,China)Abstract:String processing is one of important aspects in programming languages.First,this paper analyses and compares string constant and variable of Java Language,and then prefers the character and the difference between them.It’s useful for programmer to use them correctly.

Key words:String;String Buffer;Constant;Variable

[责任编辑:D]

84安阳师范学院学报2012年

java对象转换String类型的三种方法

北大青鸟中关村 java对象转换String类型的三种方法在很多情况下我们都需要将一个对象转换为String类型。一般来说有三种方法可以实现:Object.toString()、(String)Object、String.valueOf(Object)。下面对这三种方法一一分析 一、采用Object.toString() toString方法是https://www.sodocs.net/doc/2d16456457.html,ng.Object对象的一个public方法。在java中任何对象都会继承Object 对象,所以一般来说任何对象都可以调用toString这个方法。这是采用该种方法时,常派生类会覆盖Object里的toString()方法。 但是在使用该方法时要注意,必须保证Object不是null值,否则将抛出NullPointerException 异常。 二、采用(String)Object 该方法是一个标准的类型转换的方法,可以将Object转换为String。但是在使用该方法是要注意的是需要转换的类型必须是能够转换为String的,否则会出现CalssCastException异常错误。 代码代码如下: Object o = new Integer(100); String string = (String)o; 这段程序代码会出现https://www.sodocs.net/doc/2d16456457.html,ng.ClassCastException: https://www.sodocs.net/doc/2d16456457.html,ng.Integer cannot be cast to https://www.sodocs.net/doc/2d16456457.html,ng.String。因为将Integer类型强制转换为String类型,无法通过。 三、String.valueOf(Object) 上面我们使用Object.toString()方法时需要担心null问题。但是使用该方法无需担心null值问题。因为在使用String.valueOf(Object)时,它会判断Object是否为空值,如果是,则返回null。下面为String.valueOf(Object)的源码: 代码代码如下: public static String valueOf(Object obj) { return (obj == null) ? "null" : obj.toString(); } 从上面我们可以看出两点:一是不需要担心null问题。二是它是以toString()方法为基础的。但是一定要注意:当object为null时,String.valueOf(object)的值是字符串对象:"null",而不是null!!!

Java语言的特点和实现机制

Java语言的特点和实现机制 (总分:30.00,做题时间:90分钟) 一、{{B}}选择题{{/B}}(总题数:11,分数:22.00) 1.在Java语言中有多种实现的机制,下列______技术属于垃圾回收机制。 (分数:2.00) A.字节编译 B.内存跟踪√ C.语法检查 D.堆栈上/下溢检查 解析: 2.下列______不属于面向对象程序设计的基本要素。 (分数:2.00) A.类 B.方法 C.对象 D.安全√ 解析: 3.保证Java语言可移植性的特征是______。 (分数:2.00) A.面向对象 B.安全性 C.分布式计算 D.可跨平台√ 解析: 4.下列描述中不正确的一项是______。 (分数:2.00) A.C抖不是纯面向对象的,它兼容C语言 B.Java是纯面向对象语言,不兼容以往的任何语言 C.在Java语言中,使用对象时必须先声明 D.Java语言和C++一样有指针√ 解析: 5.下列选项中,不是Java语言特点的是______。 (分数:2.00) A.可移植性 B.面向对象 C.单线程√ D.体系结构中立 解析: 6.关于Java中的指针,下列说法正确的是______。 (分数:2.00) A.Java摒弃了指针√ B.Java摒弃了指针和数组 C.新版本Java中会有指针 D.Java保留了指针 解析: 7.Java语言具有许多优点和特点,下列选项中______是通过Java虚拟机实现的特点。(分数:2.00)

A.分布式 B.多线程 C.安全性 D.可移植√ 解析: 8.下列______不是面向对象程序设计方法的特点。 (分数:2.00) A.继承 B.抽象 C.多态 D.结构化√ 解析: 9.关于Java语言的内存回收机制,下列选项中正确的一项是______。 (分数:2.00) A.Java程序允许用户使用指针来释放内存 B.Java程序要求用户必须手工创建一个线程来释放内存 C.内存回收线程负责释放无用内存√ D.内存回收线程不能释放内存对象 解析: 10.下列关于Java语言和C++语言之间差别的描述中,不正确的一项是______。(分数:2.00) A.Java虽然提供了安全机制,但是还是没有C++安全√ B.Java的内存管理基于C++的内存管理 C.Java没有指针,但是C++的指针最灵活 D.Java没有全局变量,但是C++有全局变量 解析: 11.Java语言属于______。 (分数:2.00) A.面向过程的语言 B.面向对象的语言√ C.面向机器的语言 D.面向操作系统的语言 解析: 二、{{B}}填空题{{/B}}(总题数:4,分数:8.00) 12.Java编译器产生的文件扩展名是 1。 (分数:2.00) 填空项1:__________________ (正确答案:.class) 解析: 13.运行字节码的三个步骤是 1、校验代码、执行代码。 (分数:2.00) 填空项1:__________________ (正确答案:类的装入) 解析: 14.Java程序解释执行过程中代码的装入是由 1完成。 (分数:2.00) 填空项1:__________________ (正确答案:类装载器) 解析: 15.在Java语言的体系结构中,JVM的上层是______和______,它们都具有扩展性。(分数:2.00) 填空项1:__________________ (正确答案:Java基本类库基本API)

java中String类型转换方法

java中String类型转换方法 integer to String : int i = 42; String str = Integer.toString(i); or String str = "" + i double to String : String str = Double.toString(i); long to String : String str = Long.toString(l); float to String : String str = Float.toString(f); String to integer : str = "25"; int i = Integer.valueOf(str).intValue(); or int i = Integer.parseInt(str); String to double : double d = Double.valueOf(str).doubleValue(); String to long : long l = Long.valueOf(str).longValue(); or

long l = Long.parseLong(str); String to float : float f = Float.valueOf(str).floatValue(); decimal to binary : int i = 42; String binstr = Integer.toBinaryString(i); decimal to hexadecimal : int i = 42; String hexstr = Integer.toString(i, 16); or String hexstr = Integer.toHexString(i); hexadecimal (String) to integer : int i = Integer.valueOf("B8DA3", 16).intValue(); or int i = Integer.parseInt("B8DA3", 16); ASCII code to i = 64; String aChar = new Character((char)i).toString(); integer to ASCII code c = 'A'; int i = (int) c; // i will have the value 65 decimal To extract Ascii codes from a test = "ABCD"; for ( int i = 0; i < test.length(); ++i ) { char c = test.charAt( i ); int i = (int) c; System.out.println(i); }

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中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中常用的一些方法

java中常用的一些方法 字符串 1、获取字符串的长度 length() 2 、判断字符串的前缀或后缀与已知字符串是否相同 前缀startsWith(String s) 后缀endsWith(String s) 3、比较两个字符串 equals(String s) 4、把字符串转化为相应的数值 int型Integer.parseInt(字符串) long型Long.parseLong(字符串) float型Folat.valueOf(字符串).floatValue() double型Double.valueOf(字符串).doubleValue() 4、将数值转化为字符串 valueOf(数值) 5、字符串检索 indexOf(Srting s) 从头开始检索 indexOf(String s ,int startpoint) 从startpoint处开始检索 如果没有检索到,将返回-1 6、得到字符串的子字符串 substring(int startpoint) 从startpoint处开始获取 substring(int start,int end) 从start到end中间的字符 7、替换字符串中的字符,去掉字符串前后空格 replace(char old,char new) 用new替换old trim() 8、分析字符串 StringTokenizer(String s) 构造一个分析器,使用默认分隔字符(空格,换行,回车,Tab,进纸符)StringTokenizer(String s,String delim) delim是自己定义的分隔符

nextToken() 逐个获取字符串中的语言符号 boolean hasMoreTokens() 只要字符串还有语言符号将返回true,否则返回false countTokens() 得到一共有多少个语言符号 文本框和文本区 1、文本框 TextField() 构造文本框,一个字符长 TextField(int x) 构造文本框,x个字符长 TextField(String s) 构造文本框,显示s setText(String s) 设置文本为s getText() 获取文本 setEchoChar(char c) 设置显示字符为c setEditable(boolean) 设置文本框是否可以被修改 addActionListener() 添加监视器 removeActionListener() 移去监视器 2、文本区 TextArea() 构造文本区 TextArea(String s) 构造文本区,显示s TextArea(String s,int x,int y) 构造文本区,x行,y列,显示s TextArea(int x,int y) 构造文本区,x行,y列 TextArea(String s,int x,ing y,int scrollbar) scrollbar的值是: TextArea.SCROLLBARS_BOTH TextArea.SCROLLBARS_VERTICAL_ONLY TextArea.SCROLLBARS_HORIZONTAL_ONLY TextArea.SCROLLBARS_NONE setText(String s) 设置文本为s

java语言特点

java语言特点: 1、简单 2、面向对象 3、分布性 4、可移植行 5、解释性语言 6、安全性 7、健壮性 8、多线程 9、高性能 10、动态 package demo; 包包名 public class Test 公共的类类名 public static void main(String[] args) 公共的静态的无返回值方法名参数类型参数名称 System.out.print(“1”);输出语句 System.out.println(“2”);输出语句换行 import java.util.Scanner; Scanner sc=new Scanner(System.in);创建输入对象 int i=sc.nextInt();获得输入的值 nextDouble(),next(),nextByte()... hasNextInt();判断输入的是否是int类型数字,是返回true 不是返回false // 小类型数据转到大类型,自动类型转换 // 大类型转小类型,强制类型转换 八大基本数据类型 byte short int long float double char boolean 所占字节 1 2 4 8 4 8 2 1 (在内存的存储空间) 二进制位数8 16 32 64 32 64 16 8 默认值: 分支语句 if(条件1){

执行代码1 }else if(条件2){ 执行代码2 }else{ 条件1和条件2都不满足就执行此处代码 } String a="y""y".equals(a); 两个String类型值对比 final 最终的常量职能赋值一次,之后不可更改 static final int PA = 300;// 全局常量 final double PI=3.14;//局部常量量不需要static static int a = 10;// 全局变量 全局变量(成员变量)整个类中有效 局部变量方法体内有效 // 怎么创建类:1、创建类名2、创建属性3、创建方法?// 定义属性:类型属性名称 // 自定义方法:public void add(int a,int b){} // 设置属性:School s=new School(); https://www.sodocs.net/doc/2d16456457.html,="南大" // 调用方法: https://www.sodocs.net/doc/2d16456457.html,(); // static修饰的方法可以直接用类名.方法名()调用 // 无返回值的方法用void修饰,不需要return // 有返回值的方法需要用return int[] a = new int[5];// 声明数组,并给定数组长度 int[] b = new int[] { 1, 2, 3 };// 声明数组并给数组赋值 int[] c = { 1, 2, 3 };// 直接给数组赋值 int[] arr = { 2, 5, 77, 99, 30, 58, 23 }; // 只要输出数组中的最大值 int max = arr[0];// 打擂台算法 for (int i = 1; i < arr.length; i++) { if (max < arr[i]) { max = arr[i]; } } import java.util.Arrays; Arrays.sort(int[] a);// 数组排序方法,升序

Java API----String类的方法

//===============API的使用步骤=================== 1:打开API帮助手册 2:显示--->索引-->输入要查的API 3:找到你要使用的方法 //---------------------------- 1:导包//https://www.sodocs.net/doc/2d16456457.html,ng.xxx;不需要导包 2:创建类的对象 3:调用方法 //String类: //构造方法 public String(String original) public String(char[] value) public String(char[] value,int offset,int count) //直接赋值也可以是一个对象 //注意:字符串是一种比较特殊的引用数据类型,直接输出字符串对象输出的是该对象中的数据。

//String的特点 //通过构造方法创建字符串对象 String s = new String(“hello”); //直接赋值创建字符串对象 String s = “hello”; //区别是什么? //面试题: String str = new String("helloworld"); //创建两个对象,一个在堆中,一个在常量池中String str2 = "helloworld"; //创建一个对象,在常量池中 //常用方法 //判断功能方法 boolean equals(Object obj)//比较字符串的内容是否相同 boolean equalsIgnoreCase(String str)//比较字符串的内容是否相同,忽略大小写boolean startsWith(String str)//判断字符串对象是否以指定的str开头 boolean endsWith(String str)//判断字符串对象是否以指定的str结尾

1 Java语言概述答案

第1章 Java语言概述 一、判断题 1.Java语言是一种解释执行的语言,这个特点是Java语言的一个缺点。(F)2.Java源程序的文件名一定要与文件中某个类的名称一致。(T) 3.Java语言采用面向对象的思想编程,具有跨平台、分布式、多线程等优点。(T) 4.Java中的标识符和关键字都是区分大小写的,如果把声明类的class写成Class或者CLASS,编译会出错。(T) 5.Java源程序编写好之后,以文件的形式保存在硬盘或U盘上,源文件的名字可以随便取,它不一定与程序的主类名一致。(F) 6.在JDK命令行开发工具中,用编译程序javac.exe编译生成的文件是二进制可执行文件。(F) 7.Java程序可以分为Java Application和Java Applet两类。(T) 8.Java虚拟机可以在Microsoft Windows系列、Linux、UNIX、Mac OS等操作系统下执行Java字节码程序。(T) 9.javac是Java编译器,用来将Java源程序编译成Java字节码的程序。字节码文件名和源文件名相同,扩展名是class。(T) 10.appletviewer是Java小应用程序(Applet)浏览器,可以执行HTML文件 中的JavaApplet。它是个模拟浏览器,可以显示Applet的运行结果。(T) 二、选择题 1.Java工具JDK中用来运行Applet程序的命令是(D)。 A.java B.javac C.applet D.appletviewer 2.列说法不正确的是(B)。 A.一个Java源程序经过编译后,得到的文件扩展名一定是class B.一个Java源程序编译通过后,得到的结果文件数也只有一个 C.一个Java源程序编译通过后,得到的结果文件数可能有多个 D.一个Java源程序编译通过后,不一定能用Java解释器执行 3.编译Ja源程序文件将产生相应的字节码文件,这些字节码文件的扩展名为(B)。 A.java B.class C.html D.exe 4.安装JDK时,为了能方便地编译和运行程序,应该设置环境变量变量的名称是(C)。 A.JAVAHOME B.java C.path C.classpath 5.Java编译程序的文件名是(C)。 A.java.exe

Java中string的相关函数

Java中string的相关函数 字串与字元 文字字串是一个相当基本且经常被使用到的资料型态,然而在Java 中字串不象char、int 与float 一样是个基本资料型态,而是使用https://www.sodocs.net/doc/2d16456457.html,ng.String 类别来加以表示,该类别定义了许多有用的方法来操作字串。String 物件是固定不变的(immutable):一旦一个String 物件被建立了,则没有任何方法可以改变它所代表的文字,因此,每个运作字串的方法会传回一个新的String 物件,而所修正过后的字串便是储存在此新物件里。 以下的程式码展示了你可以对字串所执行的运作: // 建立字串 String s = "Now "; // String 物件有个特殊的写法 String t = s + "is the time. "; // 使用+ 运算子来串连字串 String t1 = s + " " + 23.4; // + 将其它值转换为字串 t1 = String.valueOf( 'c '); // 从字元值获得对应的字串 t1 = String.valueOf(42); // 获得整数或其他任何数值的字串版本 t1 = Object.toString(); // 使用toString() 将物件转换为字串 // 字串长度 int len = t.length(); // 字串中的字元数:16 // 字串中的子字串 String sub = t.substring(4); // 传回从char 4 到最后的子字串:"is the time. " sub = t.substring(4, 6); // 传回chars 4 与5:"is " sub = t.substring(0, 3); // 传回chars 0 到2:"Now " sub = t.substring(x, y); // 传回从位置x 到y-1 间的子字串 int numchars = sub.length(); // 子字串的长度永远是(y-x) // 从一个字串中撷取(extract)出字元 char c = t.charAt(2); // 取得t 的第三个字元:w char[] ca = t.toCharArray(); // 将字串转换为一个字元阵列 t.getChars(0, 3, ca, 1); // 将t 中的前三个字元放到ca[1] 到ca[3] 中 // 大小写转换 String caps = t.toUpperCase(); // 转换为大写 String lower = t.toLowerCase(); // 转换为小写 // 字串比较 boolean b1 = t.equals( "hello "); // 传回flase:两字串并不相等 boolean b2 = t.equalsIgnoreCase(caps); // 忽略大小写的字串比较:true boolean b3 = t.startsWith( "Now "); // 传回true boolean b4 = t.endsWith( "time. "); // 传回true int r1 = https://www.sodocs.net/doc/2d16456457.html,pareTo( "Pow "); // 传回值<0:s 在"Pow "之前 int r2 = https://www.sodocs.net/doc/2d16456457.html,pareTo( "Now "); // 传回值0:两字串相等

Java语言的特点和优势

第一章 1.Java语言的特点和优势:Java:一种简单的,面向对象的,分布式的,解释型的,强壮的,安全的,体系结构中立的,可移植的,高性能的,多线程的,动态的语言。 2.Java虚拟机及Java的跨平台原理 JVM(虚拟机)的运行过程: 1)代码的装入 2) 代码的校验 3) 代码的执行(有两种方式) (1)即时编译方式(JIT):解释器先将字节码编译成机器码,然后再执行该机器码。 (2)解释执行方式:解释器通过每次解释并执行一小段代码来完成Java字节码的所有操作。 3、Windows下JDK的安装: 安装目录: bin目录中常用命令介绍 -javac.exe:Java源文件编译工具 Javac Hello。Java -java.exe:Java字节码解释程序 Java Hello 4、Path设置 C:\Java\jdk1.6.0_14\lib\tools.jar; C:\Java\jdk1.6.0_14\lib/dt.jar; 5、Classpath设置 classpath=.;c:\myjava; 6、用记事本编写java程序源代码 public class HelloWorld { public static void main(String[] args) { System.out.println(“Hello World!”); } } 7、Applet没有main()方法作为Java解释器的入口,我们必须编写HTML文件,将Applet 嵌入其中,然后用支持java的浏览器或者appletviewer来运行。 第二章 1、Java是严格区分大小写的 例:不能将class写成Class。Boy和boy是不同的标识符。 Java是一种自由格式的语言 程序代码分为结构定义语句和功能执行语句。 功能执行语句的最后必须用分号(;)结束。 一条语句可以写在若干行上。可以任意编排。 单词、字符串不能分开写在两行上,注意中英文标点 2、Java中的标识符 标识符是用来标识类、变量名、方法名等的有效字符序列。 -凡是自己可以起名字的地方都叫标识符,都遵守标识符的命名规则。 Java标识符命名规则 ?-标识符由字母、数字、下划线“_”和美元符“$”组成。 ?-标识符应以字母、下划线“_”和美元符“$”开头。 ?-Java标识符对大小写敏感,长度无限制。 ?-Java标识符取名应做到“见名知意”,且不能与Java语言的关键字重名。不能以数字开头 3、Java中的标识符 Java约定: ―类名的首字母大写。 ―变量名和方法名的首字母小写。 ―常量名全部字母大写。 ―运用驼峰标识。

Java String类的常用方法

6.2 1 String类的常用方法 程序模板 按模板要求,将【代码1】~【代码9】替换为Java程序代码。 StringExample.java class StringExample { public static void main(String args[ ]) { String s1=new String("you are a student"), s2=new String("how are you"); if (【代码1】) // 判断s1与s2是否相同 { System.out.println("s1与s2相同"); } else { System.out.println("s1与s2不相同"); } String s3=new String("22030219851022024"); if (【代码2】) // 判断s3的前缀是否是“220302” { System.out.println("吉林省的身份证"); } String s4=new String("你"), s5=new String("我"); if(【代码3】) // 按着字典序s4大于s5的表达式 { System.out.println("按字典序s4大于s5"); } else { System.out.println("按字典序s4小于s5"); } int position=0; String path="c:\\java\\jsp\\A.java"; position=【代码5】// 获取path中最后出现目录分隔符号的位置 System.out.println("c:\\java\\jsp\\A.java中最后出现\\的位置:"+position); String fileName=【代码6】// 获取path中“A.java”子字符串 System.out.println("c:\\java\\jsp\\A.java中含有的文件名:"+fileName);

java中String的常用方法

java中String的常用方法 1、length()字符串的长度 例:char chars[]={'a','b'.'c'}; String s=new String(chars); int len=s.length(); 2、charAt()截取一个字符 例:char ch; ch="abc".charAt(1); 返回'b' 3、 getChars()截取多个字符 void getChars(int sourceStart,int sourceEnd,char target[],int targetStart) sourceStart指定了子串开始字符的下标,sourceEnd指定了子串结束后的下一个字符的下标。因此,子串包含从sourceStart到sourceEnd-1的字符。接收字符的数组由target指定,target中开始复制子串的下标值是targetStart。 例:String s="this is a demo of the getChars method."; char buf[]=new char[20]; s.getChars(10,14,buf,0); 4、getBytes()

替代getChars()的一种方法是将字符存储在字节数组中,该方法即getBytes()。 5、toCharArray() 6、equals()和equalsIgnoreCase() 比较两个字符串 7、regionMatches()用于比较一个字符串中特定区域与另一特定区域,它有一个重载的形式允许在比较中忽略大小写。 boolean regionMatches(int startIndex,String str2,int str2StartIndex,int numChars) boolean regionMatches(boolean ignoreCase,int startIndex,String str2,int str2StartIndex,int numChars) 8、startsWith()和endsWith()startsWith()方法决定是否以特定字符串开始,endWith()方法决定是否以特定字符串结束 9、equals()和== equals()方法比较字符串对象中的字符,==运算符比较两个对象是否引用同一实例。 例:String s1="Hello"; String s2=new String(s1);

Java语言程序设计 及 试题答案

Java语言程序设计及试题答案 一、单选题(共20分,每小题1分) 1、下面哪一个不是java语言的特点()。 (A)面向对象(B)安全性高 (C)与平台无关(D)复杂多变 2、下面的哪一个标识符是合法可用的()。 (A)2abcd (B)int (C)var# (D)abcd123 3、在基本数据类型中,整型(int)位长为()。 (A)8 (B)16 (C)32 (D)64 4、Java中的所有对象都是在运行时动态创建的,创建新对象可用的关键字为()。(A)new (B)string (C)byte (D)true 5、继承是指新的类获得已有类的属性和行为,称新类为已有类的()。 (A)子类(B)父类(C)对象(D)实体 6、读下面的程序: public _______clock { int hour; int minute; int second; public void settime (int newh, int newm,int news) {hour=newh; minute=newm; second=news; } } 划线位置应选择的关键字为()。 (A)new (B)class (C)system (D)out 7、读下面的三个程序段: public class Circle { int radius; } public class Rectangle{ double width=10.128; double height=5.1245; } public (7)ShaperTester { public static void (8)(String args[]){ Circle x; Rectangle y; x=(9)Circle(); y=(9)Rectangle(); System.out.println(x+””+y); }

Java中String的用法总结

构造方法: String() 初始化一个新创建的String 对象,它表示一个空字符序列。 String(byte[] bytes) 构造一个新的String,方法是使用平台的默认字符集解码字节的指定数组。String(byte[] bytes, int offset, int length) 构造一个新的String,方法是使用指定的字符集解码字节的指定子数组。String(byte[] bytes, int offset, int length, String charsetName) 构造一个新的String,方法是使用指定的字符集解码字节的指定子数组。String(byte[] bytes, String charsetName) 构造一个新的String,方法是使用指定的字符集解码指定的字节数组。 String(char[] value) 分配一个新的String,它表示当前字符数组参数中包含的字符序列。 String(char[] value, int offset, int count) 分配一个新的String,它包含来自该字符数组参数的一个子数组的字符。String(int[] codePoints, int offset, int count) 分配一个新的String,它包含该Unicode 代码点数组参数的一个子数组的字符。 String(String original) 初始化一个新创建的String 对象,表示一个与该参数相同的字符序列;换句话说,新创建的字符串是该参数字符串的一个副本。 String(StringBuffer buffer) 分配一个新的字符串,它包含当前包含在字符串缓冲区参数中的字符序列。String(StringBuilder builder) 分配一个新的字符串,它包含当前包含在字符串生成器参数中的字符序列 方法总结: char charAt(int index) 返回指定索引处的char 值。 int codePointAt(int index) 返回指定索引处的字符(Unicode 代码点)。 int codePointBefore(int index) 返回指定索引之前的字符(Unicode 代码点)。 int codePointCount(int beginIndex, int endIndex) 返回此String 的指定文本范围中的Unicode 代码点数。 int compareT o(String anotherString) 按字典顺序比较两个字符串(区分大小写)。 int compareT oIgnoreCase(String str) 不考虑大小写,按字典顺序比较两个字符串。 String concat(String str) 将指定字符串联到此字符串的结尾。 boolean contains(CharSequence s) 当且仅当此字符串包含char 值的指定序列时,才返回true。 boolean contentEquals(CharSequence cs) 当且仅当此String 表示与指定序列相同的char 值时,才返回true。

Java语言程序设计(一)复习资料--Java简答题

1、简述java语言的特点? 1.2 Java语言是目前使用最为广泛的网络编程语言之一 (1分) 具有面向对象 (1分) 与平台无关性 (1分) 多线程性 (1分) 动态性等特点 (1分) 2、简述Java程序的开发过程? 1.3 (1)使用一个文字编辑器,编写源文件。(1分) (2)使用java编译器,编译源文件得到字节码文件。(2分) (3)运行java程序,分两种java应用程序必须通过java解释器来解释执行,java小应用程序必须使用解释器和浏览器运行程序。(2分) 3、 java源文件的命名规则是什么? 1.3 如果源文件中有多个类,那么只能有一个类是public类(1分) 如果有一个类是public类,源文件的名字必须与这个类的名字完全相同,扩展名是java (2分) 如果源文件没有public类,源文件的名字只要和某个类的名字相同,并且扩展名是java (2分) 4、怎样区分应用程序和小应用程序? 1.4 一个java应用程序必须且只有一个类含有main方法,这个类称为应用程序的主类,其main方法必须被说明为public static void (2.5分) 一个Java Applet小应用程序不再需要main方法,但必须有一个类扩展了Applet类,即它是Applet类的主类。(2.5分) 5、 Java中共有哪些基本数据类型? 2.2 基本类型共有8种,分四类分别是(1分) 逻辑型(1分) 字符型(1分) 整型(1分) 浮点型(1分) 6、 Java中数据类型分别用什么符号来表示的? 2.2 逻辑型用boolean 表示(1分) 字符型用char表示(1分) 整型共有4种分别是 byte、short、long、int (2分) 浮点型共两种float和double (1分) 7、简答标示符的概念及定义原则? 2.1 标示符是用来标识类名、变量名、方法名、类型名等有效字符序

java语言主要有以下特点

1.1java语言主要有以下特点:1.强类型。 2.编译和解释:java语言是一种高级编程语言,用 java语言编写的源程序在计算机上运行需经过编译和解释执行两个严格区分的阶段。3. 自动无用内存回收功能。4.面向对象。5.与平台无关。6.安全性。7.分布式计算。8.多线程。 1.2Java程序的执行过程:Java的编译程序先将java源程序翻译成与机器无关的字节码 (bytecode),运行时,java的运行系统装载和链接需要执行的类,并做必要的优化后,解释执行字节码程序。 1.3Java程序的跨平台主要是指字节码文件可以在任何具有Java虚拟机的计算机或者电子设 备上运行。 1.4这两种程序的主要区别是:小应用程序只能在与java兼容的容器中运行,可以嵌入在 HTML网页内,在网络上发布,当网页被浏览时,在浏览器中运行。小应用程序的运行还受到严格的安全限制,例如,它不能访问用户计算机上的文件。Java应用程序没有这些限制,也不支持网页嵌入和下载运行。java小应用程序和应用程序在代码编写上也有很大的差异。一个小应用程序必须定义成一个Applet类的子类,应用程序可以是Applet 类的子类,也可以不是。应用程序必须在一个类中定义一个main()方法,该方法代表应用程序的入口。而小应用程序不必定义main()方法,它的执行由Applet类中定义的多个方法控制。 1.5javac命令编译Java程序,java命令执行Java程序 4、合法标识符:Applet ,miles, Test,apps、x、y 、$4、radius;java关键字:class、public、 int 5、符号常量的好处主要在于两个方面: 一方面,标识往往有一定的含义,所以符号常量比字面常量含义更清楚; 二方面:修改符号常量值比逐个修改字面常量的值要方便得多,也因此而减少了同一常量其值不一致的机会。 值为20的int型常量:final int SIZE =20;

相关主题