1、第二章 Java语言基础,2.1 标识符和保留字 2.2 数据类型 2.3 简单数据类型 2.4 类型转换机制 2.5 运算符 2.6 表达式 2.7 包装类 2.8 输入/输出初步,Lecture 1 review,JDK=Java Developers Kit SDK=Software Development KitJDK=Java SDK,Lecture 1 review,Java 是“结构中立”主要由于其 JVM(Java Virtual Machine)的作用,Lecture 1 review,JDK Installation,Where to download? http:/ Us
2、ually JDK we mentioned is J2SE So from the URL above, click “DOWNLOAD”, then “J2SE”,JDK Installation,Where to download? http:/ Usually JDK we mentioned is J2SE So from the URL above, click “DOWNLOAD”, then “J2SE” Select the archive you want to download JDK 5.0 Update 7 with NetBeans 5.0 JDK 5.0 Upda
3、te 6 with Java EE JDK 5.0 Update 8 Java Runtime Environment (JRE) 5.0 Update 8 J2SE 5.0 Documentation Tutorial Run the installation (You can have a look at the “installation instructions” next to the download link),JDK Installation,Browsing the installation fold Making tests. Define classes in a “ja
4、va” file How to compile? - javac How to run? - java How to set “PATH” variables? How about adding “public” keyword? Different attempts to run “class” files How to set “CLASSPATH” variables?,End Of Review & Enhancement,2.1 标识符和保留字,2.1.1 标识符 2.1.2 保留字,2.2 数据类型,2.2.1 数据类型概述 2.2.2 常量与变量 常量:final关键字 变量生存
5、期,3.1 Java语言是强类型语言语言,Java 语言强类型语言。 Java 的安全和健壮性部分来自于强类型语言。 每个变量有类型,每个表达式有类型,而且每种类型是严格定义的。 所有的数值传递,不管是直接的还是通过方法调用经由参数传过去的都要先进行类型相容性的检查。 Java编译器对所有的表达式和参数都要进行类型相容性的检查以保证类型是兼容的。 任何类型的不匹配都是错误的,在编译器完成编译以前,错误必须被改正。,3.2 简单数据类型,Java定义了8个简单(或基本)的数据类型。 使用简单数据类型可以构造数组或类的类型来使用它们。 Java是完全面向对象的,但简单数据类型不是。这样做的原因是出
6、于效率方面的考虑。 Java可移植性的要求,所有的数据类型都有一个严格的定义的范围。,Primitive Type,Size of each data type is machine independent! High-precision data types are also available.,3.3 整数类型,Java 定义了4个整数类型:byte,short,int,long。 Java 不支持无符号的整数。长整型 64 9,223,372,036,854,775,808 9,223,372,036,854,775,807 整型 32 2,147,483,648 2,147,483,
7、647 短整型 16 32,768 32,767 字节型 8 128127,3.3.1 字节型(byte),有符号的8位类型。 数的范围是 -128127。 从网络或文件处理数据流的时候,字节类型的变量特别有用。 处理未加工的二进制的数据时,它们也是有用的。 例如:byte b,c;,3.3.2 短整型(short),有符号的16位类型。 数的范围是 32,76832,767 。 可能是Java中使用得最少的类型。 例如:short s;short t;,3.3.3 整型(int),最常用的整数类型是 int。它是有符号的32位类型。 数的范围是 -2,147,483,6482,147,483
8、,647。 包含 byte,short,int 及自变量数字,在进行计算以前,所有表达式的类型被提升到 int。 整型是最通用并且有效的类型。,3.3.4 长整型(long),有符号的64位类型 数的范围是 9,223,372,036,854,775,808 9,223,372,036,854,775,807 对于那些整型不足以保存所要求的数值时是有用的。,/ Compute distance light travels using long variables. class Light public static void main(String args) int lightspeed;l
9、ong days;long seconds;long distance;/ approximate speed of light in miles per secondlightspeed = 186000;days = 1000; / specify number of days hereseconds = days * 24 * 60 * 60; / convert to secondsdistance = lightspeed * seconds; / compute distanceSystem.out.print(“In “ + days);System.out.print(“ da
10、ys light will travel about “);System.out.println(distance + “ miles.“); ,Ans:,In 1000 days light will travel about 16070400000000 miles.,3.4 浮点型(Floating-Point Types),浮点数字,也就是人们知道的实数(real)。 Java实现了标准(IEEE-754)的浮点型和运算符集。 单精度浮点型(float)及双精度(double)浮点型:DOUBLE 64 1.7E3081.7E+308float 32 3.4E0383.4E+038,3
11、.4.1 单精度浮点型(float),占用32位存储空间的单精度(single-precision)值。 比双精度更快且只占用双精度一半的空间。 当值很大或很小时,它将变得不精确。 例子:Float hightemp,lowtemp;,3.4.2 双精度型(double)浮点型,占用64位的存储空间。 数学函数,如 sin( ),cos( ),和 sqrt( )均返回双精度的值。 当你需要保持多次反复迭代的计算的精确性时,或在操作值很大的数字时,双精度型是最好的选择。,/ Compute the area of a circle. class Area public static void m
12、ain(String args) double pi,r,a;r = 10.8; / radius of circlepi = 3.1416; / pi,approximatelya = pi * r * r; / compute areaSystem.out.println(“Area of circle is “ + a); ,3.5 字符,Java 使用 Unicode 码代表字符。 Java 中的 char 类型是16位,其范围是0 65,535,没有负数的char。 有关 Unicode 码的更多信息可在网址http:/www.unicode.org上找到。,例,/ Demonstr
13、ate char data type. class CharDemo public static void main(String args) char ch1,ch2;ch1 = 88; / code for Xch2 = Y;System.out.print(“ch1 and ch2:“);System.out.println(ch1 + “ “ + ch2); ,Ans:,ch1 and ch2:X Y只要是065535的unicode范围都可以输出特定的字符,/ char variables behave like integers. class CharDemo2 public st
14、atic void main(String args) char ch1;ch1 = X;System.out.println(“ch1 contains “ + ch1);ch1+; / increment ch1,像整数一样进行运算操作System.out.println(“ch1 is now “ + ch1); ,Ans:,ch1 contains X ch1 is now Y,3.6 布尔型,表示逻辑值的简单类型。 值只能是真或假。当用方法 println ( ) 输出布尔的值时,显示的是“true“或“false“。 布尔变量的值本身就足以用来控制if语句。 关系运算符(例如)的结
15、果是布尔值。,/ Demonstrate boolean values. class BoolTest public static void main(String args) boolean b;b = false;System.out.println(“b is “ + b);b = true;System.out.println(“b is “ + b);/ a boolean value can control the if statementif(b) System.out.println(“This is executed.“);b = false;if(b) System.out
16、.println(“This is not executed.“);/ outcome of a relational operator is a boolean valueSystem.out.println(“10 9 is “ + (10 9); ,Ans:,b is false b is true This is executed. 10 9 is true,3.7 进一步研究自变量 3.7.1 整数自变量,任何一个数字的值就是一个整数自变量。 十进制(decimal,基数是10)。 八进制(octal,基数是8):前导为 0 十六进制(hexadecimal,基数是16):前导为 0
17、x 或 0X Long 自变量:后面加 l 或 L。,3.7.2 浮点自变量,标准记数法(Standard notation):由整数部分加小数点加小数部分组成。 例如2.0,3.14159,和 0.6667 科学记数法(Scientific notation):是浮点数加一表明乘以10的指定幂次的后缀,指数是紧跟E或 e 的一个十进制的数字,它可以是正值或是负值。例子如6.022E23,314159E-05,及2e+100。 Java中的浮点自变量默认是双精度。 为了指明一个浮点自变量,你必须在自变量后面加 F 或 f。,3.7.3 布尔型自变量,布尔型自变量仅仅有2个逻辑值,真或假。 Ja
18、va 中,真自变量的值不等于 1,假自变量的值也不等于 0 。,3.7.4 字符自变量,可见的 ASCII 字符都能直接被包括在单引号之内,例如 a,z,and 。 八进制,使用反斜线加3个阿拉伯数字(范围0255) 。例如,141 是字母 a。 十六进制,使用反斜线和 u(u)加4个十六进制阿拉伯数字。例如,u0061因为高位字节是零,代表ISO-Latin-1字符集中的 a。可表示Unicode范围的字符,字符转义序列,ddd 八进制字符(ddd) uxxxx 十六进制Unicode码字符 单引号 “ 双引号 反斜杠 r 回车键 n 换行 f 换页 t 水平制表符 b 退格,3.7.5 字
19、符串自变量,字符串自变量语言将一系列字符用双引号括起来。 为字符串定义的字符转义序列和八进制/十六进制记法在字符串内的工作方法一样。 例如:“Hello World“twonlines“This is in quotes“,2.4 类型转换机制,2.4.1 自动转换机制 2.4.2 强制转换机制,2.4.1 自动转换机制,当以下两个条件都满足时,则进行拓宽转换(widening conversion)。 (1)这两种类型是兼容的。 (2)目标类型数的范围比源类型的大。,2.4.2 强制转换机制,要实现两种不兼容类型之间的转换,必须进行强制类型转换。 通用格式如下: (target-type)
20、value,2.5 运算符,2.5.1 算术运算 2.5.2 位运算 2.5.3 关系运算 2.5.4 逻辑运算 2.5.5 赋值运算 2.5.6 条件运算,2.5.1 算术运算,1. 单目算术运算符,2.5.1 算术运算,2. 双目算术运算符,2.5.2 位运算,位运算符,2.5.2 位运算,1. 位逻辑运算符,2.5.2 位运算,2. 移位运算符1.算术左移运算符 通用格式:value num3. 无符号右移(逻辑右移)通用格式: valuenum,2.5.4 逻辑运算,2.5.4 逻辑运算,2.5.5 赋值运算,2.5.6 条件运算,运算符的通用格式如下:expression1 ? ex
21、pression2 : expression3,2.6 表达式,2.6.1 表达式的概念 2.6.2 运算优先级,2.6.2 运算优先级,2.6.2 运算优先级,2.7 包装类,包装类(Wrapper)是Java语言引入的一种对简单数据类型的“封装”机制,可以理解为Java语言通过包装类将简单数据封装起来,使得数据更加安全,并且提高了面向对象的程度。 所有的primitive对应都有相关的Wrapper类(如:Integer,Long ,Boolean等,2.8 输入/输出初步,2.8.1 输入/输出基本知识 2.8.2 控制台输入 2.8.3 控制台输出,2.8.1 输入/输出基本知识,Ja
22、va中流的实现是在java.io包定义的类层次结构内部的。 System.out System.in,2.8.2 控制台输入,1. 读取字符int read( ) throws IOException 2. 读取字符串String readLine( ) throws IOException,2.8.3 控制台输出,2.8.3 控制台输出,小结,变量、常量、对象是本章讨论的重点。变量与常量都属于某种类型,这些类型都是Java语言中的简单数据类型,这包括整型、浮点型、布尔型、字符型几类。在了解了数据类型及其定义在类型基础上的操作之后,引入了表达式这一重要概念。在本章的最后,还讨论了简单的输入/输出操作。,