当前位置:首页 >> 英语 >> 03.language

03.language


Java程序设计

2014春季 彭启民 iscasj@gmail.com

Java语言基础

关键字与保留字
? ?
?

正确识别java语言的关键字(keyword)和保留字 (reserved word)是十分重要的。 Java的关键字对java的编译器有特殊的意义,用 来表示一种数据类型,或者表示程序的结构等。 保留字在当前版本没有启用,但在以后的升级版 本中有可能启用。

关键字
?
?

目前版本的Java(JDK 7.0)中有50个是关键字
?

50个关键字中有两个被保留了:goto和const。

Java 关键字列表 (依字母排序): abstract, assert, boolean, break, byte, case, catch, char, class, continue, default, do, double, else, enum, extends, final, finally, float, for, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while, goto, const

?

无sizeof运算符,因为所有数据类型的长度 和表示是固定的,与平台无关,不是象在C 语言中那样数据类型的长度根据不同的平 台而变化。这正是Java语言的一大特点。

保留字
?

Java 保留字列表 (依字母排序)
?

byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto , const, null

?

启用了3个值(true, false, null)
? true、false和null为小写,而不是象在C++语言

中那样为大写。 ? 它们不是关键字,而是文字。

?

标识符
? java中的包、类、方法、参数、变量等的名字 ? 由大小写字母、数字、下划线、美元$组成,

但不能以数字开头。 ? 不能是Java中的关键字。 ? 这里的字母也包括世界上任何国家的“字母表 ”中的字符,比如汉字、日文等。不建议使用 。 ? 例:Inner$1、123、java hello、user_name、 user-name

?

标识符命名习惯
? 类、接口名:每个词的首字母都要大写

? 方法、变量名:首字母要小写,其它单词首字

母要大写 ? 常量:字母全部大写,单词之间用下划线分隔

课后:打开一个java程序,观察其中的标识符命 名,区分类或接口名,变量或方法名。

JAVA的数据类型
?

基本数据类型
? 整数、浮点数等

? 在C语言和C++语言中,对于不同的平台,同一个数据

类型可能分配不同的字节数, Java对每种数据类型都 分配固定长度,因而Java具有平台无关性。
?

如Java中int类型总是32位,而在C语言和C++语言中, 同样是int类型,在PC机中为二字节即16位,而在VAX11中,则为32位,带来可移植性问题。

?

扩展类型/引用数据类型
? 类、数组、接口

Java的基本数据类型
数据类型 byte short int long 大小 8bits 16 bits 32 bits 64 bits 最小值 –128 –32768 –2147483648 –9223372036854775808 最大值 127 32767 2147483647 9223372036854775807

float
double char boolean

32 bits
64 bits 16 bits n/a

±1.40239846E-45
±4.94065645841246544 E-324 \u0000 true 或false

±3.40282347E+8
±1.797693134862315 70E+308 \uFFFF

整型
?

Java语言提供了多种整型数据类型 ? byte、short、int、long ? 都是定义了一个整数,唯一的区别就是它们能够表示 数据的范围。 能够表示数据的范围越大,占用的内存空间也就越大,因 此,在程序设计中应该选择最合适的类型来定义整数。 ? int是最基本的,占用32位(32位计算机); ? long,长的,也就是比int还长,占用64位; ? short,短的,也就是比int还短,占用16位; ? byte,字节,8位组成一个字节,占8位。

?

?

整型数示例。
public static void main(String [] args) {
int a = 18; //声明并初始化变量 short x,y=10,z=20; //同时声明多个变量 x = (short)( y + z ); //这里为什么要强制转换? System.out.println("x的值是:"+x); long b = 12345678987654321L; /*常量数值 后为何要加 ‘L’字符? */ System.out.println("b的值是:"+b); b = a; //隐式类型转换 byte c; c = (byte)a; //强制类型转换 System.out.println("c的值是:"+c);

public class IntegerDemo {

}

}

浮点型
?

在Java语言中有两种浮点数类型:
? float是单精度型,占用32位内存空间 ? double是双精度型,占用64位内存空间。

?

?

默认情况下Java以double方式处理浮点数,如果 要指定某个浮点数的存储方式是float而不是 double,需要在书写具体数值时追加一个类型标 志符F ,如123.321F。 浮点数
? 浮点数这个名称是相对于定点数而言的,这个点就是

小数点。浮点数就是指小数点可以根据需要改位置。

浮点数示例
public class FloatDemo {
public static void main(String [] args) {
double pi = 3.14159; float f = 2.7F;// 注意这里指定以float类型存储 System.out.println("pi = " + pi); System.out.println("f = " + f); int n = 15, d = 4; f = n/d; //f里面存储的值是什么? System.out.println("f的值是:" + f); int radius = 10; double area = pi * radius * radius; //area里面存储的值是什么? System.out.println("area = " + area);

}

}

程序运行结果: pi = 3.14159 f = 2.7 f的值是: 3.0 area = 314.159

布尔类型
布尔类型(Boolean),用来表示布尔值。布尔变量的取值只可 以是true或者是false。 ? 布尔类型使用示例。 public class BooleanDemo {
?

public static void main(String[] args) {
boolean t = true; System.out.println("t 的值是 " + t); int x = 2; boolean y = (x > 2); System.out.println("y 的值是 " + y);

x=x+1; y=(x>2); System.out.println("在x加1以后,y是"+y);

}

}

程序运行结果: t 的值是 true y 的值是 false 在x加1以后,y是true 说明:在Java中,布尔数据类型不是一个 整型值,不能将一个整数数赋值给布尔 变量。
// y = x; // 不能编译!

char型
?

char型是用来表示字母的,它仅能表示一个单一 的字母。通常char型常量必须使用单引号括起来 ,以与数字区分开来。 char 型变量的实例: char letter=’a’;

?

char型
在Java中,字符数据类型是用16位来表示 的,可以表示Unicode字符集,这个字符集 可以处理国际通用的字符。 ? 一个字符可以被作为无符号的整数值来处 理,因此可以进行一些算术操作,如比较 两个字符值的大小等
?

?

?

在描述一个字符时,我们需要给该字符加上一对 单引号。例如,’A’,这样系统就以字符方式识 别A(注意:如果用双引号,则系统将识别为字 符串String,而不是单个字符)。有些字符是不可 打印的,可以用转义符(\)来表示。 如果需要以Unicode值的方式指定某个特定的字符 可以使用转义符\u加上Unicode字符值。(注:该 字符值以16进制方式来表示)。例如’\uF9A4’。

常用转义字符
转义字符 \t \b \n 含义 tab键 backspace退格键 newline换行

\r
\’

carriage return回车
single quote单引号

\”
\\

double quote 双引号
backslash反斜杠

char数据类型的使用示例。
public class CharDemo { public static void main(String[] args) { char a = 'A'; char b = (char) (a + 1); System.out.println(a + b); System.out.println("a + b is " + a + b); int x = 75; char y = (char) x; char omega = '\u03A9'; System.out.println("y is " + y + " omega is " + omega); } }

程序运行结果: 131 a + b is AB y is K and omega is Ω

数组
?

实例 源程序:arrayTest.java

public class arrayTest {
public static void main(String args[]) {
int intArray[ ]={30,20,10,-10}; String stringArray[ ]={“first”,”second”,”third”}; System.out.println(intArray[0]); System.out.println(intArray[1]); System.out.println(intArray[2]); System.out.println(intArray[3]); System.out.println(stringArray.length);

}

}

?

两个变量声明: int intArray[ ]={30,20,10,-10};
(由四个int型常量:30、20、10、-10组成) String stringArray[ ]={“first”,”second”,”third”}

(由三个String型常量“first”、“second”、“third”组成)

?

数组,是相似元素的有序集合。在一个数组中的所有元素必须是相同 类型的。 定义数组的方式有三种:
? ?

?

零数组:表明数组存在,但没有值。
?

int firstArray[ ]; int secondArray[ ]=new int[5]; 在这里,我们定义了一个数组secondArray,并为其预留了够存放5个int型数 的空间。 int intArray[ ]={30,20,10,-10};

预留空间:为数组预留一些存储空间,但并未马上赋值。
? ?

?

一次性完成定义与赋值:
?

? ?

注意: 在Java语言中,数组一经定义之后就不能够改变其大小,这与其 它程序设计语言中不同,在编程时一定要注意这点。

?

访问数组
? 数组名[下标] System.out.println(intArray[0]); System.out.println(intArray[1]); System.out.println(intArray[2]); System.out.println(intArray[3]);

?

下标从0开始。 intArray[0]就是数组intArray中的 第1个值:30,intArray[1]则是数组intArray的第2 个值……依此类推。

数组的长度是指数组中元素的个数。 ? 求数组长度
?
? arrayTest.java:

System.out.println(stringArray.length);
打印出字符串数组stringArray的长度。根据前面的定 义,可知输出值是3。

字符串
?

?

字符串就是一系列的字符。Java用String类来抽象描述 了所有string对象的特征。注意,Java中的字符串不是 基本数据类型,它以类的形式存在。该类封装了操作 string的一些常用方法,这使得用户在使用字符串对象 时只要调用相应的方法就能轻松实现对字符串的操作 。 在Java中,每一个基本类型和一个字符串连接时都将 自动转换成一个字符串对象。而该对象的内容就是该 变量里面保存的数据。这样做简化了对基本数据类型 的显示和输出。事实上,Java中的任何对象(不仅仅 是内建类型)都可以转换成一个字符串对象,因为 Java 中的每个对象都有一个 toString() 方法,而 toString()方法在输出时会被自动调用.

?
? ?

char型变量只能存储一个字符,因此一般并不常用,而是 使用string型变量来保存字符。 string型,是一种用来存储字符串的数据类型。
可以使用两种方法来定义一个字符串:
?

使用变量定义的方式,例如:

String programOut=”Hello World!!”;
?

使用new操作符,例如:

String programOut=new String(”Hello World!!”);
?

通常使用第1种方法来定义String变量。

?
?

字符串合并: fullName=firstName+” “+lastName; 通过这个表达式,可以完成字符串合并。在本例中,实现了将字符串firstName与 lastName合并,并在中间加上一个空格,形成一个新的字符串fullName。
实例 源程序:test605.java

?

public class test605 {
public static void main(String args[]) {
String firstName = “Mike”; String lastName = “Joeden”; String fullName = firstName+” “+lastName; System.out.println(fullName);

}

}

字符串的演示示例

public class StringDemo {
public static void main(String [] args) {
String first = “zhang”, last = “san”; String name = first + “ “ + last; System.out.println(“Name = “ + name); double pi = 3.14159; String s = “Hello, “ + first; System.out.println(s + pi + 7); System.out.println(pi + 7 + s);

}

}

运行结果如下: Name = zhang san Hello, zheng3.141597 10.14159Hello, zhang
?

?

? ?

求字符串长度: ? 在Java语言中提供了一个方法length()可以满足这个需 求。它在Java API中定义为: public int length() 实例 源程序:test606.java

public class test606 { public static void main(String args[]) { String programOut = “I’m enjoy java program world”; int outlen = programOut.length(); System.out.println(outlen); } }

在字符串中查找: ? 在一个字符串中查找某一个单词,可以使 用Java语言中的一个方法indexOf()来满 足这个需求。它在Java API中的定义是: public int indexOf(String findMe)
?

将返回一个整数值,就是要查找的单词findMe在 字符串中第一个出现的位置。

?

实例

public class test607 {
public static void main(String args[]) {
String programOut = “I’m enjoy java program world”; int index = programOut.indexOf(“java”); System.out.println(index);

}

}

?
?

求子串方法 子串是字符串的一部分。在一些字符串操作的程序中,经 常会需要求一个字符串的子串。可以使用Java语言提供的 求子串方法substring来实现。在Java API中是这样定义它 的:
public String substring(int startIndex) public String substring(int startIndex,endIndex)

?

它是一个可供所有外部类调用的方法(public指定);它 将返回一个字符串(返回值类型是String);这个方法在 调用时必须给参数,参数有两种形式:
? ?

给出开始位置,表示从指定的开始位置开始,直到字符串结束; 给出开始位置和结束位置,表示从指定的开始位置开始,直到结 束位置。

实例 public class test608 {
?

public static void main(String args[]) {
String programOut = “I’m enjoy java program world”; String preHalf=programOut.substring(0,14); String backHalf=prgramOut.substring(14); System.out.println(preHalf); System.out.println(backHalf);

}

}

?

String.getBytes()的问题
? String的getBytes()方法是得到一个字串的字节

数组,这是众所周知的。但特别要注意的是, 本方法将返回该操作系统默认的编码格式的字 节数组。如果使用这个方法时不考虑到这一点 ,会发现在一个平台上运行良好的系统,放到 另外一台机器后会产生意想不到的问题。

?
? ?

?
? ?

?
? ?

?
? ? ?

实例 class TestCharset { public static void main(String[] args) { new TestCharset().execute(); } private void execute() { String s = "Hello!你好!"; byte[] bytes = s.getBytes(); System.out.println("bytes lenght is:" + bytes.length); } }

?

在中文WindowsXP系统下行结果为: bytes lenght is:12 英文UNIX环境下运行:
$ java TestCharset bytes lenght is:9

?

?

思考:
? Java中如何解决字符串的编码问题

请课后查阅相关资料。

JAVA正则表达式
?

正则表达式就是一个字符串,但和普通的 字符串不同的是,正则表达式是对一组相 似字符串的抽象,如下面的几个字符串:
a98b c0912d c10b a12345678d ab [ac]\\d*[bd]

JAVA正则表达式
?

正则表达式在字符串处理上有着强大的功 能,sun在jdk1.4加入了对它的支持
? java.util.regex中的两个类:Pattern和Matcher

?

在String中有四个方法可以使用正则表达式 ,它们是matches、split、replaceAll和 replaceFirst。

?

matches方法
判断当前字符串是否匹配给定的正则表达式。如果匹配,返回true,否则返 回false。 定义如下: public boolean matches(String regex) 例: String[] ss = new String[]{"a98b", "c0912d", "c10b", "a12345678d", "ab"}; for(String s: ss) System.out.println(s.matches("[ac]\\d*[bd]"));

?

?

输出结果: true true true true true

?

课后:
? 查找相关资料,深入了解Java正则表达式。

数值类型的互相转换
?

变量从一种数据类型转换到另一种数据类型,称为类型转 换。
? ?

在C和C++中可通过指针进行任意的类型转换,不安全。 Java中运行时系统对对象的处理要进行类型相容性检查,以防止 不安全的转换。

数据类型转换

凡是把占用比特数较少的数据转换成占 用比特数较多的数据,可以由编译系统 自动完成,这种转换称为隐式转换。 ? 如果要把占用比特数多的数据转换成占 用比特数少的数据,可以采用强制类型 转换。
?

数值类型的互相转换
?

自动类型转换,表达式类型的自动提升
?

整形、实型、字符型数据可以进行混合运算。运算时,不同类型 的数据先转化为同一类型,字符型会转换为数值型,然后进行运 算。
? ? ?

表达式的类型为存储长度最大,精度最高的数据类型。 当把级别低的表达式的值赋给级别高的变量时,系统会自动完成数据 类型的转换。而级别高的表达式的值不能直接赋给级别低的变量。 例:float f; f=34*12;f=f+23.5;

?

强制类型转换
? ? ?

一般情况下,当精度高的类型向精度低的类型转换时,要明确指 明,如: double k=6; float b=(float)k;

?

例如: double x = 9.99; int nx=(int)x; //这时nx就是一个int类型的数据了,并 且它的值是9,后面的部分在造型过程中被丢掉了。如果 想把一个浮点数舌入成“最接近”的整数,可以使用 Math.round方法。在使用Math.round方法舌入后,可能还 要使用造型来进行类型转换。 Java还允许将一种类型的变量值赋给另一个变量,同 时不进行显示造型,同样可以进行某些特定的赋值转换, 允许的转换包括: buty->short->int_>long->float->double char->int 当进行赋值的时候,会按照上面的顺序从左向右转换

不是所有的数据类型都允许隐含自动转换。例 如,下面的语句把long型数据赋值给int型数据, 在编译时就会发生错误: long i=10; int j=i; 这是因为当把占用位数较长的数据转化成占用 位数较短的数据时,会出现信息丢失的情况,因 而不能够自动转换。这时就需要利用强制类型转 换,执行非兼容类型之间的类型转换。上面的语 句写成下面的形式就不会发生错误: long i=10; int j=(int)i;

强制类型转换的格式是: (数据类型)变量名
经过强制类型转换,将得到一个在“()”中声明的数 据类型的数据,该数据是从指定变量所包含的数据转换而 来的。值得注意的是,指定变量本身不会发生任何变化。 将占用位数较长的数据转化成占用位数较短的数据时, 可能会造成数据超出较短数据类型的取值范围,造成“溢 出”。如: long i=10000000000; int j=(int)i; 因为转换的结果已经超出了 int 型数据所能表示的最大 整数(4294967295),造成溢出,产生了错误。

short a,b,c; a=2; b=3; c=a+b;

short a,b,c; a=2; b=3; c=(short)(a+b);

常量
?

?
?

?

?
?

?

?

Java不支持宏定义,只能使用关键字final来定义常量。 整型: 23(十进制)、 0X63(十六进制) 、063(八进制) 长整型:25L 浮点常量:小数常量默认为是double型的,float类型后一 定要加f(F),34d、34.0是double类型常量,34f、34.0f是 float类型常量。 逻辑常量:true、false 字符常量:’a’ ‘8’ ‘\n’ ‘我’ 都是字符常量(16进制表 示的字符)占用两个字节,采用国际编码标准—Unicode 码。 字符串常量:”a” “dkdkdk\n” 。 null常量:表示对象的引用为空

变量
?

变量是用来存储数据的。在计算机中所有的数据都是存储 在内存中的,形象地说,变量就是在内存中预分配一个空 间,这个空间里可以根据需要存放不同的数据。变量就是 数据的容器,在Java语言中,它也被称为域。
定义变量
? ?

?

在内存中拿到一块空间,然后标上自己的名字,这个名字就是变 量名。 Java不能在所有类之外定义全局变量,而是在某个类中定义一种 公用静态变量完成全局变量的功能。

变量
?

给变量赋值
?

将一个数、或一个字符,放到刚才分配的空间中去。以后访问A就 可以得到5这个数。 修改变量赋值,与给变量赋值类似,只过是这个变量里本身就存 在一个值,新的一个值是取而代之。 Java不再使用指针,而用“引用”的方式,对指针进行完全地控 制,程序员不能直接进行任何指针操作。
?

?

修改变量的值
? ?

指针是C语言和C++语言中最灵活,也最容易产生错误的数据类型。由指针所 进行的内存地址操作常会造成不可预知的错误,同时通过指针对某个内存地 址进行显式类型转换后,可以访问一个C++中的私有成员,从而破坏安全性

变量
?

在C/C++里面交换值的方法:

void swap(int&a ,int&b) { int temp; temp = a; a = b; b = temp; }
? ?

但在JAVA中用这种方法是行不通的,因为“Java对普通 类型的变量是不支持引用传递的”。 思考:怎么办?

?

声明一个变量包括两个步骤:指定存储该变量的 数据类型,以及给该变量起一个名称。
声明变量的格式:
类型 变量名1[,变量名2,……,变量名n][=初值]; 例: int x; int age;

?

?

在什么地定义变量
? 在Java语言中,只要在同一个代码段没有同名

的变量,就可以在程序中的任何一个地方定义 变量。一个代码块就是两个相对的“{”、“}”之 间的部分。
?

建议
? 做为一个良好的编程习惯,您应该在使用变量

的代码块的开始处定义变量。这样利用程序的 维护。

变量的赋值
?

Java使用赋值操作符“=”给一个变量赋值例 如
int age;
age= 18;

?

变量可以在声明时直接指定它的值。可以用下 面这条语句来替代上面的两行语句。
int x = 18;

?
?

变量的作用范围
变量的定义、赋值都比较简单,而在变量这一概念中,有一个十分重 要的知识点,也是最难理解的知识点,那就是“变量的作用范围”。 一个变量的“影响力”是有限的,它的“影响力”取决于这个变量在 什么位置被定义。在它的“影响力”到达的地方,程序就可访问它; 而在它“影响力”无法到达的地方,它就像不存在一样。 我们把变量的“影响力”称为作用范围。
?

?

每个变量只在定义它的代码块中(包括这个代码块包含的代码块)生效 。(一个代码块就是两个相对的“{”、“}”之间的部分)

?

?

提示: 一个变量的作用范围外可以有一个与它同名的变量名存在,它们虽然 同名,同在一个程序,却可以相安无事的共存。

常量
如果一个变量的值不能改变,这就要使用常 量了,如 Pi = 3.14 是一个常量,它不能变成 4.32。需要声明某个变量是一个常量时,使用 final关键字来限定。 final double pi = 3.14159; pi = -5.0; //编译时出错! final int x //空常量值 x = 12; //只能初始化一次 x = 100 //编译时出错! 注意:试图修改一个常量的值会造成编译错误。 同时,常量只能被初始化一次

?

表达式 ? 表达式是运算符与操作数的结合,它是Java语 言重要的组成部分。 ? 一个表达式是可以由多个运算符构成的,它 就象我们在儿时就学到过的“四则计算”一样 。 例如: y=x-z*5/2 3*(2+6/3)

?

运算符
?

算术运算符
?

用来进行算术运算的符号。这类运算符是最基本、最常见的,它 包括:
? ? ? ? ? ?

+ 执行加法运算 5+5 (等于10) - 执行减法运算 6-2 (等于4) * 执行乘法运算 5*7 (等于35) / 执行除法运算 8/2 (等于4) % 执行模运算(就是求余数) 7%2 (等于1) 幂:Java没有乘幂运算符,必须使用Math.pow(x,a)方法,表示x的a 次幂。pow方法的两个参数都属于double类型,返回的值也是double 类型。 例如: double a = Math.pow(10,3); //定义了一个变量a,它的值是10的 3次幂。

?

赋值运算符
? 赋值运算符就是用来为变量赋值的。最基本的赋值运

算符就是等号“=”。我们在变量那一个小节就已经使用 过了:“变量名=值”,这里的“=”就是赋值运算符。 ? 在Java语言中,还提供了一种叫算术赋值运算符:
? ? ?

?
?

+= -= *= /= %=

X += 5 等价于 X = X+5 X -= 5 等价于 X = X-5 X *= 5 等价于 X = X*5 X /= 5 等价于 X = X/5 X %= 5 等价于 X = X%5

?

自增/减运算符
? 自增运算符“++”,使变量加1 ? X ++ 等价于 X+=1、X=X+1; ? 自减运算符“--”,使变量减1 ? X-- 等价于 X-=1、X=X-1; ? 自增/减运算符放在变量的左边或者右边将使得到值完

全不同,完成的功能也完成不同。

自增自减运算符
? ?

自增(++)和自减(--)操作符都是单目运算 符,即只有一个操作数的运算符。 两种用法:
? 前置运算──运算符放在变量之前。
? ?

格式:++变量;--变量。 前置运算先使变量的值增(或减)1,然后再以变化后的 值参与其它运算,即先增减、后运算。 格式:变量++、变量-- 后置运算时,变量先参与其它运算,然后再使变量的值增 (或减)1,即先运算、后增减。

? 后置运算──运算符放在变量之后。
? ?

关系运算符
? ? ? ?

用于大小关系比较的运算符有4个:
< 、<=、>、>=

用于相等关系的运算符有2个:
==、!=

大小关系运算符的优先级别高于相等关系运算 符。 例如:
int a=4,b=6; boolean y,c=true; y=a>b!=c;

用来连接两个或两个以上布尔型变量或表 达式。 ? 布尔运算的操作数和运算结果都是布尔型 的量
?

? 关系运算符
? “=

=”:比较两个对象是否相等; ? “>”:大于 ? “<”:小于 ? “>=”:大于等于 ? “<=”:小于等于

?

逻辑运算符 ? 又称为布尔运算符,是用来处理一些逻辑关系的运算 符,它最经常应用于流程控制。
在Java语言中提供了四种逻辑运算符: ? 与运算符:“&&” ? 或运算符:“||” ? 非运算符:“!” ? 异或运算符:“^”

?

?

与运算符“&&” X Y X&&Y true(真) true(真) true(真) true(真) false(假) false(假) false(假) true(真) false(假) false(假) false(假) false(假)

?

或运算符“||” X Y X||Y true(真) true(真) true(真) true(真) false(假) true(真) false(假) true(真) true(真) false(假) false(假) false(假)

?

非运算符“!” X !X true(真) false(假) false(假) true(真)

?

异或运算符“^” X Y X^Y true(真) true(真) false(假) true(真) false(假) true(真) false(假) true(真) true(真) false(假) false(假) false(假)

?

按位运算符
? &(加) ? |(或) ? ^(异或) ? ~(否)

? >>向右移位
? <<(向左移位)

?>

>>(用零来填充位于顶部的位)

?

&&
?

如果第一个操作数被判定为“假”,系统不再判定或求解第二个操作数 。因为对于与运算,只要有一个操作数为假(false),其结果即为假( false)。 无论第一个操作数是真还是假,都会求解第二个操作数,然后根据两个 操作数的值计算最终的结果。 如果第一个操作数被判定为“真”,系统不再判定或求解第二个操作数 。因为对于或运算,只要有一个操作数为真(true),其结果即为真( true)。 无论第一个操作数是真还是假,都会求解第二个操作数。

?

&
?

?

||
?

?

|
?

例 “&&”和“&”的区别
public class AndDemo { public static void main(String[] args) { int n1=1,n2=2,n3=3,n4=4; boolean x=true,y=true; boolean z=(x=n1>n2)&&(y=n3>n4); System.out.println("&&: x="+x+",y="+y+",z="+z); x=true;y=true; z=(x=n1>n2)&(y=n3>n4); System.out.println("&: x="+x+",y="+y+",z="+z); } }

运行结果如下: &&: x=false,y=true,z=false &: x=false,y=false,z=false
?

移位操作符
?

? ?

在Java中有三种移位操作:一个左移位(<<)和 两个右移位(>>和>>>)。移位操作是通过对一 个和整型数相对应的二进制数值的移动来实现 的。 将一个整型数向左移位(<<)将使二进制的最低 位补上一个0 向右移动操作符将二进制数据向右移动。 “>>”是带符号右移,而“>>>”是不带符号右 移。不带符号右移在数值向右移动的时候,无 论符号位是什么,总是以0来填补。

三目运算符
三目运算符在使用时需要三个操作数, 它是一个if /else控制结构的简写方式 。格式如下: (表达式1) ?(表达式2):(表达式3) ? 执行顺序:先求解表达式1,如果为真, 则表达式2的值就作为整个表达式的值; 如果表达式1的值为假,则表达式3的值 就是整个表达式的值。
?

?

例如:
max = (a>b) ? a : b; 按照运算符的优先级,也可写作: max = a>b ? a : b;

如果a>b,则max=a;否则max=b。执行结果是把a和b中的较大者赋 值给max。

int a=3,b=4; int max=a>b?a:b;
max的值为4。

三目条件运算可以嵌套 ? 例:
?
? 如有以下的语句,则max表示的是a、b、c三个

数中的最大值,其值为5。
int a=3,b=4,c=5;

int max=(a>b ? a:b)>c ? (a>b?a:b):c;

其他运算符
?

对象运算符(instanceof)
?

对象运算符instanceof用来判断一个对象是否是某一个类或者其子类的 实例。如果对象是该类或者其子类的实例,返回true;否则返回false。 括号运算符()的优先级是所有运算符中最高的,所以它可以改变表达 式运算的先后顺序。在有些情况下,它可以表示方法或函数的调用。 方括号运算符[ ]是数组运算符。 .运算符用于访问对象实例或者类的类成员函数。 new运算符用于创建一个新的对象或者新的数组。

?

()
?

? ?

[ ]
? ?

.运算符

?

new运算符
?

运算符的优先级与结合性
?

优先级决定了同一表达式中多个运算符被 执行的先后次序,如乘除运算优先于加减 运算,同一级里的运算符具有相同的优先 级。运算符的结合性则决定了相同优先级 的运算符的执行顺序。

结构化程序设计
?

Java语言是面向对象的语言,但在局部的语句 块内部,仍需要借助于结构化程序设计的基本 流程结构来组织语句。结构化程序设计的基本 原则是:任何程序都可以且只能由三种基本流 程结构构成,即顺序结构、分支结构和循环结 构。

控制流程
控制流程是任何一种程序语言都要提供的 ,Java提供的控制流程和许多其他的程序 语言基本上是相同的。 ? 条件语句:
?

(条件) 语句; ? if (条件) { 代码块 } ? if (条件) 语句; else 语句; ? if (条件) { 代码块 } else { 代码块 }
? if

if条件语句
if语句的一般格式: if(表达式) {语句组A;} [else {语句组B;} ] ? if语句的执行过程: (1)缺省else子句时
?

例如:if(a>b) System.out.println(“max=“+a);

if条件语句
(2)指定else子句时
例如:if(a>b) System.out.println(“max=“+a);

else

System.out.println(“max=“+b);

一般形式: if (表达式1 ) if (表达式2 ) {语句组A;} else {语句组B;} else if (表达式3) {语句组C;} else {语句D;}

if语句的嵌套

例:输入学生的分数score(0~100), 如果90≤score≤100,输出“优秀”, 如果80≤score<90,输出“良好”,如 果70≤score<80,输出“中等”,如果 60≤score<70,输出“及格”,如果 0≤score<60,输出“不及格”,如果输 入分数超出范围,输出“输入错误”。 试编写Java应用程序。

public class Score{ public static void main(String[] args) throws java.io.IOException{ String str=""; //声明字符串 char c=' '; //声明字符型变量 int score; //声明整型变量 System.out.println("请输入分数:\n"); while(c!='\n') //如果按回车键,则退出循环 { c=(char)System.in.read(); //从键盘输入一个字符赋 值给c str=str+c; //将字符添加到str的末尾 str=str.trim();//除去字符串开始和尾部空格 } score=Integer.parseInt(str); //将字符串转换为整型 数

if(score>=90 & score<=100) System.out.println("优 秀"); else if(score>=80 & score<90) System.out.println("良好"); else if(score>=70 & score<80) System.out.println("中等"); else if(score>=60 & score<70) System.out.println("及格"); else if(score>=0 & score<60) System.out.println("不及格"); else System.out.println("输入错误 !"); } }

运行结果如下: 请输入分数: 78 中等

?

?

多重循环: switch(choice) { case 1: ... break; case 2: ... break; default: ... break; } default从句是可选的。switch语句只能对char类型或除了long之外的其他整数 类型进行测试。

switch语句
witch语句格式: switch(表达式) { case 常量1: 语句组1; break; //分支1 case 常量2: 语句组2; break; //分支2 …… case 常量n: 语句组n; break; //分支n [default: 语句组n+1; ] //分支n+1 } switch、case、default为关键字,break语句是switch语 句的出口。

例:用switch语句实现
public class Sample1_13 { public static void main(String[] args) throws java.io.IOException{ String str=""; //声明字符串 char c=' '; //声明字符型变量 int score; //声明整型变量 System.out.println("请输入分数(0-100):"); while(c!='\n') //如果按回车键,则退出循环 { c=(char)System.in.read(); //从键盘输入一个字符赋值给 c str=str+c; //将字符添加到str的末尾 str=str.trim();//除去字符串开始和尾部空格 }

score=Integer.parseInt(str); //将字符串转换为整型数 switch(score/10){ case 10: case 9: System.out.println("优秀");break; case 8: System.out.println("良好");break; case 7: System.out.println("中等");break; case 6: System.out.println("及格");break; case 5: case 4: case 3: case 2: case 1: case 0: System.out.println("不及格");break; default : System.out.println("输入错误"); } } }

运行结果如下: 请输入分数: 87 良好

?

不确定循环:
(条件) { 代码块 } ? do { 代码块 } while (条件);
? while

while循环
while循环语句的基本结构如下: while(表达式) { 循环体 } 表达式返回的值 为布尔型。

例:求 1+2+3+4+5+……+100。
public class Sum { public static void main(String[] args) { int n=100,sum=0,i=1; //变量定义及初始化 while(i<=n) { //循环体 sum=sum+i; //求和 i++; //循环变量更新 } System.out.println("sum="+sum); //输出运算结果 } }

运行结果如下: sum=5050

do-while循环
语法结构如下: do {
?

循环体 }while(表达式);

?

确定循环:
i=1; i <= 10; i++) { 代码块 } ? 在for语句的第一个位置声明了一个变量后,这 个变量的作用域会扩展到for循环主体结束。但 循环之外是不能使用这个变量的。
? for(int

例 嵌套for循环示例()
char current ='A'; //声明并初始化变量 current for(int row = 1; row <= 3; row++) //外循环 { for(int column = 1; column <= 10; column++) //内嵌循环 { System.out.print(current + " "); current++; //当前字符值自增1 if(current>‘Z’) break; //当前字符值 大于Z时,退出循环 } System.out.println(); //换行 }

?

跳转语句
? break:结束本次循环 ? continue:循环中跳出,修改变量,继续循环 ? return:返回一个数值类型


更多相关文档:

a_language_teacher's_p...

A_Language_Teacher's_Personal_Opinion原文+翻译_英语_高中教育_教育专区。A Language...文档贡献者 Carollin小童鞋 贡献于2014-03-25 专题推荐 2014教师资格材料分...

英语Target Language

英语Target Language_英语学习_外语学习_教育专区。英语 Target Language(教案)榆次区政府 www.yuci.gov.cn 183 2010 年 12 月 03 日 来源:本站原创 点击数: ...

03.Lab02-2.LC-2K Assembly-Language Programming

03.Lab02-2.LC-2K Assembly-Language Programming_计算机软件及应用_IT/计算机_专业资料。Laboratory2-2 Programming LC-2KAssembly-Language Laboratory2.2.1 ...

Unit 03 Body Language

Body language英语课件 19页 免费 优质课_Body_Language 39页 免费如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...

南师大英语语言学03-07复试题

南师大英语语言学03-07复试题_英语考试_外语学习_教育专区。如题 ...In this kind of language, words display grammatical relationships ...

The power of language

The power of language_英语学习_外语学习_教育专区。英文。 分析语言的力量。The...文档贡献者 blancaj 贡献于2011-10-03 专题推荐 2014教师资格材料分析辅... ...

body language 作文

body language 作文_英语学习_外语学习_教育专区。Body language is one of the...文档贡献者 嘛咪猴 贡献于2014-03-19 专题推荐 100字作文 200字好段 (2) ...

COMMUNICATIVE LANGUAGE LEARNING

COMMUNICATIVE LANGUAGE LEARNING_英语学习_外语学习_教育专区。Communicative Language...文档贡献者 zwzoxx 贡献于2011-03-12 1/2 专题推荐 2014教师资格材料分析...

nls_lang、nls_language、nls_characterset的区别

nls_lang、nls_language、nls_characterset的区别_IT认证_资格考试/认证_教育...文档贡献者 109889544 贡献于2012-03-01 专题推荐 2014下半年教师资格......

Unit 4 Body language 教学设计 教案

Recite the new words in the text. 2.Finish “Learning about language” on P28-29 文档贡献者 优课小教室 贡献于2016-03-07 相关文档推荐 暂无相关推荐...
更多相关标签:
网站地图

文档资料共享网 nexoncn.com copyright ©right 2010-2020。
文档资料共享网内容来自网络,如有侵犯请联系客服。email:zhit325@126.com