JAVA开发与应用字符串与数组

上传人:宝路 文档编号:48004577 上传时间:2018-07-08 格式:PPT 页数:48 大小:231.28KB
返回 下载 相关 举报
JAVA开发与应用字符串与数组_第1页
第1页 / 共48页
JAVA开发与应用字符串与数组_第2页
第2页 / 共48页
JAVA开发与应用字符串与数组_第3页
第3页 / 共48页
JAVA开发与应用字符串与数组_第4页
第4页 / 共48页
JAVA开发与应用字符串与数组_第5页
第5页 / 共48页
点击查看更多>>
资源描述

《JAVA开发与应用字符串与数组》由会员分享,可在线阅读,更多相关《JAVA开发与应用字符串与数组(48页珍藏版)》请在金锄头文库上搜索。

1、Java中的字符串一、字符串的表示Java中的字符串类 String和StringBuffer String的字符串的内容是不能改变的 StringBuffer的字符串的内容是可以改变的1字符串常量字符串常量是用双引号括住的一串字符。“Hello World!“2下面用不同方法生成字符串“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;String s3=new String(ascii1

2、,0);String 类的定义和实例的生成 例: String str;str=“this is a string” 或: String str1=new String(“hello”); 或: String str2=“aaaa”;String类与其它类型的转换例1:将实型数转换成字符串System.out.println(String.valueOf(Math.PI);String类的比较 有两个字符串str1,str2 str1=str2为真; 是指两个引用指向同一个地 址 str1.equals(str2)为真,是指两个字符串内容 相等例:s1=“abc”;s2=“abc”;s1=s2

3、; 真?假?s1.equals(s2); 真?假?字符串“+”操作运算符+可用来实现字符串的连接:String s = “He is “+age+“ years old.“;其他类型的数据与字符串进行“+“运算时, 将自动转换成字符串。具体过程如下:String s=new StringBuffer(“he is“).append(age).append(“years old“).toString();注意:除了对运算符“+“进行了重载外, java不支持其它运算符的重载。3用StringBuffer表示字符串StringBuffer的字符串的内容是可以改变的创建StringBuffer对象S

4、tringBuffer( ); /*分配16个字符的缓冲区 */StringBuffer( int len ); /*分配len个字符的 缓冲区*/StringBuffer( String s ); /*除了按照s的大 小分配空间外,再分配16个字符的缓冲区*/StringBuffer str=new Stringbuffer(“hello”);获取StringBuffer对象的length()信息int len=str.length();例:StringBuffer sb=new StringBuffer(“Drink Java!”);sb.insert(6,”Hot ”);System.o

5、ut.println(sb.toString();Drink Hot Java!System.out.println 接受的是String类思考:String s=“abc”;s=“abcd”String 类型的值是常量,值不能改变, 为什么可以重新赋值呢?数组目 标 - 解释为什么数组的元素需初始化- 给出数组定义并初始化数组元素- 确定一个数组中元素的数量- 创建二维数组- 声明并创建数组- 编写从一个数组类型到另一个数组类型数 组值的拷贝代码数组的特征: 有序、具有相同类型、通过数 组名和下标确定数组中的元素。一、 一维数组 1 一维数组的定义type arrayName ;类型(typ

6、e)可以为Java中任意的数据类型, 包括简单类型和复合类型。例如:int intArray ;int intArray;Date dateArray;- 为一个引用创建空间:声明不能创建 对象本身,而创建的是一个引用,该引用可 被用来引用数组。- 注意:int intArray ;声明数组 时,中括号内没有数值。- 数组是一个对象,而不是为原始类型 储备的存储器。数组元素使用的实际存储器 可由new语句或数组初始化软件动态分配。 二、 创建数组使用关键字new 创建一个数组对象: int a=new int8; 等同于: int a; a=new int8;例:p = new Point 1

7、00;p0 = new Point();p1 = new Point();例:一条声明语句中创建多个数组:String s1=new String3,s2=new String2; 用来指示单个数组元素的下标必须总是从 0开始,并保持在合法范围之内大于0或等 于0并小于数组长度。三、一维数组的初始化 静态初始化int intArray=1,2,3,4;String stringArray=“abc“, “How“, “you“; 动态初始化 1)简单类型的数组说明:(即数组元素为简单数据类型的数组)int intArray; intArray = new int5;注意没有2)复合类型的数组(

8、也可称为对象数组)String stringArray ;String stringArray = new String3;/*为数组 中每个元素开辟引用空间*/stringArray0= new String(“How“);/为第一 个数组元素开辟空间 stringArray1= new String(“are“);/为第二个 数组元素开辟空间stringArray2= new String(“you“);/ 为第三 个数组元素开辟空间数组的内存分配图基本数据类型一维数组内存分配栈内存堆内存numc0 0 00088:44000088:4400new int3产 生的对象数组的内存分配图基本

9、数据类型一维数组内存分配栈内存堆内存numc0 0 0null0088:4400new int3产 生的对象num=null;数组内存分配例子: Class Student int num; String name; Student(int num,String name) this.num=num; this.name=name; public String toString() return “number=“+num+“,“+“name=“+name; 对象数组的内存分配栈内存堆内存studentsnullStudent students;对象数组的内存分配堆内存studentsc008

10、8:44000088:4400new students3 产生的对象null nullStudent students;students=new Student3;null栈内存对象数组的内存分配堆内存studentsc0088:44000088:4400new students3 产生的对象null nullStudent students;students=new Student3;students0=new Student(“lisi”,18);student0 标识的 Student对象lisi 180088:46600088:4660栈内存四一维数组元素的引用 数组元素的引用方式为:

11、arrayNameindex index为数组下标,它可以为整型常数或 表达式,下标从0开始。 每个数组都有一个属性length指明它的长 度,例如:intArray.length指明数组intArray 的长度。 问题:intArray的最后一个元素的下标用length怎么表示?元素最大下标为length1public class HelloWorldpublic static void main(String arg) int myArray; myArray=new int10; System.out.println(“index value“); for(int i=0;i 50) y

12、 = 9; z = y + x; / Possible use before initialization Static 怎么用? class Error String mystring=“hello“; public static void main(String args) System.out.println(mystring); 为什么不正确? 因为只有对象的方法可以访问对象的变量。一个对象的方法可以访问对象的数据成 员,尽管不属于方法的局部变量;一个类的方 法只能访问自己的局部变量。在static方法中不能引用非static的成员 方 法和数据成员。关键字static静态方法和静态变

13、量是属于某一个类,而 不属于类的对象。静态方法和静态变量的引用直接通过类名 引用。在静态方法中不能调用非静态的方法和引 用非静态的成员变量。反之,则可以。可以用类的对象obj去调用静态的方法 method(),如:obj.method()。解决的办法: 1)将变量改称类变量 class StaticError static String mystring=“hello“; public static void main(String args) System.out.println(mystring); 2)变为局部变量 class NoStaticError public static vo

14、id main(String args) String mystring=“hello“; System.out.println(mystring); static:1)在变量或方法之前,表明它们是属于类的; 2)静态变量在各实例间共享,如果是public静态变量,则 其它类可以不通过实例化访问它们; 3)静态方法称为类的方法,因此不用实例化即可调用(面 向过程) 补充: 静态存储:这儿的“静态”(Static)是指“位于固定位置”( 尽管也在RAM里)。程序运行期间,静态存储的数据将 随时等候调用。可用static关键字指出一个对象的特定元 素是静态的。但Java对象本身永远都不会置入静态存

15、储空 间。 五、多维数组Java编程语言没有象其它语言那样提供多维 数组。因为一个数组可被声明为具有任何基础类 型,所以你可以创建数组的数组。 1二维数组的定义type arrayName ;type arrayName;2二维数组的初始化 静态初始化int intArray =1,2,2,3,3,4,5;Java语言中,由于把二维数组看作是数组的数 组,数组空间不是连续分配的,所以不要求二维数 组每一维的大小相同。 动态初始化1) 直接为每一维分配空间,格式如下: arrayName = new typearrayLength1arrayLength2;例:int a = new int23;2) 从最高维开始,分别为每一维分配空间:arrayName = new typearrayLength1 ;arrayName0 = new typearrayLength20;arr

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号