1、第二章第二章JavaJava基本程序设计基本程序设计单击此处添加副标题第二章Java基本程序设计2.1 基本知识基本知识2.22.2 基本数据类型基本数据类型2.3 表达式表达式 2.4 Java语句语句2.1 基本知识 2.1.1字符集 Java Java 语言采用语言采用unicodeunicode字符集,含有字符集,含有6553565535个字符,所以字母包括下面几种:个字符,所以字母包括下面几种:A-Z,a-zA-Z,a-z 汉字、日文片假名、平假名和朝鲜文汉字、日文片假名、平假名和朝鲜文Unicode字符格式:字符格式:uddddd是一位十六进制数是一位十六进制数例例:u03c0表示
2、希腊字母表示希腊字母“”u0030-u0039表示表示0-9Unicode 的网页地址:的网页地址:http:/ 标识符由字母、下划线、美元符号和数标识符由字母、下划线、美元符号和数字组成,且第一个符号不能为数字。下字组成,且第一个符号不能为数字。下列都是合法标识符:列都是合法标识符:HelloHello、$1234$1234、程序名、程序名、www_123www_123 标识符中不能含有标识符中不能含有:+,:+,和空格等符和空格等符号号 标识符可用作:标识符可用作:类名、变量名、方法名、数组名、文件类名、变量名、方法名、数组名、文件名等名等2.1.3关键字 关键字就是关键字就是JavaJa
3、va语言中已经被赋予特语言中已经被赋予特定意义的一些单词。常见有:定意义的一些单词。常见有:abstractabstract、classclass、publicpublic、trytry、catchcatch、if if、floatfloat、importimport、voidvoid等等2.1.4 常量 在Java中,利用关键字final声明常量.例:Final double CM_PER_INCH=2.54;关键字final 表示这个变量只能被赋值一次 一但被赋值之后,就不能再改变了 习惯上,常量名采用大写2.1.52.1.5注释注释JavaJava有三种注释的方式:有三种注释的方式:1
4、1。/注释内容由注释内容由/一直到此行结束一直到此行结束2 2。/*和和*/定义一个注释块定义一个注释块3 3。/*开始,开始,*/结束结束 这种注释方法可用来自动产生文档这种注释方法可用来自动产生文档2.1.5注释/*这是一个这是一个JavaJava的小例子的小例子*/public class Hello/public class Hello/定义一个类定义一个类 public static void main(String public static void main(String argsargs)System.out.printlnSystem.out.println(“(“你好你好
5、!”);/!”);/输出输出 2.2 基本数据类型2.2 基本数据类型 JavaJava是强类型语言是强类型语言(strongly typed language)(strongly typed language)JavaJava一共有一共有8 8种基本类型种基本类型(primitive type):(primitive type):4 4个整型个整型 2 2个浮点个浮点 1 1 个个char(char(表示表示UnicodeUnicode编码的字符编码的字符)1 1 个个booleanboolean 2.2.1整数类型 常量:常量:十进制:十进制:123,6000123,6000 八进制:八进
6、制:077,065077,065 十六进制:十六进制:0 x234,0 xab120 x234,0 xab12 整形变量的定义分为四种整形变量的定义分为四种:intbyteshortlongInt型 变量定义变量定义 intint x;x;intint tom_12,jafei,tom_12,jafei,年令年令 定义同时可赋值:定义同时可赋值:intint tom_12=100,jafei,tom_12=100,jafei,年令年令2020;对于对于intint型变量,内存分配为型变量,内存分配为4 4个字节,占个字节,占3232位,取值范围位,取值范围-2-231 31 2 23131-1
7、-1-2147483648-2147483647Byte型 变量定义变量定义 byte w;byte w;byte x,y,z;byte x,y,z;定义同时可赋值:定义同时可赋值:byte x=12,y=24,z=36;byte x=12,y=24,z=36;对于对于bytebyte型变量,内存分配型变量,内存分配1 1个字节,占个字节,占8 8位,取值范围位,取值范围-2-27 7 2 27 7-1-1-128-127Short型 变量定义变量定义 short h;short h;short m,$12,_aort;short m,$12,_aort;定义同时可赋值:定义同时可赋值:sho
8、rt m=12,$12=20;short m=12,$12=20;对于对于shortshort型变量,内存分配型变量,内存分配2 2个字节,占个字节,占1616位,取值范围位,取值范围-2-21515 2 21515-1-1-32768-32767Long型 变量定义变量定义 long long 长型长型 long I,j,k;long I,j,k;定义同时可赋值:定义同时可赋值:long long 长型;长型;对于对于longlong型变量,内存分配型变量,内存分配8 8个字节,个字节,占占6464位,取值范围位,取值范围-2-26363 2 26363-1-1-92233720368477
9、808-92233720368477807补充例补充例1public class IntTest public static void main(String argsp)byte b1=0 x12;byte b2=0 x123;short s1=0 x1234;short s2=0 x12345;int i1=0 x12345678;int i2=0 x123456789;int i3=0 x123456789L;思考:编译时会出现怎样的结果?思考:编译时会出现怎样的结果?补充例补充例1说明说明 第一遍编译时,语句第一遍编译时,语句 intint i2=0 x123456789;i2=0 x
10、123456789;提示提示“过大的整数过大的整数”错误,把该语句加注释或删错误,把该语句加注释或删除后,除后,进行第二遍编译,对于语句进行第二遍编译,对于语句 byte b2=0 x123;byte b2=0 x123;short s2=0 x12345;short s2=0 x12345;intint i3=0 x123456789L;i3=0 x123456789L;都出现了错误提示都出现了错误提示“可能损失精度可能损失精度”。2.2.2 浮点类型 FloatFloat型型 常量:常量:12.2312.23f f,32.00,32.00F F,2e40,2e40f f 变量的定义:变量的
11、定义:float x;float x;float x1,x2,x3;float x1,x2,x3;定义时赋初值:定义时赋初值:float x1=12.23f,x2=32.00f,x3;float x1=12.23f,x2=32.00f,x3;对于对于floatfloat型变量型变量,内存分配内存分配4 4个字节个字节,占占3232位位.有效位有效位6-76-7位位Double 型 常量:常量:12.2312.23d d,32.00,32.00D D,123.0,6e-120,123.0,6e-120 变量定义:变量定义:double d;double d;double d1,d2,d3;dou
12、ble d1,d2,d3;定义时可以赋初值:定义时可以赋初值:double d1=double d1=1223.f1223.f,d2=32.00d,d3;,d2=32.00d,d3;内存分配内存分配8 8个字节,占个字节,占6464位位有效位有效位1515位位 常量:常量:truetrue、falsefalse 变量的定义:变量的定义:booleanboolean x;x;booleanboolean x,y,tom;x,y,tom;定义同时可赋值:定义同时可赋值:booleanboolean x=true,tom=false;x=true,tom=false;2.2.3 逻辑型2.2.4 字
13、符类型 常量:常量:aa、A A、8 8、?变量定义:变量定义:char q;char q;char c,type,cat;char c,type,cat;定义同时可赋值:定义同时可赋值:char c=a,type,cat;char c=a,type,cat;补充例补充例2public class public class CharTestCharTest public static void public static void main(Stringmain(String argspargsp)char ch1=A;char ch1=A;char ch2=u0041;char ch2=u0
14、041;char ch3=0X41;char ch3=0X41;char ch4=65;char ch4=65;intint x=A;x=A;System.out.println(ch1);System.out.println(ch1);System.out.println(ch2);System.out.println(ch2);System.out.println(ch3);System.out.println(ch3);System.out.println(ch4);System.out.println(ch4);System.out.println(xSystem.out.printl
15、n(x););思考:字符常量的不同思考:字符常量的不同表示方式。表示方式。(4)字符类型字符类型char与与StringStringString 不是基本数据类型,而是一个类不是基本数据类型,而是一个类 字符在双引号字符在双引号(“”)(“”)内内 “Hello,WorldHello,World!”!”使用如下:使用如下:String str1,str2;String str1,str2;/声明两个声明两个StringString变量变量 String greeting=“Good Morning!n”;String greeting=“Good Morning!n”;String Strin
16、g errorMessageerrorMessage=“Record Not Found!”;=“Record Not Found!”;/声明两个声明两个StringString变量并且初始化它们变量并且初始化它们基本数据类型基本数据类型预设值预设值booleanbooleanfalsefalsecharcharu0000u0000bytebyte(byte)0(byte)0shortshort(short)0(short)0intint0 0longlong0L0Lfloatfloat0.0f0.0fdoubledouble0.0d0.0d类型转换 byte short int longch
17、ar float double 类型转换 在上图中,6个白色箭头,表示无数据丢失的转换 3个红箭头,表示可能有精度损失的转换 例:Int n=123456789;Float f=n;结果:f=1.23456792E8造型(强转类型)大多数的数值转换是遵循优先级的关系大多数的数值转换是遵循优先级的关系自动完成的自动完成的 而有些转换则是通过造型来完成的而有些转换则是通过造型来完成的 语法:语法:(转换后类型)(转换后类型)被被转换的变量名转换的变量名例:例:double x=9.987;double x=9.987;intint nxnx=(=(intint)x;)x;转换后转换后 nxnx=9
18、=9强转时,当心丢失数据强转时,当心丢失数据造型 若要把一个浮点数转换成与其最接近的若要把一个浮点数转换成与其最接近的数(即进行四舍五入)需使用数(即进行四舍五入)需使用Math.round()Math.round()方法方法 例:例:double x=9.987;double x=9.987;intint nxnx=(=(int)Math.round(xint)Math.round(x););结果:结果:nxnx=10=10补充:封装类补充:封装类(Wrapper(Wrapper类类)基本数据类型基本数据类型Wrapper类类booleanBooleanbyteBytecharCharact
19、ershortShortintIntegerlongLongfloatFloatdoubleDoubleWrapper类类 通过将值传递给相应的构造器,可以构建通过将值传递给相应的构造器,可以构建WrapperWrapper类对象类对象 例如:例如:intint pIntpInt=500;=500;Integer Integer wIntwInt=new=new Integer(pIntInteger(pInt););intint p2=p2=wInt.intValuewInt.intValue();();Wrapper类类 当转换基本数据类型时当转换基本数据类型时WrapperWrapper
20、类很有用,因为类很有用,因为可以使用很多可以使用很多WrapperWrapper类方法类方法(查查API)API)。例如:例如:String String strstr=“365”;=“365”;intint x=x=Integer.parseInt(strInteger.parseInt(str););或或 intint x=x=Integer.valueOf(str).intValueInteger.valueOf(str).intValue();();枚举类型 有时变量的取值仅在一个有限的集合内 例如:人民币的面值只有:100,50,20,10,5,2,1元的,可以采用枚举型 enum
21、Money 100,50,20,10,5,2,1;Money m=Money.50;2.3 2.3 表达式表达式例:例:a+ba+b*c/2-max(x,y)c/2-max(x,y)若若 a=4,b=5,c=6,x=7,y=9,a=4,b=5,c=6,x=7,y=9,则上则上述表达式的结果为:述表达式的结果为:10赋值运算符赋值运算符简单例子简单例子 i=0;i=0;j=i;j=i;k=i+jk=i+j*5;5;MyFirstStringMyFirstString=MyDouble.toStringMyDouble.toString();();MySecondStringMySecondStr
22、ing=MyFirstStringMyFirstString;算术运算符算术运算符关系运算符布尔逻辑运算符布尔逻辑运算符位运算符位运算符条件运算符条件运算符?:?:条件运算符也称三目运算符条件运算符也称三目运算符,其格式为:其格式为:Expression?statement1:statement2Expression?statement1:statement2;它的作用是根据第一个运算符它的作用是根据第一个运算符(放在?前放在?前面,必须为布尔类型数据面,必须为布尔类型数据)的真假值,来的真假值,来决定整个表达式的结果值是第二个运算决定整个表达式的结果值是第二个运算量量(放在?后面放在?后面
23、:前面:前面)或者是第三个运或者是第三个运算量算量(放在:后面放在:后面)。Xy?1:-1条件运算符的结合顺序是由右向左,也条件运算符的结合顺序是由右向左,也就是说,当我们写就是说,当我们写 a a?b b:c c?d d:e e?f f:g g的时候,的时候,JavaJava会将其解释为会将其解释为 (a(a?b b:(c(c?d d:(e(e?f f:g)g)。例:例:x=5;x0?1:x0?-1:0其它运算符其它运算符 分量运算符分量运算符.内存分配运算符内存分配运算符newnew 方法调用运算符方法调用运算符()()下标运算符下标运算符 实例运算符实例运算符instance ofins
24、tance of运算符运算符 优先级描述优先级描述 运算符运算符 结合性结合性 1 1分隔符分隔符 ().,;().,;2 2 自增自减、逻辑非自增自减、逻辑非 +-!+-!右到左右到左 3 3 算术乘除算术乘除 */%/%左到右左到右 4 4 算术加减算术加减 +-+-左到右左到右 5 5移位移位 左到右左到右 6 6大小关系运算大小关系运算 =左到右左到右 7 7相等关系运算相等关系运算 =!=!=左到右左到右 8 8按位与运算按位与运算&左到右左到右优先级优先级 优先级描述运算符结合性优先级描述运算符结合性 9 9 按位异或按位异或 左到右左到右 10 10 按位或按位或|左到右左到右
25、11 11 逻辑与逻辑与&左到右左到右 12 12 逻辑或逻辑或|左到右左到右 13 13 三目条件运算三目条件运算?:?:左到右左到右 14 14 赋值运算赋值运算 =右到左右到左运算符这是一个用来创建对象的运算符Java提供一个特别的运算符2.4 语句 Java语句分为5类:1.方法调用语句 System.out.println(“Hello!”);2.表达式语句 x=23;i+;语句 3.3.复合语句:用把一些语句括复合语句:用把一些语句括起来就构成了一个语句起来就构成了一个语句 z=x+23;z=x+23;System.out.println(“HelloSystem.out.prin
26、tln(“Hello”);”);4.4.控制语句控制语句 if if、do do、switchswitch 5.packege5.packege语句和语句和importimport语句语句JavaJava的控制语句的控制语句 JavaJava语言控制语句有语言控制语句有3 3种:种:条件语句条件语句 循环语句循环语句 转移语句转移语句条件语句 JavaJava有两种类型的条件语句有两种类型的条件语句 if if switch switchIf语句 if if语句语句 一般形式:一般形式:if(if(表达式)表达式)语句序列语句序列1 1 elseelse 语句序列语句序列2 2 例:例:y=y
27、=-1 x=0-1 x0)if(x0)y=1;y=1;else else y=-1;y=-1;System.out.printlnSystem.out.println(“(“我在学习我在学习IFIF语语句句”););1 x01 x0if的扩充形式 if if(表达式表达式1 1)语句语句1 1 else if(else if(表达式表达式2 2)语句语句2 2 else if(else if(表达式表达式n)n)语句语句n n else else 语句语句n+1n+1switch语句 switchswitch表达式)表达式)case case 常量常量1:1:语句序列语句序列1 1 break
28、;break;case case 常量常量2:2:语句序列语句序列2 2 break;break;.case case 常量常量n:n:语句序列语句序列n n break;break;default:default:语句序列语句序列n n 几点注意:表达式值、常量表达式值、常量i i的值为整形的值为整形 常量常量ii常量常量j j 执行:先计算表达式值执行:先计算表达式值 若与常量若与常量i i相同,则执行语句序列相同,则执行语句序列i i 若都不相同若都不相同,则执行语句序列则执行语句序列n+1n+1例例 .根根 据据 考考 试试 成成 绩绩 的的 等等 级级 打打 印印 出出 百百 分分
29、制制 分分 数数 段段 。public class GradeLevel public static void main(String args)System.out.println(n*first situation*);char grade=C;/normal useswitch(grade)case A:System.out.println(grade+is 85100);break;case B:System.out.println(grade+is 7084);break;case C:System.out.println(grade+is 6069);break;case D:Sy
30、stem.out.println(grade+is 60);break;default :System.out.println(input error);循环语句 分为三种:分为三种:forfor while while do-while do-while 格式:for(表达式1;表达式2;表达式3)若干语句 表达式1负责变量初始化 表达式2称为循环条件 表达式3用来改变循环条件 若干语句称为循环体 执行如右:for语句例:1100之和 import java.applet.import java.applet.*;import import java.awtjava.awt.*;public
31、 class ForSum100 extends Applet public class ForSum100 extends Applet public void paint(Graphics g)public void paint(Graphics g)intint sum=0;sum=0;for(intfor(int i=1;i=100;i+)i=1;i=100;i+)sum=sum+i;sum=sum+i;g.drawString(sumg.drawString(sum=+sum,10,20);=+sum,10,20);PerfectNum.javawhile与do-while语句 wh
32、ilewhile一般格式:一般格式:while(while(表达式)表达式)若干语句若干语句 do-whiledo-while一般格式:一般格式:dodo 语句序列语句序列 while(while(表达式)表达式)转移语句 continuecontinue 作用:结束本次循环,开始下一次循环作用:结束本次循环,开始下一次循环例:求例:求100100个数中的正数的和个数中的正数的和 public class ForSum100 public class ForSum100 public static void main(String public static void main(String
33、argvargv)intint sum=0,a;sum=0,a;for(intfor(int i=1;i=100;i+)i=1;i=100;i+)System.in.read(a);System.in.read(a);if(a0)if(a0)continue;continue;sum=sum+i;sum=sum+i;System.out.println(sumSystem.out.println(sum=+sum);=+sum);breakbreak作用:结束整个循环的执行,转到下一语句作用:结束整个循环的执行,转到下一语句 public class ForSum100 public clas
34、s ForSum100 public static void main(String public static void main(String argvargv)intint sum=0,a;sum=0,a;for(intfor(int i=1;i=100;i+)i=1;i=100;i+)System.in.read(a);System.in.read(a);if(a0)if(a0)break;break;sum=sum+i;sum=sum+i;System.out.println(sumSystem.out.println(sum=+sum);=+sum);例:求例:求100个数的和个数
35、的和,遇负数结束遇负数结束返回语句 Java的返回语句与Java的方法紧密相关 当程序执行到此语句时,将立即返回上一级方法 格式:return valueJava是第一个没有goto的流行语言!packagepackage语句语句 用于指明源文件定义的类所在的包用于指明源文件定义的类所在的包 一般格式:一般格式:package package 包名包名 例:例:package exam;package exam;packagepackage一定是源文件的第一条语句一定是源文件的第一条语句例:例:package m.pack class A class B class C import语句 用于
36、引入所需要的类用于引入所需要的类 JavaJava程序中可以有多个程序中可以有多个importimport语句,它们语句,它们必须位于必须位于packagepackage语句之后,类定义语句语句之后,类定义语句之前。之前。java.awtjava.awt抽象窗口工具集,包含了图形、抽象窗口工具集,包含了图形、文本、窗口文本、窗口GUIGUI类类JavaJava提供了提供了6060个包,常用的包如下:个包,常用的包如下:Java.appletJava.applet实现实现Java AppletJava Applet的类的类Java常用包 java.awt.imagejava.awt.image抽
37、象窗口工具集中的图象抽象窗口工具集中的图象处理类处理类 java.langjava.lang基本语言类基本语言类 java.iojava.io输入输出类输入输出类 所有实现网络功能的类所有实现网络功能的类 java.utiljava.util有用的数据类型类有用的数据类型类 java.awt.peerjava.awt.peer平台无关的平台无关的GUIGUI工具集界面工具集界面Java常用包 从一个包中引入多个类,则可用从一个包中引入多个类,则可用*表示:表示:import import java.awtjava.awt.*;引入一个类,则需指出具体类名:引入一个类,则需指出具体类名:import import java.awt.Buttonjava.awt.Button;Java.langJava.lang包是包是JavaJava语言的核心类库,它包语言的核心类库,它包含了运行含了运行JavaJava程序必不可少的系统类。程序必不可少的系统类。系统自动引入系统自动引入Java.langJava.lang包包