第 2 讲 基本数据类型 与表达式

32
第 2 第 第第第第第第第第第第 标标标 Java 标标标标标标 标标 标标标标标 标标标标 标标标标标标标

Upload: nita-barron

Post on 01-Jan-2016

103 views

Category:

Documents


4 download

DESCRIPTION

第 2 讲 基本数据类型 与表达式. 标识符 Java 基本数据类型 常量、变量和赋值 类型转换 运算符与表达式. 目标. 在程序中定义合适的标识符 理解 3 种基本数据类型并能正确地使用 根据需要定义变量 正确地构造表达式. 引例. 已知三角形的三条边,计算它的周长与面积。 分析:逐步求精 , 分解 , 逐步逼近。 根据第 1 章讨论的知识,我们知道 Java 程序是由类组成的。因此可以将问题转化为“设计一个计算三角形周长与面积的类”。 先假设类已经定义好了,直接考虑如何根据需要处理数据。. 引入类. 定义主类. // 文件名 Ex2_1.java - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: 第 2 讲 基本数据类型 与表达式

第 2 讲 基本数据类型与表达式标识符

Java 基本数据类型常量、变量和赋值

类型转换运算符与表达式

Page 2: 第 2 讲 基本数据类型 与表达式

目标

•在程序中定义合适的标识符

•理解 3 种基本数据类型并能正确地使用

•根据需要定义变量

•正确地构造表达式

Page 3: 第 2 讲 基本数据类型 与表达式

引例

•已知三角形的三条边,计算它的周长与面积。 分析:逐步求精 , 分解 , 逐步逼近。 根据第 1 章讨论的知识,我们知道 Java 程序是由类

组成的。因此可以将问题转化为“设计一个计算三角形周长与面积的类”。

先假设类已经定义好了,直接考虑如何根据需要处理数据。

Page 4: 第 2 讲 基本数据类型 与表达式

// 文件名 Ex2_1.javaimport java.io.*; public class Ex2_1 { public static void main (String[] args) {

int a,b,c,p; float area;a=8; b=5; c=10;p=a+b+c; area=(float)Math.sqrt((p-a)*(p-b)*(p-c)*p/2); System.out.println("The length of three side

is"+a+","+b+","+c); System.out.println("The sides of triangle is:"+p);System.out.println("The area of triangle is:"+are

a); }}

引入类

定义主类

定义 main() 方法

声明变量 给变量 a 、 b 、 c赋值

计算周长和面积

输出结果

Page 5: 第 2 讲 基本数据类型 与表达式

标识符• 标识符可以由字母、数字、下划线( _ )及美元符号

( $ )按一定的顺序组合而成,但不能以数字开头。 average 、 table12 、 $price 等均为有效的标识符 5_step 则为非法标识符。

• Java 语言对标识符还有如下规定: 标识符的长度不限,但不宜过长。 一般遵循“见名知义”原则,即为标识符取一个能

代表其意义的名称。 标识符区分字母的大小写。如 Student 和 student

是两个不同的标识符。 标识符不能是关键字。

Page 6: 第 2 讲 基本数据类型 与表达式

关键字• 关键字是指被系统所保留使用并赋予特定意义的一些

标识符,这些关键字不能被编程人员用作标识符。它们只能按照预先定义好的方式使用,不能作为其他用途。

true 、 false 、 nullcast 、 future 、 generic 、 inner 、 operator 、 outer 、 rest 、var

Page 7: 第 2 讲 基本数据类型 与表达式

Java 基本数据类型

• Java 中的数据类型分为基本数据类型和复杂数据类型两类。

•基本数据类型包括数值型、字符型及布尔型。•复杂数据类型包括类、接口和数组等,也称为引

用类型,即通过对象的创建,获得引用类型的值。

Page 8: 第 2 讲 基本数据类型 与表达式

数值型 ( 一 )

• Java 的数值型数据又分为整数和浮点数两种类型,整数不带小数点,浮点数含有小数点。

• 整数有 byte( 字节型 ) 、 short(短整型 ) 、 int( 整型 ) 及 long( 长整型 ) 等 4种。在数值后加 l或L表示该数值是 long 类型

•浮点型数据有 float(单精度浮点型 ) 和 double(双精度浮点型 ) 两种。在数值后面加一个 F或者 f 表示 float 类型的数据

• Java默认所有的浮点值属于 double 类型的数据。•例如:

int i=3; long j=26L;double k=0.5 float m=5.0f;

Page 9: 第 2 讲 基本数据类型 与表达式

数值型 ( 二 ) 存储数据要占用一定的存储空间,不同类型的

数据所占用的存储空间不同。所有数值类型依据其占用的内存空间大小进行区分。在设计程序的过程中,程序员需要选择大小合适的变量类型,否则有可能造成内存空间的浪费。

Page 10: 第 2 讲 基本数据类型 与表达式

字符型• Java 中的字符型数据用 char 表示,它的值用 16

个 bit来存储,取值范围是 0~65536。它表示的是 Unicode码表所定义的国际化字符集中所收集的所有字符。

• Java 中的字符可以比较大小,类似于ASCII 码的大小比较。

•例如, char grade1='A', grade2='B'; • Java 用单引号来表示字符型数据。

如 'A'、 'c'、 '#'、 '&'与 '9'等等。

Page 11: 第 2 讲 基本数据类型 与表达式

布尔型

int grade;boolearn passing;if (grade>=60) passing=true;else passing=false;

• 布尔型( boolean )是一种表示逻辑值的简单数据类型。它的取值只能是常量 true或 false 这两个值中的一个,在存储器中占 8 个 bit 。通常用于程序中的一些逻辑判断从而对程序的运行进行控制。

•例如,根据成绩的及格线 60分,判断考试是否通过。

Page 12: 第 2 讲 基本数据类型 与表达式

常量•常量( constant ),顾名思义就是在程序运行

过程中其值不会被改变的量,常量也叫常数,也被称为“字面量”。在 Java 语言中,常量按其数据类型可分为整型常量、浮点型常量、字符型常量、字符串常量与布尔型常量等 5 种类型。

•整型常量和浮点型常量都属于数值型。•字符型常量是指 Unicode 字符集中的所有单个字

符,包括可以打印的字符和不可打印的控制字符。

Page 13: 第 2 讲 基本数据类型 与表达式

字符常量•字符型常量的表示形式有四种:

(1) 以单引号括起来的单个字符,如‘ a’。(2) 以单引号括起来的“ \”加三位八进制数,形为 '\ddd',

其中 d 可以是 0~7中的任一个数,如 '\141'表示字符 'a'。其中 ddd 的取值范围只能在八进制数的 000~777之间,因而它不能表示出Unicode 字符集中的全部字符。

(3) 以单引号括起来的“ \u”加四位十六进制数,可以表示出Unicode 字符集中的所有字符。

(4) 对于那些不能被直接包括的字符以及一些控制字符,如‘ \\’、‘ \’’。

Page 14: 第 2 讲 基本数据类型 与表达式

final 数据类型 常量名称 =常量值;

字符串常量•字符串常量就是用双引号括起来的由零到多个

字符组成的字符序列。如“ Hello World!” ,“ I am a programmer.\n” 等。字符常量的八进制、十六进制表示法和转义序列在字符串中同样可用。

•布尔型常量只有两个值, true 和 false 。•常量定义格式:

Page 15: 第 2 讲 基本数据类型 与表达式

public class Ex2_2{ public static void main(String args[]) { final int Day=30; final double Pay=45.6; final String Str="It is begin ! "; double total; total=Day*Pay; System.out.println(Str); System.out.println("*_________________________*"); System.out.println("Day="+Day+"\tPay="+Pay); System.out.println("total="+total) ; }}

定义了三个常量定义了三个常量

常量举例例 2.2 一套房子每天的租金是 45.6 元,如果租 30 天,试编程计算应付房租。

Page 16: 第 2 讲 基本数据类型 与表达式

变量•变量( variables )是 Java 程序中的一个基本存储单元,是在程序运行过程中其值可以改变的量。

•一个变量蕴含有三个含义:( 1 )变量的名称。变量的名称简称变量名,变量名是用户自己定义的标识符,它表明了变量的存在性和唯一性;

( 2 )变量的属性。即变量的数据类型;( 3 )变量的值。是指存放在变量名所标记的存储单元中

的数据。•例如, int math=78,english=80;

Page 17: 第 2 讲 基本数据类型 与表达式

// 字符型变量和布尔型变量的定义及赋值public class Ex2_4{ public static void main(String args[]) { char c1='a'; char c2='\141'; char c3='\u0061'; char c4='\\'; boolean f1=true,f2; f2=4<3; System.out.println(“ 字符型变量的值 :c1=” +c1

+ “c2=” +c2+ “c3=” +c3); System.out.println(“ 字符型变量的值 :c4=”+c4); System.out.println(“ 布尔型变量的值: f1=”

+f1+“f2=”+f2); } }

程序中定义了四个字符型变量,用关键字 char 定义字符型变量,其中 c1 、 c2 、 c3 的定义分别使用字符型的三种表示方法, c1 以单引号括起来, c2 以十六进制表示, c3 以 Unicode 编码表示,运行结果均是字符 'a' 。c4 用转义字符输出 '\' 。布尔型变量 f1 定义时赋值为 true ,f2 赋值为 4<3 ,这是一个比较表达式,结果为 false 。

Page 18: 第 2 讲 基本数据类型 与表达式

•赋值语句的一般形式为:

•例子:float value, price; value=0.0f; //value初值为 0price=0.5f; value=12*price;

变量名 = 表达式; 赋值语句执行的过程中,先计算出表达式的值,然后把该值存储到赋值运算符( = )左边的变量所代表的存储单元,并覆盖其原有的值。

赋值语句

Page 19: 第 2 讲 基本数据类型 与表达式

类型转换——自动转换

•自动转换是在程序运行过程中不需人为干预而自动进行的从一种数据类型到另一种数据类型的转换。有两种类型:

赋值转换 两种数据类型必须是兼容的,并且目标数据类型

的取值范围比源数据类型的取值范围大。 表达式中的自动转换

低 --------------------------------------------> 高byte,short,char->int->long->float->double

int a;float b;double c; c=a+b+c;

short a,b;a=50;b=a/2;

Page 20: 第 2 讲 基本数据类型 与表达式

•对于不能自动进行的类型转换,就要强制类型转换。

•强制类型转换的一般格式为:

其中,目标数据类型是指要将被转换数据转换成的数据类型;被转换数据可以是变量、表达式等。

如要把 double 型变量 money 的值转换成 int型,形式为:( int ) money 。

(目标数据类型)被转换数据

类型转换——强制类型转换

Page 21: 第 2 讲 基本数据类型 与表达式

// 从键盘读入一个字符,并输出这个字符。import java.io.*;public class Ex2_6 { public static void main(String args[]) { char ch=‘ ’; System.out.println("Input a interger or character:"); try { ch=(char)System.in.read(); // 从键盘中读入一个字符 } catch (IOException e){ } System.out.println("The input is \’"+ch+"\’"); } }

程序定义了一个字符型变量 ch ,接收输入的字符。System.in.read() 表示从键盘输入流中读入一个字节并返回它的值,返回值是 0 到 255 的 int 值,需要进行异常处理。由于返回值为 int 型,因此要输出这个字符,须强制转换为 char 型。程序中用了 try-catch 语句进行异常处理。

Page 22: 第 2 讲 基本数据类型 与表达式

运算符与表达式•一个常量或一个变量是最简单的表达式。•一般的表达式是指由数据和运算符连接在一起的

符合 Java 语法规则的式子。如 a=1 、 a+b-c*d 、a<b 等。这里的数据是常量或变量,表达式中数据的连接符 + 、 - 、 * 、 = 及 <就是运算符。

• Java 的运算符主要包括算术运算符、关系运算符、逻辑运算符等, Java 表达式主要有算术表达式、关系表达式、逻辑表达式、赋值表达式等。

Page 23: 第 2 讲 基本数据类型 与表达式

算术运算符和算术表达式•单目运算符是指只对一个操作数运算的运算符。包括:

++ (自增), a++ 、 a-- :表示先使用 a ,再使 a增(减) 1;

-- (自减), ++a 、 --a :表示先使 a增(减) 1 ,再使用 a;

- (取反), a=1 , b=-a (即 b=-1 )•双目运算符是指算术运算符的左、右两边均要有操作数。

包括: +( 和运算 ) 、 -(差运算 ) 、 *( 积运算 ) 、 /(除运算 ) 及%( 求余运算 ) 。

• 算术运算符连接的操作数为数值型。由算术运算符连接的式子称为算术表达式。

Page 24: 第 2 讲 基本数据类型 与表达式

public class Ex2_7 { public static void main(String args[]) { char a=97; int b,c=14, f=3; float d=0.6f, e, g; a++; b=c/f; c=c%fc=c%f;; d++; e=f*d; g=e%f;g=e%f; System.out.println("a="+a); System.out.println("b="+b); System.out.println("c="+c); System.out.println("d="+d); System.out.println("e="+e); System.out.println("g="+g); } }

算术运算示例

Page 25: 第 2 讲 基本数据类型 与表达式

关系运算符和关系表达式

•关系运算符:用来比较两个值之间的大小关系。关系运算的结果是布尔( boolean )型,为真( true )或假( false )。

• Java 中关系运算符有 6种: ==、 != 、 >、 <、 >= 、 <= 例如,

int a=5, b=8;boolean c=a>b;

则结果 c=false 。

Page 26: 第 2 讲 基本数据类型 与表达式

逻辑运算符和逻辑表达式

• Java 中共有 6个逻辑运算符:!、 &、 ^、 |、 &&、 || 。• 如果它们的操作数是布尔类型的数据,其结果也是布尔类

型。• &&和 ||也被称为“短路逻辑运算符”,在运算过程中会产生“短路效应”:

a&&b ,当 a 为 false时不再判断 b ,直接判断 a&&b的值为 false;

a||b ,当 a 为 true时不再判断 b ,直接判定 a||b 的值为 true 。

•另外,当&、 ^和 |的操作数为整数及字符时,它们会作为位运算符进行位运算。

Page 27: 第 2 讲 基本数据类型 与表达式

public class Ex2_8 { public static void main(String args[]) { int a=3,b=8;  boolean c,d,e=false,f1,f2,g=true; c=a>b; d=c&&(e=a<b);   //c 为 false , e 值未被改变   f1=g||(e=a<b);   //g 为 true , e 值未被改变  f2=f1|(g=a>b);   //g 值被改变   System.out.println("a="+a); System.out.println("b="+b); System.out.println("a>b="+c); System.out.println("c&&(e=a<b)="+d); System.out.println("e="+e); System.out.println("f="+f); System.out.println("g="+g); }}

关系表达式和逻辑表达式举例

Page 28: 第 2 讲 基本数据类型 与表达式

• Java 中,有一种特别的三元运算符构成的条件表达式。使用格式如下:

• 其中的 ?和 : 称为三元运算符,它们必须一同出现,此运算符需要三个操作数。其中语句 1 和语句 2 可以是复合语句。意思是,当条件表达式值为 true时,执行语句 1 ,否则执行语句 2 。

例如,( a>b ) ?a: (c>d)?c: d 其中 a=5 , b=8 , c=1 , d=9。根据右结合性,应先计算 (c>d)?c:d 。因为 1>9为 false,故取 d=9为该表达式的结果。再计算( a>b ) ?a:d ,结果为 9。

条件表达式 ? 语句 1 : 语句 2

三元运算符

Page 29: 第 2 讲 基本数据类型 与表达式

位运算符• Java 中可以使用位运算直接对整数类型和字符类

型的数据的位进行操作。• 包括: ~、 <<、 >>、 >>>、 &、 ^、 |。• 计算机中的数是以补码表示的。正数的补码就是其

原码,负数的补码是其对应的正数按位取反( 1 变为 0 , 0 变为 1 )后再加 1 。

Page 30: 第 2 讲 基本数据类型 与表达式

赋值运算符和赋值表达式• 赋值运算符: = 。例如, a=b就是把变量 b 的值赋给

变量 a ,则 b 与 a 的值相同, a 原来的值丢弃。•扩展的赋值运算符

使程序表达简练,提高程序的编译速度。 就是把赋值运算符与算术运算符、逻辑运算符或位运算符中的双目运算符结合起来而形成的赋值运算符。

•扩展赋值运算符 :+= 、 -= 、 *= 、 /= 、%= 、 &= 、 ^= 、 |= 、 <<= 、 >>= 、 >>>=

Page 31: 第 2 讲 基本数据类型 与表达式

运算符优先级在一个表达式中可能有多个数据与运算符,那么,

计算这个表达式时应该先计算哪些后计算哪些呢?这就要为运算符规定它们的优先级。•Java运算符的运算级别共分为 15级,其中 1

级优先级最高, 15级最低。 3*18+ 4/2 (运算结果为 56 ) 3* ( 18+ 4) /2 (运算结果为 33 )

因为括号级别最高,先计算括号里的数据,再按照算术运算的规则,相同级别的先左后右,先乘以 3再除以 2 。

Page 32: 第 2 讲 基本数据类型 与表达式

作业和实验

•作业 P41-5 , 6, 7(2)(3) P42-8 , 9, 10

•实验 名称: Java 的基本数据类型和表达式 目的

1. 熟悉 JCreator环境的使用。2. 能正确定义、使用变量和表达式。