《Java语言基础3》由会员分享,可在线阅读,更多相关《Java语言基础3(25页珍藏版)》请在金锄头文库上搜索。
1、2017/12/30,iSoftStone Technologies Ltd.,Java语言基础 三,2005 iSoftStone Technologies Ltd. All rights reserved.,2,目标,掌握 String 类和StringBuffer类的基本用法掌握数组的定义和使用方法,2005 iSoftStone Technologies Ltd. All rights reserved.,3,字符串的定义,与C/C+中不同,Java中的字符串是作为String类的对象来处理的。请查看JDK的帮助创建String类的对象:String str1 = “this is a
2、 string”;String str2;Str2 = “this is another string”;,2005 iSoftStone Technologies Ltd. All rights reserved.,4,字符串的使用,String str=“abc”; int i=3; float f=4.5f; char ch=a; boolean b=true; System.out.println(str + i + f + ch + b);,2005 iSoftStone Technologies Ltd. All rights reserved.,5,字符串的一些常用方法,串的拷贝
3、 str2 = str1串的连接 contact()串的比较 equals() 注意不能用“=“判断字符串是否相等在串中取单个字符 charAt() 取串的长度 length()取子串 substring()除去串前后的空格 trim()分隔字符串split(),2005 iSoftStone Technologies Ltd. All rights reserved.,6,String 与 StringBuffer,String用于比较两个字符串、查找和抽取串中的字符或者子串、字符串与其他类型之间的相互转换等StringBuffer类用于内容可以改变的字符串,可以将其他各种类型的数据增加、插
4、入到字符串中,也可以翻转字符串中原来的内容。生成最终想要的字符串,就要用StringBuffer.toString方法将其转换成String类,2005 iSoftStone Technologies Ltd. All rights reserved.,7,String 与 StringBuffer(续),连接字符串()的功能是通过StringBuffer类和它的append方法实现的。=与equlas= 用于比较对象引用是否同一个内存地址Equlas 用于对象的值是否一样,2005 iSoftStone Technologies Ltd. All rights reserved.,8,值类型
5、,Java 方法的参数是简单类型的时候,是按值传递的 public static void change(int i) i = 10 ; System.out.println( chang 方法中 i = + i);public static void main(String args) int i = 1 ; System.out.println( change 以前 i = + i ); change(i); System.out.println( change 以后 i = + i );,2005 iSoftStone Technologies Ltd. All rights reser
6、ved.,9,值类型(续),不难看出,虽然在 change(int i) 方法中改变了传进来的参数的值,但对这个参数源变量本身并没有影响,即对 main(String) 方法里的 i 变量没有影响。那说明,参数类型是简单类型的时候,是按值传递的。以参数形式传递简单类型的变量时,实际上是将参数的值作了一个拷贝传进方法函数的,那么在方法函数里再怎么改变其值,其结果都是只改变了拷贝的值,而不是源值,2005 iSoftStone Technologies Ltd. All rights reserved.,10,什么是引用,Java 是传值还是传引用,问题主要出在对象的传递上,因为 Java 中简单
7、类型没有引用。简单的说,引用其实就像是一个对象的名字或者别名 ,一个对象在内存中会请求一块空间来保存数据,根据对象的大小,它可能需要占用的空间大小也不等。访问对象的时候,我们不会直接是访问对象在内存中的数据,而是通过引用去访问,2005 iSoftStone Technologies Ltd. All rights reserved.,11,什么是引用(续),如果我们定义了不止一个引用指向同一个对象,那么这些引用是不相同的,因为引用也是一种数据类型,需要一定的内存空间来保存。但是它们的值是相同的,都指示同一个对象在内存的中位置。比如 String a = Hello; String b = a
8、;这里,a 和 b 是不同的两个引用,我们使用了两个定义语句来定义它们。但它们的值是一样的,都指向同一个对象 Hello。也许你还觉得不够直观,因为 String 对象的值本身是不可更改的 (像 b = World; b = a; 这种情况不是改变了 World 这一对象的值,而是改变了它的引用 b 的值使之指向了另一个 String 对象 a)。那么我们用 StringBuffer 来举一个例子:,2005 iSoftStone Technologies Ltd. All rights reserved.,12,引用类型,public static void change(StringBuf
9、fer str)str.append( World ! ) ;public static void main(String args) StringBuffer s = new StringBuffer(Hello); change(s); System.out.println(s is: + s);通过 change() 方法,并将 s 作为参数传递了进去。这里 str 是一个引用,这一点是勿庸置疑的。前面提到,引用是一种数据类型,而且不是对象,所以它不可能按引用传递,所以它是按值传递的,它么它的值究竟是什么呢?是对象的地址。,2005 iSoftStone Technologies Ltd
10、. All rights reserved.,13,值类型,引用类型,Java 中,改变参数的值有两种情况:第一种,使用赋值号“=”直接进行赋值使其改变第二种,对于某些对象的引用,通过一定途径对其成员数据进行改变,对于第一种情况,其改变不会影响到方法该方法以外的数据,或者直接说源数据。而第二种方法,则相反,会影响到源数据因为引用指示的对象没有变,对其成员数据进行改变则实质上是改变的该对象,2005 iSoftStone Technologies Ltd. All rights reserved.,14,数组,数 组,2005 iSoftStone Technologies Ltd. All r
11、ights reserved.,15,数组的声明,你可以声明任何类型的数组原始类型或类类型:chars; 或 char sPoint p; /Point是一个自定义的类 建议java程序员用前一种,2005 iSoftStone Technologies Ltd. All rights reserved.,16,创建数组,你可以象创建对象一样,使用关键字 new 创建一个数组。 s = new char 20; p = new Point 100; 可以申明和创建一起写:Char s=new char20;Point p=new Point100;,2005 iSoftStone Techno
12、logies Ltd. All rights reserved.,17,初始化数组,用初始化值创建一个数组,例如:String names = “Georgianna”, “Jen”, “Simon”, ; 其结果与下列代码等同: String names ;/申明数组 names = new String 3;/创建数组 names 0 = “Georgianna”; names 1 = “Jen”; names 2 = “Simon”;/初始化数组,2005 iSoftStone Technologies Ltd. All rights reserved.,18,一维数组的界限,所有数组的
13、下标都从0开始int list =1,2,3;for(int i=0; i list.length; i+) System.out.println(listi); 其中length属性表示数组的长度 数组有length属性 String有length()方法,2005 iSoftStone Technologies Ltd. All rights reserved.,19,二维数组,一个二维数组如下例所示(3 * 5)int twoDim=new int35;另一种方式 :int myArray = new int 3;myArray0 = new int2; myArray00=6; myA
14、rray01=7;myArray1 = new int3; myArray10=9; myArray11=8; myArray12=5;,2005 iSoftStone Technologies Ltd. All rights reserved.,20,多维数组,多维数组,数组的数组int sss = new int234;sss0 = new int24;sss00 = new int2;每个数组有5个整数类型的4个数组的组成 int ss = new int24; / 非法,2005 iSoftStone Technologies Ltd. All rights reserved.,21,使用数组时注意的问题,Java中声明数组时,无论用何种方式定义数组,都不能制定其长度 int a5 = new int5 ; / 非法 int xx32 = 3,2, 1,3, 5,7; / 非法,2005 iSoftStone Technologies Ltd. All rights reserved.,22,数组的复制,不能调整数组的大小可使用相同的引用变量来引用一个全新的数组int elements = new int 6;elements = new int 10; 在这种情况下,第一个数组被有效地丢失,除非对它的其它引用保留在其它地方。,