Java2JAVA语言基础.ppt
1,第2章 JAVA语言基础,标识符、关键字和类型 表达式与程序流控制 数组,2,标识符,标识符包括: 变量名,类名,方法(函数)名 以字母,_,或$开头 大小写敏感,且长度没有限定 如: username user_name _sys_varl $change,3,风格约定: _,$不作为变量名,方法名开头 变量名、方法名首单词小写,其余单词只有 首字母大写 如anyVariableWorld 接口名、类名首单词第一个字母大写。 常量:完全大写 注释:/ 注释一行 /* */ 注释一行或多行 /* 可用javadoc命令转化为HTML文件*/,标识符,4,关键字,* 当前不使用 * 为Java 2 增加的,5,Java 基本数据类型,逻辑型 文字型 整数类型 浮点型,6,逻辑型:boolean adj. 布尔数学体系的 , 取值:true , false 例如:boolean truth n. 事实;真理;实质;诚实 = true;,基本数据类型-逻辑型与文字型,7,文字型:char 、String char: 16位的unicode(国际码)字符。 如,char mychar=Q; unicode字符集是一套字符编码系统,可以支持各类文字的字符,达34168个字符。 定义形式:a; t; u? String 是类,String greeting=“Good Morning! n”;,基本数据类型-文字型,8,整数类型:byte, short, int 和 long,类型 长度 取值范围 byte 8位 -27 27-1 short 16位 -215 215-1 int 32位 -231 231-1 long 64位 -263 263-1,基本数据类型-整数类型,9, Java中缺省整型是 int 可有3种形式:十进制、八进制、十六进制 十进制 八进制 十六进制 int 24 0771 0XAB07 long 24L 0771L 0XAB07L,整型常量,10,浮点型:float 和 double 长度: float : 32位 double: 64位 缺省是 double 类型,如3.14 (double 型) 表达方法: E或e - 科学记数法 6.02e23 F或f - 表示float类型, 6.02e23F D或d - 表示double 型, 2.718D,基本数据类型-浮点型,11,JDK1.6中的枚举类型,public enumn. 枚举,列举型别;电话号码映射 Names Li, Zhang, Wang, Zhao, Chen Names name = Names.Wang;,12,类的初步概念,“日期”类型的两种不同表达: 方式一: int day, month, year; /定义年、月、日 int d1,m1,y1; / 定义一个日期 int d2,m2,y2; /定义另一个日期 方式二: class Date int day; int month; int year; void setDate( int a, int b, int c). Java用class创建新的类型。,13,类的变量的声明与引用,在Java中,一个类的变量声明后,不能直接引用,必须经过实例化: 基本类型声明后,直接开空间。 如: int a; a = 12; 非基本类型不直接开空间,而是开辟引用空间,数据空间 没有开。只有通过实例化,才能给数据开辟空间。,14,类的变量的声明与引用,例: 1 Date today; 2 today = new Date( );,today,15,引用变量之间的赋值,1 Date a, b ; 2 a=new Date( ); 3 b = a ;,0xabcd,0xabcd,16,运算符与表达式,与C不同之处: Java是强类型语言,类型限制比C严格,运算 符的操作对象的类型会受到更多限制。 Java不提供指针运算符,增加了对象操作符 instanceof,字符串运算符+和零填充的右移等。,17,算术运算操作符:+,-,*,/, %, +, - - 关系操作符:, =, , , & , |, (逐位异或), (按位取反) 逻辑操作符:&, |, !, (异或),&&, | 赋值操作符:=, +=, -=, *=, /=, %=,&=, |=, =, =, = 其它操作符: ?: , , . , ( ),(type), new, instanceof,Java操作符类别,18,逻辑操作符与位操作符相同的,根据操作数判定是何种运算符 &, | - 称为不短路与、或; &&,| - 称为短路与、或。,逻辑操作符与位操作符,19,用+ 运算符连接字符串,String salutation = “Dr. ”; String name = “Pete” + “Seymour” ; String title = salutation + name ; 则title 值:Dr. Pete Seymour,20,右移操作符 和 , :带符号右移 1010 2 111010. :无符号右移,以0 填充 1010 2 001010 .,21,Java 强制类型转换,一般形式:(type) expression 例:(float)x/2 对强制类型转换的限制: 整型与浮点型可以相互转换,但基本类型 和数组、对象等复合类型之间不能互相转换。,22,位操作示例,public class BitwiseDemo static final int VISIBLE = 1; static final int DRAGGABLE = 2; static final int SELECTABLE = 4; static final int EDITABLE = 8; public static void main(String args) int flags = 0; flags = flags | VISIBLE; flags = flags | DRAGGABLE; if (flags ,23,flags = flags | EDITABLE; if (flags ,Flags are Visible and Draggable. Flags are now also Editable.,运行结果:,24,程序流控制, while do while for If else switch,25,While语句举例,public class WhileDemo public static void main(String args) String copyFromMe = “Copy this string until you “ + “encounter the letter 'g'.“; StringBuffer copyToMe = new StringBuffer(); int i = 0; char c = copyFromMe.charAt(i); while (c != 'g') copyToMe.append(c); c = copyFromMe.charAt(+i); System.out.println(copyToMe); ,Copy this strin,结果:,26,do-while语句示例,public class DoWhileDemo public static void main(String args) String copyFromMe = “Copy this string until you “ + “encounter the letter 'g'.“; StringBuffer copyToMe = new StringBuffer(); int i = 0; char c = copyFromMe.charAt(i); do copyToMe.append(c); c = copyFromMe.charAt(+i); while (c != 'g'); System.out.println(copyToMe); ,Copy this strin,结果:,27,JDK1.6中for 循环的优化,将一个集合作为一个整体放入for循环中,在for循环中可将集合中的元素进行逐个处理。 String names =“Wang“,“Zhang“,“Li“,“Wu“; for(String option: names) System.out.println(option); ,28,特殊跳转语句, break label 从switch语句、循环语句中跳出。 continuelabel 跳过标号循环体的其余部分,不带label 跳过 最内层循环的剩余语句。 label: statement,29,特殊跳转语句举例,1 Loop: while (true) 2 for( ) 3 switch( ) 4 case -1: 5 case n: 6 break loop ; 7 8 9 10 11 test: for( ) 12 13 while( ) 14 if( ) 15 16 continue test ; 17 18 19 ,/跳出while去11行,/ 跳到11行,30,数组,声明数组 数组的创建与初始化 多维数组 数组拷贝,31,数 组,数组中的元素都是同一种类型。 数组的长度在创建的时候确定,并且在创建后固定不变。 如果要建立存储不同类型数据的集合,或者要求集合的长度可以动态变化,可以使用Collection(集合)类。,32,数组声明,可以声明基本类型和类类型的数组 声明包含两部分:数组类型与数组名称。 格式: C,C+ 标准形式: char s ; Point p ; char s ; Point p ;,33,数组声明,在Java中数组作为类来处理,所以数组 声明并不创建实例对象,而是创建一 个可用来引用该数组的引用。,34,数组的创建与初始化,可以象其它对象一样,使用new来创建,格式: new elementTypearraySize 例: s = new char20; /创建有20个字符的数组 p = new Point100; /创建100个Point的引用数组,35,数组的初始化,数组元素是被初始化的。 字符串 - u0000, null 对象数组 - null 用初始值创建数组 String names = “Jack”, “Wang”, “Lee”; int a = 1, 2, 3; Date d = new Date( ), new Date( ), new Date( ),36,对象数组,除了基本类型以外,还可以创建对象类型的数组。 Point p ; p = new Point100; /创建100个引用 创建100个Point对象: p0 = new Point( ); p1 = new Point( ); ,37,对象数组举例,public class ArrayOfStringsDemo public static void main(String args) String anArray = “String One“, “String Two“, “String Three“ ; for (int i = 0; i anArray.length; i+) System.out.println(anArrayi.toLowerCase(); ,38,多维数组,声明方法 int a ; 或int a; 实例化 a = new int44; /直接为每一维分配内存,生成规则数组 a = new int4 ; / 只有最后维可以不给值,其它都要给,可 /以生成不规则数组 a0 = new int10 ; a1 = new int5; 数组成员变量length - 数组元素个数: a = new int 1012; a.length = 10 ; a0.length = 12 ;,39,多维数组示例,public class ArrayOfArraysDemo2 public static void main(String args) int aMatrix = new int4; /populate matrix for (int i = 0; i aMatrix.length; i+) aMatrixi = new int5; /create sub-array for (int j = 0; j aMatrixi.length; j+) aMatrixij = i + j; /print matrix for (int i = 0; i aMatrix.length; i+) for (int j = 0; j aMatrixi.length; j+) System.out.print(aMatrixij + “ “); System.out.println(); ,40,数组拷贝,数组一旦创建,其大小不可变,但已有的数组变量 可指向全新的数组;该数组原指的内容丢失 int a = new int6; a = new int10 ; / 不必重新声明 a 数组变量之间赋值是引用赋值。 1 int a = new int 6; 2 int b ; 3 b = a ;,41,数组数据的复制,通过拷贝数组的函数。 System.arrayCopy(Object source, int srcIndex, Object dest, int destIndex, int length),数组拷贝,42,数组拷贝示例,public class ArrayCopyDemo public static void main(String args) char copyFrom = 'd', 'e', 'c', 'a', 'f', 'f', 'e', 'i', 'n', 'a', 't', 'e', 'd' ; char copyTo = new char7; System.arraycopy(copyFrom, 2, copyTo, 0, 7); System.out.println(new String(copyTo); ,43,数组拷贝示例,运行结果:,