第二章Java基本程序设计
2.1 基本知识 2.1.1字符集 Java 语言采用unicode字符集,含有65535个字符,字母包括下面几种: A---Z,a---z 汉字、日文片假名、平假名和朝鲜文 Unicode字符格式:\udddd d是一位十六进制数
例:\u03c0表示希腊字母“π” \u0030----\u0039表示0---9 Unicode 的网页地址: http:/www.stonehand.com/unicod.html
2.1.2标识符 标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。下列都是合法标识符: Hello、$1234、程序名、www_123 标识符可用作: 类名、变量名、方法名、数组名、文件名等
2.1.3关键字 关键字就是Java语言中已经被赋予特定意义的一些单词。常见有: abstract、class、public、try、catch、if、float、import、void等
2.1.4注释 Java有三种注释的方式: 1。// notes! 注释内容由//一直到此行结束 2。/*和*/定义一个注释块 3。/**开始,*/结束 这种注释方法可用来自动产生文档
2.1.4注释 Remember? /*这是一个Java的小例子*/ public class Hello//定义一个类 {public static void main(String args[]) { System.out.println(“你好!”);//输出 } Remember?
2.2 基本数据类型 Java中数据类型分为四种: 基本数据类型(primitive type) 数组类型(array type) 类(class type) 接口类型(interface type) 任何常量和变量都是上述四种数据类型之一。
2.2 基本数据类型 2.2.1 .逻辑型 常量:true、false 变量的定义: boolean x; boolean x,y,tom; 定义同时可赋值: boolean x=true,tom=false;
2.2.2.字符类型 常量:‘a’、‘A’ 、‘8’ 、‘?’ 变量定义: char q; char c,type,cat; 定义同时可赋值: char c=‘a’,type,cat;
整数类型 int 常量: 十进制:123,6000 八进制:077,065 十六进制:0x234,0xab12 整形变量的定义分为四种: byte short long
Int型 -2147483648-2147483647 变量定义 int x; int tom_12,jafei,年令 定义同时可赋值:
Byte型 -128--127 变量定义 byte w; byte x,y,z; 定义同时可赋值: byte x=12,y=24,z=36;
Short型 -32768--32767 变量定义 short h; short m,$12,_aort; 定义同时可赋值:
Long型 变量定义 long 长型 long I,j,k; 定义同时可赋值: long 长型; -92233720368477808---92233720368477807 变量定义 long 长型 long I,j,k; 定义同时可赋值: long 长型; 对于long型变量,内存分配8个字节,占64位,取值范围-263 ~263-1
浮点类型 Float型 常量:12.23f, 32.00F, 2e40f 变量的定义: float x; float x1,x2,x3; 有效位6-7位 Float型 常量:12.23f, 32.00F, 2e40f 变量的定义: float x; float x1,x2,x3; 定义时赋初值: float x1=12.23f,x2=32.00f,x3; 对于float型变量,内存分配4个字节,占32位.
Double 型 常量:12.23d, 32.00D, 123.0,6e-120 变量定义: double d; 有效位15位 常量:12.23d, 32.00D, 123.0,6e-120 变量定义: double d; double d1,d2,d3; 定义时可以赋初值: double d1=1223.f,d2=32.00d,d3; 内存分配8个字节,占64位
当我们在程序中定义变量时,常常没有给定变量初值。虽然变量的初值没有必要给定,但这经常是程序运行时错误的根源。为了可靠性起见,Java会自动为没有给定初值的变量设置标准的初值,如下表: 基本数据类型 预设值 boolean false char ‘\u0000’ byte (byte)0 short (short)0 int long 0L float 0.0f double 0.0d
练习:基本数据类型的使用(1) 下面代码的输出结果是什么? int i=10; System.out.println(i); i=15; 输出结果: 10 15
System.out.println(i); int i=15; 练习:基本数据类型的使用(2) 下面代码中的两个错误是什么? int i; System.out.println(i); int i=15; 错误1:在给变量i赋值前使用它。(#2) 错误2:第二次定义变量i。(#3)
练习:基本数据类型的使用(3) 下面的代码中有错吗? double x=15.0; x = x * 10; System.out.println(x); 没有任何错误。 x先被赋予值15.0,然后x被给定一个新的值150.0。
练习:基本数据类型的使用(4) int one= 10; int two = 20; System.out.println(one); 假设有两个int型变量one和two,编写代码交换它们的值。 int one= 10; int two = 20; System.out.println(one); System.out.println(two); int temp=two; two= one; One=temp; System.out.println(one); System.out.println(two);
类型转换 Exchange! char ↓ byte → short → int → long ↙ ↓ ↓ ↘ → double float
造型 大多数的数值转换是遵循优先级的关系自动完成的 而有些转换则是通过造型来完成的 语法: (转换后类型) 被转换的变量名 例:double x=9.987; int nx=(int) x; 转换后 nx=9 强转时,当心丢失数据
造型 若要把一个浮点数转换成与其最接近的数(即进行四舍五入)需使用Math.round()方法 例:double x=9.987; int nx=(int)Math.round(x); 结果:nx=10
表达式是由变量、常量、对象、方法调用和操作符组成的式子。 2.3 表达式 表达式是由变量、常量、对象、方法调用和操作符组成的式子。 例: a+b*c/2-max(x,y) 表达式的值就是对它运算后所得的结果。 若 a=4,b=5,c=6,x=7,y=9,则上述表达式的结果为: 10 组成表达式的Java操作符有很多种,代表了多种的丰富的操作运算,包括赋值运算、算术运算、关系运算等。
赋值运算符 变量或对象=表达式; 其中赋值号右边的表达式可以是常量、另一变量或对象以及方法的返回值。 赋值运算符对应了赋值运算,即赋予程序里的变量或对象一定的内容。简单的赋值运算是把一个表达式的值直接赋给一个变量或对象,使用的赋值运算符是“=”,其格式为: 变量或对象=表达式; 其中赋值号右边的表达式可以是常量、另一变量或对象以及方法的返回值。
简单例子 i=0; j=i; k=i+j*5; MyFirstString=MyDouble.toString(); MySecondString=MyFirstString;
算术运算符 运算符 用法 描述 双目运算符 + Op1+op2 加 - Op1-op2 减 * Op1*op2 乘 / Op1/op2 除 % op1%op2 取模(求余) 单目运算符 +op 正值 ++ ++op,op++ 加1 -op 负值 -- --op,op-- 减1
“++”和“--”都可以做前置和后缀运算符。下面分别介绍: int i=15; System.out.println(i); 结果:15 (一)。i++与++i的区别 i++在使用i之后,使i的值加1,因此执行完i++后,整个表达式的值为i,而i的值变为i+1。 int i=15; System.out.println(i++);结果:15 System.out.println(i); 结果:16 ++i在使用i之前,使i的值加1,因此执行完++i后,整个表达式和i的值均为i+1。 int i=15; System.out.println(++i);结果:16 System.out.println(i); 结果:16 (二)。i--与--i 对i--与--i类似于(一)。
关系运算符 运算符 用法 返回true的情况 > op1>op2 op1大于op2 >= op1>=op2 op1大于或等于op2 < <= op1<=op2 op1小于或等于op2 == op1==op2 op1与op2相等 != op1!=op2 op1与op2不等
布尔逻辑运算符 op1 op2 op1&&op2 op1||op2 !op1 false true
位运算符 运算符 描述 >> 带符号右移运算 << 左移运算 >>> 无符号右移运算(右移后零填充) & 按位与 | 按位或 ^ 按位异或 ~ 按位取补运算
条件运算符? : 条件运算符也称三目运算符,其格式为: Expression ? statement1 : statement2; 它的作用是根据第一个运算符(放在?前面,必须为布尔类型数据)的真假值,来决定整个表达式的结果值是第二个运算量(放在?后面 :前面)或者是第三个运算量(放在:后面)。 X>y ?1:-1
条件运算符的结合顺序是由右向左,也就是说,当我们写 a?b:c?d:e?f:g 的时候,Java会将其解释为 (a?b:(c?d:(e?f:g)))。 例:x=5; x>0?1:x<0?-1:0
其它运算符 分量运算符. 内存分配运算符new 方法调用运算符( ) 下标运算符[] 实例运算符instance of
运算符 优先级 描述 运算符 结合性 1 分隔符 [] () . , ; 2 自增自减、逻辑非 ++ -- ! 右到左 优先级 描述 运算符 结合性 1 分隔符 [] () . , ; 2 自增自减、逻辑非 ++ -- ! 右到左 3 算术乘除 * / % 左到右 4 算术加减 + - 左到右 5 移位 << >> 左到右 6 大小关系运算 < <= > >= 左到右 7 相等关系运算 == != 左到右 8 按位与运算 & 左到右
优先级 优先级 描述 运算符 结合性 9 按位异或 ^ 左到右 10 按位或 | 左到右 11 逻辑与 && 左到右 优先级 描述 运算符 结合性 9 按位异或 ^ 左到右 10 按位或 | 左到右 11 逻辑与 && 左到右 12 逻辑或 || 左到右 13 三目条件运算 ?: 左到右 14 赋值运算 = 右到左
运算符 Java提供一个特别的运算符 new 这是一个用来创建对象的运算符
2.4 语句 Java语句分为5类: 1.方法调用语句 System.out.println(“Hello!”); 2.表达式语句 x=23; i++;
语句 3.复合语句:用{}把一些语句括起来就构成了一个语句 {z=x+23; System.out.println(“Hello”); } 4.控制语句 if 、do 、switch 5.packege语句和import语句
Java的控制语句 Java语言控制语句有3种: 条件语句 循环语句 转移语句
条件语句 Java有两种类型的条件语句 if switch
If语句 if语句 一般形式: if(表达式) {语句序列1} else {语句序列2}
例: y= { -1 x<=0 public calss Y {public static void main(String args[]) int x=6; if(x>0) {y=1;} else {y=-1;} System.out.println(“我在学习IF语句”); } 1 x>0
if的扩充形式 if(表达式1) 语句1 else if(表达式2) 语句2 …… else if( 表达式n) 语句n else 语句1 else if(表达式2) 语句2 …… else if( 表达式n) 语句n else 语句n+1
switch语句 switch{表达式) {case 常量1: 语句序列1 break; case 常量2: 语句序列2 ……. 语句序列1 break; case 常量2: 语句序列2 ……. case 常量n: 语句序列n break; default: }
几点注意: 表达式值、常量i的值为整形 常量i<>常量j 执行:先计算表达式值 若与常量i相同,则执行语句序列i 若都不相同,则执行语句序列n+1
例 .根 据 考 试 成 绩 的 等 级 打 印 出 百 分 制 分 数 段 。 public class GradeLevel{ public static void main( String args[] ){ System.out.println("\n** first situation **"); char grade='C'; //normal use switch( grade ){ case 'A' : System.out.println(grade+" is 85~100"); break; case 'B' : System.out.println(grade+" is 70~84"); case 'C' : System.out.println(grade+" is 60~69"); case 'D' : System.out.println(grade+" is <60"); default : System.out.println("input error"); } }
循环语句 分为三种: for while do-while
for语句 格式: for(表达式1;表达式2;表达式3) {若干语句} 表达式1负责变量初始化 表达式2称为循环条件 表达式3用来改变循环条件 {若干语句}称为循环体 执行如右:
例:1-100之和 import java.applet.*; import java.awt.*; public class ForSum100 extends Applet { public void paint(Graphics g) { int sum=0; for(int i=1;i<=100;i++) {sum=sum+i;} g.drawString("sum="+sum,10,20); }} PerfectNum.java
while与do-while语句 while一般格式: while(表达式) {若干语句} do-while一般格式: do { 语句序列}
转移语句 continue 作用:结束本次循环,开始下一次循环 例:求100个数中的正数的和 public class ForSum100 { public static void main(String argv[]) { int sum=0,a; for(int i=1;i<=100;i++) {System.in.read(a); if(a<0) continue; sum=sum+i;} System.out.println("sum="+sum); }}
break 作用:结束整个循环的执行,转到下一语句 例:求100个数的和,遇负数结束 public class ForSum100 { public static void main(String argv[]) { int sum=0,a; for(int i=1;i<=100;i++) {System.in.read(a); if(a<0) break; sum=sum+i;} System.out.println("sum="+sum); }}
返回语句 Java的返回语句与Java的方法紧密相关 当程序执行到此语句时,将立即返回上一级方法 格式:return [value] Java是第一个没有goto的流行语言!
package语句 用于指明源文件定义的类所在的包 一般格式: package 包名 例:package exam;
例:package horst.comm.pack class A { …… } class B { …… } class C {
import语句 用于引入所需要的类 Java程序中可以有多个import语句,它们必须位于package语句之后,类定义语句之前。 Java.applet实现Java Applet的类 java.awt抽象窗口工具集,包含了图形、文本、窗口GUI类
Java常用包 java.awt.image抽象窗口工具集中的图象处理类 java.lang基本语言类 java.io输入输出类 java.net所有实现网络功能的类 java.util有用的数据类型类 java.awt.peer平台无关的GUI工具集界面
Java常用包 从一个包中引入多个类,则可用*表示: import java.awt.*; 引入一个类,则需指出具体类名: import java.awt.Button; Java.lang包是Java语言的核心类库,它包含了运行Java程序必不可少的系统类。 系统自动引入Java.lang包