第1章Java语言基础知识_第1页
第1章Java语言基础知识_第2页
第1章Java语言基础知识_第3页
第1章Java语言基础知识_第4页
第1章Java语言基础知识_第5页
已阅读5页,还剩111页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、Java语言程序设计(第2版)第 1 章Java 语言基础知识目录1.1 Java语言与面向对象的程序设计1.2 Java语言特点1.3 Java程序概述1.4 基本数据类型与表达式1.5 数组的概念1.6 数组的创建和引用1.7 本章小结21.1 Java语言与面向对象的程序设计 Java语言是一个面向对象的程序设计语言。 除了面向对象的特点以外,Java语言还在安全性、平台无关性、支持多线程、内存管理等许多方面具有卓越的优点。31.1.1 面向对象的程序设计思想计算机程序设计 对问题进行抽象 用计算机语言表述,利用机器求解41.1 Java语言与面向对象的程序设计1.1.1 面向对象的程序

2、设计思想(续)程序设计语言发展的历程 机器语言 汇编语言 高级语言 面向对象的语言51.1 Java语言与面向对象的程序设计1.1.1 面向对象的程序设计思想(续)面向对象的思想 将客观事物看作具有状态和行为的对象,通过抽象找出同一类对象的共同状态和行为,构成类。61.1 Java语言与面向对象的程序设计1.1.1 面向对象的程序设计思想(续) 例: 构建一个汽车类,需要提取所有汽车对象的共有的状态和行为。将状态用变量表示,行为用方法表示。class Car int color_number; int door_number; int speed; void brake() void spee

3、dUp() ; void slowDown() ; 71.1 Java语言与面向对象的程序设计1.1.1 面向对象的程序设计思想(续)面向对象技术给软件发展带来的益处 可重用性 可靠性 面向对象语言的基本特征 抽象和封装 继承性 多态性81.1 Java语言与面向对象的程序设计1.2 Java语言的特点 1990 sun 启动启动 绿色计划绿色计划 1992 创建创建 oak语言语言 java 1994 gosling 参加参加 硅谷大会硅谷大会 演示演示java功能功能 震震惊世界惊世界 1995 sun 正式发布正式发布java第一个版本,目前最新第一个版本,目前最新的是的是jdk7.0J

4、ames GoslingWikipedia1.2 Java语言的特点面向对象安全性 Java不支持指针 Java的内部安全措施平台无关性 编译后的字节码对应于Java虚拟机,因此可在不同平台上运行多线程 Java是第一个在语言级提供内置多线程支持的高级语言内存管理 Java对内存自动进行管理并进行垃圾回收111.1 Java语言与面向对象的程序设计1.2 Java语言的特点(续)Java 语言的优点 易于学习 代码效率高 代码质量高 开发程序快 体系结构中立,纯Java程序不依赖于平台 一处编写,各处运行 软件易于发布121.1 Java语言与面向对象的程序设计1.2 Java语言的特点(续)

5、Java与C+的区别 Java中没有#include 和#define 等预处理功能,用import语来句包含其它类和包; Java中没有structure,union及typedef; Java中没有不属于类成员的函数,没有指针和多重继承,Java只支持单重继承; Java中禁用goto,但goto还是保留的关键字; Java中没有操作符重载; Java中没有全局变量,可以在类中定义公用、静态的数据成员实现相同功能;.131.1 Java语言与面向对象的程序设计1.3 Java程序概述Java 开发环境Application 举例141.3.1 Java开发环境Java程序编译执行的过程15

6、1.3 Java程序概述1.3.1 Java开发环境(续)一次编写,各处运行161.3 Java程序概述1.3.1 Java开发环境(续)Java 平台Java APIs (应用程序接口) 经过编译的,可在程序中使用的Java代码标准库。Java VM(虚拟机) Java 程序由Java虚拟机程序执行(或解释执行)。17Java 程序Java APIsJava 虚拟机计算机系统1.3 Java程序概述1.3.1 Java开发环境(续)Java 平台Java2 SDK(Software Development Kit) Standard Edition (J2SE) Enterprise Edi

7、tion (J2EE) Mobile Edition (J2ME)181.3 Java程序概述Java 技术体系技术体系J ava S E 以Web为中心的客户端或服务器端的软件开发以前称为 JDK 1.X Java SE 的实现: Java Software Development Kit (SDK), Standard Edition + Java Runtime Environment, Standard EditionJava ME针对消费类的电子设备如手机、数字置顶盒、汽车导航系统等。语言精简、运行环境高度优化。Java EE 开发企业级和服务器端的应用。 Java SE+Enter

8、price JavaBeans(EJB),Java Servlets API + Java Server Pages(JSP).Java EE Application Model Java 平台平台JavaJava的特征的特征SunSun在在JAVA“JAVA“白皮书白皮书”中指出:中指出: JAVAJAVA是一种是一种“简单、面向对象、分布简单、面向对象、分布式、解释型、健壮、安全、体系结构中立、式、解释型、健壮、安全、体系结构中立、可移植、高性能和动态可移植、高性能和动态”的编程语言的编程语言对对C+进行成功改造进行成功改造 去掉指针,取消多重继承和运算符重载去掉指针,取消多重继承和运算符

9、重载 设立自动内存回收设立自动内存回收JavaJava特征特征- -简单性简单性 语法和语义都比较单纯,容易学习和使用语法和语义都比较单纯,容易学习和使用提供大量功能丰富的可重用类库简化了提供大量功能丰富的可重用类库简化了 编程工作量编程工作量JavaJava特征特征- -面向对象面向对象 Java Java 是最纯洁的面向对象语言,对面向是最纯洁的面向对象语言,对面向对象方法学的支持也最全面对象方法学的支持也最全面: :JAVAJAVA对象有模块化性质和信息隐藏能力,对象有模块化性质和信息隐藏能力, 满足面向对象的封装要求;满足面向对象的封装要求;支持继承;支持继承;通过抽象类与接口通过抽象

10、类与接口支持多态支持多态JavaJava特征特征- -半编译,半解释半编译,半解释JavaJava特征特征- -半编译,半解释半编译,半解释编译器编译编译器编译JAVA源程序源程序字节码字节码解释器解释执行解释器解释执行优点优点: 兼具编译执行的效率优势和解释执行的灵活性;兼具编译执行的效率优势和解释执行的灵活性; 提高了应用程序的可移植性:源程序、中间代码提高了应用程序的可移植性:源程序、中间代码JavaJava特征特征- -可移植性可移植性.JAVA源程序源程序JAVA编译器编译器(Pentium).(SPARC)JAVA字节码字节码JAVA解释器解释器.(Pentium).(SPARC)

11、“一次编程,到处运行一次编程,到处运行”- WORA可移植性源于两方面:可移植性源于两方面: Java的半编译、半解释的特征的半编译、半解释的特征 Java采用标准的独立于硬件平台的数据类型采用标准的独立于硬件平台的数据类型JavaJava特征特征- -可移植性可移植性JavaJava特征特征- -安全性安全性在语言和运行环境中引入了多级安全措施:在语言和运行环境中引入了多级安全措施: Java的内存分配和引用模型对于程序员透明,的内存分配和引用模型对于程序员透明, 完全由底层的运行系统控制;完全由底层的运行系统控制; 内存布局与内存布局与C、 C+不同,不是由编译器决定,不同,不是由编译器决

12、定, 而是运行系统根据所在的硬件平台的特性决定;而是运行系统根据所在的硬件平台的特性决定; 取消了取消了C、C+的指针,的指针,JAVA编译器通过符号编译器通过符号 指针来引用内存,由指针来引用内存,由JAVA运行系统在运行时将运行系统在运行时将 符号指针具体解释为实际的内存地址。符号指针具体解释为实际的内存地址。Java特征特征- 多线程多线程 JAVA在在语言级语言级嵌入对并发的支持功能,嵌入对并发的支持功能, 具体机制就是多线程。具体机制就是多线程。 线程是比进程更小、更线程是比进程更小、更 经济的并发执行单位,不拥有单独的内存空间。经济的并发执行单位,不拥有单独的内存空间。 JAVA中

13、线程的同步采用中线程的同步采用C.A.R.Hoare的临界区的临界区 保护规则。保护规则。 JAVA线程执行中被映射到实际的操作系统线程线程执行中被映射到实际的操作系统线程。JavaJava特征特征- -动态特性动态特性 JAVA程序的基本组成单元程序的基本组成单元类是运行时动态类是运行时动态装载装载 的。使的。使JAVA可以动态地维护应用系统及可以动态地维护应用系统及其支持类之间的一致性。其支持类之间的一致性。 Java编译生成的字节码与机器代码十分接近。提供即时编译等措施。Java特征-高性能JAVA的语法机制概述的语法机制概述与与C+一致的语法机制:一致的语法机制: 数据类型、表达式、程

14、序流控制、结构化数据类型、表达式、程序流控制、结构化 异常处理等;异常处理等;与与C+不同的语法机制:不同的语法机制: 类、接口(类、接口(Interface)、程序包、程序包(Package)、 自动内存回收以及多线程。自动内存回收以及多线程。JAVA与与C+不同的语法机制不同的语法机制类:类: 最重要、最基本的语法设施,类的定义与继承与最重要、最基本的语法设施,类的定义与继承与 C+类似,主要区别:类似,主要区别: JAVA不允许多重继承,多重继承必须通过接口实现。不允许多重继承,多重继承必须通过接口实现。 JAVA引进了引进了abstract 和和final修饰词。修饰词。 带带abst

15、ract的类称为抽象类,只能作为父类使用,的类称为抽象类,只能作为父类使用, 不能直接产生实例对象。不能直接产生实例对象。 带带final的类不能用作父类被继承,的类不能用作父类被继承, 带带final的属性的属性在定义式必须赋初值并称为常量,带在定义式必须赋初值并称为常量,带final的方法将的方法将 禁止子类禁止子类(Overriding)。JAVA与与C+不同的语法机制不同的语法机制接口接口 是一种抽象类,其中只能出现静态常量或抽象方法定义。是一种抽象类,其中只能出现静态常量或抽象方法定义。 主要目的是实现多重继承功能,避免主要目的是实现多重继承功能,避免C+在多重继承在多重继承 语义上

16、的复杂性。语义上的复杂性。 一个一个JAVA类可以实现(继承)多个接口。类可以实现(继承)多个接口。程序包程序包 是一些相关类或接口的集合。是一些相关类或接口的集合。 JAVA提供包括可重用类标准程序包,用户可自提供包括可重用类标准程序包,用户可自 定义程序包。定义程序包。 通过通过 import 语句将程序包引入应用程序。语句将程序包引入应用程序。JAVA与与C+不同的语法机制不同的语法机制自动内存回收自动内存回收 JAVA取消了指针类型,所有动态内存请求均取消了指针类型,所有动态内存请求均 通过通过new运算符,并且得到的不是指针而是引用。运算符,并且得到的不是指针而是引用。 系统进行内存

17、回收。系统进行内存回收。JAVA与与C+不同的语法机制不同的语法机制多线程多线程 依赖操作系统提供的线程管理的依赖操作系统提供的线程管理的API:与平台绑定:与平台绑定 语言级支持多线程:忽略操作系统多线程机制的差异,语言级支持多线程:忽略操作系统多线程机制的差异, 软件具有更好的可靠性和可移植性。软件具有更好的可靠性和可移植性。JAVA运行系统运行系统引入运行系统的必要性引入运行系统的必要性: 将字节码转化为本机代码;将字节码转化为本机代码; 类的装载与符号的消解;类的装载与符号的消解; 控制执行代码。控制执行代码。 运行环境的种类:运行环境的种类:JAVA Application - JA

18、VA解释器解释器JAVA Applet- JAVA兼容的兼容的Web浏览器。浏览器。JAVA运行系统的构成运行系统的构成类装配器类装配器字节码验证器字节码验证器解释器解释器代码生成器代码生成器运行支持库运行支持库JAVA程序运行过程程序运行过程Hello.javajavac Hello.javaHello.class网络网络类装配器类装配器字节码验证器字节码验证器解释器解释器代码生成器代码生成器运行支持库运行支持库本地系统本地系统编译编译运行运行执行字节码的过程代码的装入代码的装入代码的验证代码的验证代码的执行代码的执行:解释方式、即时编译解释方式、即时编译JIT方式方式JAVA虚拟机虚拟机

19、JVM的定义:的定义: An imaginary machine that is implemented by emulating it in software on a real machine. Code for the Java Virtual Machine is stored in .class files.JVM规范定义了一组抽象的逻辑组件,包括:规范定义了一组抽象的逻辑组件,包括:指令集;指令集;寄存器组:程序计数器、栈顶指针等;寄存器组:程序计数器、栈顶指针等;栈结构:提供各种参数等;栈结构:提供各种参数等;存储区:存放字节码的方法代码、符号表存储区:存放字节码的方法代码、符号

20、表;垃圾收集器垃圾收集器JVM组成部分组成部分JVM与与 JAVA运行系统运行系统 JAVA运行系统是各供应商对运行系统是各供应商对JVM的具体实现,的具体实现,JVM需需要针对不同的软硬件平台做专门的实现要针对不同的软硬件平台做专门的实现 JVM的意义:的意义: 保证不同平台上的保证不同平台上的JAVA运行系统功能统一运行系统功能统一Java应用程序应用程序Java虚拟机虚拟机UNIX LinuxSPARC Java应用程序应用程序Java虚拟机虚拟机WindowsX86 应用程序层应用程序层Java平台层平台层操作系统层操作系统层硬件层硬件层对运行系统的设计与实现的要求:对运行系统的设计与

21、实现的要求: 必须支持必须支持SUN的的.class文件结构文件结构 必须支持字节码定义必须支持字节码定义 必须支持必须支持JVM规范规范使使Java运行系统功能是统一的,运行系统功能是统一的,并且只能执行统一格式的字节码并且只能执行统一格式的字节码.JVM与与 JAVA运行系统运行系统 电子商务电子商务远程教育远程教育企业综合信息服务企业综合信息服务分布式计算分布式计算(移动计算)移动计算)嵌入式应用嵌入式应用JAVA应用应用两种应用程序两种应用程序Java application: 编译器编译编译器编译运行运行Java applet: 编译器编译编译器编译编写编写HTML文件把文件把App

22、let嵌入其中嵌入其中浏览器中运行浏览器中运行类库类库API Java API是是SUN提供的用提供的用Java语言开发的类集合。语言开发的类集合。 Java API包括几十个包,常用的有:包括几十个包,常用的有:java.lang, java.io, java.util, , java.awt, java.applet等。等。关键性术语关键性术语Java核心类包举例核心类包举例 Java.lang JAVA语言的核心类组成,包括了基本数据类型语言的核心类组成,包括了基本数据类型 和出错处理方法等。和出错处理方法等。 Java.io JAVA语言的标准语言的标准I/O库库 Java.util

23、工具类,如工具类,如Date等。等。 J 实现网络操作。实现网络操作。 Java.awt-(Abstract Window Toolkit)创建用户界面。创建用户界面。 Java.applet 支持支持Applet开发。开发。Java应用程序举例应用程序举例HelloWorldApp.java:Public class HelloWorldApppublic static void main( String args )System.out.println(“Hello World!”);Java 程序编写、编译过程程序编写、编译过程 main声明声明- Java程序入口点程序入口点格式格式p

24、ublic static void main(String args) 源文件的名字与源文件的名字与main()方法所在的类名相同,方法所在的类名相同,扩展名必须是扩展名必须是 .java。编译编译javac HelloWordApp.java生成生成HelloWorldApp.class运行运行java HelloWorldAppJDK1.6的安装运行JDK1.6中的安装程序改变环境变量:JAVA_HOME c:javajdk1.6.0_13PATHc:javajdk1.6.0_13bin CLASSPATH = .;c:javajdk1.6.0_13libdt.jar; c:javajdk

25、1.6.0_13libtools.jar;Java常用开发环境常用开发环境 JDK (V1. 2 V1.3.0, V1.3.1, V1.4.2 , V1.5.0,V1.6, V1.7) Eclipse:开源的开源的Java开发集成环境开发集成环境 Netbeans : Sun推出的集成开发环境推出的集成开发环境 Jbuilder:图形化,客户端与服务器端:图形化,客户端与服务器端 JCreator :轻型:轻型Java开发环境开发环境1.3.1 Java开发环境(续)J2SEJ2SDK的核心部分 开发工具 编译器 调试器 文档制作工具 运行环境 Java 虚拟机 组成Java 2 平台API的

26、类。 帮助文档 附加库 Java程序(Applications) 的演示 561.3 Java程序概述1.3.1 Java开发环境(续)Java开发工具包括 Javac:Java编译器,用来将java程序编译成 Bytecode。 Java:Java解释器,执行已经转换成Bytecode的java应用程序。 Jdb:Java调试器, 用来调试java程序。 Javap:反编译,将类文件还原回方法和变量。 Javadoc:文档生成器,创建HTML文件。 Appletviwer:Applet解释器, 用来解释已经转换成Bytecode的java小应用程序。571.3 Java程序概述1.3.1 J

27、ava开发环境(续)环境安装 下载地址 http:/ 下载文件 安装581.3 Java程序概述1.3.1 Java开发环境(续)JDK后产生如下目录: bin目录:Java开发工具,包括Java编译器、解释器等 demo目录:一些实例程序 lib目录:Java开发类库 jre目录: Java运行环境,包括Java虚拟机、运行类库等 591.3 Java程序概述1.3.1 Java开发环境(续)几种集成开发环境 netBeans Jcreator LE Borland Jbuilder Sun ONE Studio Eclipse601.3 Java程序概述1.3.2 Application举

28、例Application 运行在客户端Java虚拟机上的Java程序 可在客户端机器中读写 可使用自己的主窗口、标题栏和菜单 程序可大可小 能够以命令行方式运行 主类必须有一个主方法main(),作为程序运行的入口。611.3 Java程序概述1.4 基本数据类型与表达式变量与常量基本数据类型表达式与运算符类型转换621.4.1 变量与常量变量 一个由标识符命名的项 每个变量都有类型, 例如 int 类型或 Object类型, 变量还有作用域. 变量的值可以被改变. 常量 常量一旦被初始化以后就不可改变。631.4 基本数据类型与表达式1.4.1 变量与常量(续)标识符 标识符是一个名称,与内

29、存中的某个位置(地址)相对应 标识符的第一个字符必须是下列字符之一: 大写字母大写字母 (A-Z) 小写字母小写字母 (a-z) 下划线(_) 美元符号 ($) 标识符的第二个字符及后继字符必须是: 上述列表中的任意字符 数字字符 (0-9) 641.4 基本数据类型与表达式1.4.2 基本数据类型 整数类型,浮点类型,布尔类型,字符类型整数 byte 8 bits short 16 bits int 32 bits long 64 char 16 (注意,注意,C C+中占一个字节)中占一个字节)可以存可以存放汉字放汉字, char test1 =中中; 651.4 基本数据类型与表达式1.

30、4.2 基本数据类型(续)整数运算 比较运算符(关系运算符) 算术比较运算符 , , and = 算术相等比较运算符 = and != 算术运算符 一元运算符 + 和 - +,- *, /, 和 % (取余 ) 自增/自减运算符 +/- 移位运算符 , and 位运算符 , &, |, and 条件运算符 ? : 类型转换运算符 字符串连接运算符 + 661.4 基本数据类型与表达式1.4.2 基本数据类型(续) 浮点数 float 单精度浮点数 32-bit - m2e m2e m 是一个小于 224的正整数 e 是一个介于 -149和104之间(含)的整数 double 双精度浮点

31、数 64-bit - m2e m2e m是一个小于 253的正整数 e是一个介于 -1045 和 1000之间(含)的整数数据不能从高精度到低精度的转换 Byteshortintlongfloatdouble float a=3.4;是过不去的,在java中小数默认是double(双精度)的 应该写成是float a=3.4f; 不过可以强制转换:int a=(int)1.2; int b=(int)1.9671.4 基本数据类型与表达式1.4.2 基本数据类型(续) int a=1;int b=a+1.2; 这句话有错吗1.4.2 基本数据类型(续) 改成int a=1;double b=a

32、+1.2; 或者 int a=1;float b=a+1.2f; 就解决了1.4.2 基本数据类型(续)浮点运算 比较运算符(关系运算符) 算术比较运算符 , , and = 算术相等比较运算符 = and != 算术运算符 一元运算符 + 和 - +,- *, /, 和 % (取余 ) 自增/自减运算符 +/- 移位运算符 , and 位运算符 , &, |, and 条件运算符 ? : 类型转换运算符 字符串连接运算符 + 701.4 基本数据类型与表达式1.4.2 基本数据类型(续)布尔类型和布尔值 布尔类型表示一个逻辑量, 有两个取值: true和false 例如:boolea

33、n is_salaried;boolean is_hourly;is_salaried = true; /将 is_salaried设置为trueis_hourly = false; /将is_hourly设置为false 711.4 基本数据类型与表达式1.4.2 基本数据类型(续)布尔运算符 关系运算符 = and != 逻辑“非”运算符 ! 逻辑运算符 &, , 和 | 条件“与” 和条件“或”运算符 & 和 | 条件运算符 ? : 字符串连接运算符 +721.4 基本数据类型与表达式1.4.2 基本数据类型(续)String字符串 String 是一个类 String类

34、JDK标准类集合中的一部分String animal = walrus;731.4 基本数据类型与表达式1.4.2 基本数据类型(续)文字量 直接出现在程序中并被编译器直接使用的值. 整数文字量 十进制如: 15 十六进制如: 0 xff 八进制如: 0377741.4 基本数据类型与表达式1.4.2 基本数据类型(续) 浮点文字量 一个浮点文字量包括以下几个部分 整数部分 小数点 小数部分 指数 (e or E) 类型后缀 (f or F for float, d or D for double) float 类型文字量举例: 1e 1f 2.f .3f 0f 3.1 4f 6.022137

35、e+23f double 类型文字量举例: 1e1 2. .3 0.0 3.1 4 1e-9d 1e137 布尔文字量 布尔类型只有两个值,由文字量 true 和 false表示751.4 基本数据类型与表达式1.4.2 基本数据类型(续) 字符文字量 一个字符文字量表示为一个字符或者一个转义序列,用单引号括起 例如 a Z 格式字符 b backspace BS t horizontal tab HT r carriage return CR double quote single quote backslash 761.4 基本数据类型与表达式1.4.2 基本数据类型(续) 字符串文字量

36、由零个或多个字符组成,以双引号括起 每一个字符都可以用转义序列来表示 例如: / 空字符串 / 只包含 的字符串 This is a string / 有16个字符的字符串 This is a + string /字符串常量表达式,由两个字符串常量组成771.4 基本数据类型与表达式1.4.2 基本数据类型(续)78public class ex1_1 public static void main(String args ) final int PRICE=30; final double PI = 3.141592654; int num,total; double v,r,h; num=

37、10; total=num*PRICE; System.out.println(total); r=2.5; h=3.2; v=PI*r*r*h; System.out.println(v); 变量声明变量声明变量变量文字量文字量常量声明常量声明1.4 基本数据类型与表达式1.4.3 表达式与运算符79表达式是由一系列变量、运算符、方法调用构成的,表达式可以计算出一个值来程序中的很多工作是通过计算表达式的值来完成的。 有时需要的是表达式的副作用,例如赋值表达式将数值赋给变量 更多时候起作用的是表达式的值,这个值可以用作方法的参数,或更大的表达式的操作数,或者影响语句的执行顺序1.4 基本数据类

38、型与表达式1.4.3 表达式与运算符(续)80算术运算符 运算符 + 和 -例如: i+; -j;注意 前+和后+的区别,举例 一元运算符 + 和 加法运算符 + 和 - 乘法运算符 *, /, 和 % 1.4 基本数据类型与表达式1.4.3 表达式与运算符(续)81赋值运算符 简单赋值运算符 = 复合赋值运算符*= /= %= += -= = = &= = |= 左边空出的位以0填充E1 op= E2 等 效于 E1 = (T)(E1) op (E2), 其中T 是 E1的类型1.4 基本数据类型与表达式1.4.3 表达式与运算符(续)82关系运算符 关系表达式的类型永远是布尔类型(

39、bool). 算术比较运算符 , , and = 类型比较运算符 instanceof 例如: e instanceof Point /Point 是一个类1.4 基本数据类型与表达式1.4.3 表达式与运算符(续)83相等关系运算符 数字相等运算符 = , != 布尔相等运算符 = , != 引用相等运算符 = , !=1.4 基本数据类型与表达式1.4.3 表达式与运算符(续)84逻辑运算符 “与”运算 & 如果两个操作数的值都为true运算结果为true; 否则,结果为false. “或”运算 | 如果两个操作数的值都为false运算结果为false;否则,结果true “非”运

40、算符! 操作数的类型必须是布尔类型 如果操作数的结果为 false,则表达式的结果为 true ,如果操作数的结果为 true则表达式的结果为 false1.4 基本数据类型与表达式1.4.3 表达式与运算符(续)85条件运算符 (表达式1?表达式2:表达式3) 首先计算表达式1 如果表达式1的值为 true, 则选择表达式2的值 如果表达式1的值为 false,则选择表达式3的值1.4 基本数据类型与表达式1.4.4 类型转换86每个表达式都有类型如果表达式的类型对于上下文不合适 有时可能会导致编译错误 有时语言会进行隐含类型转换1.4 基本数据类型与表达式1.4.4 类型转换(续)87 扩

41、展转换 byte, char, short, int, long, float, double 从一种整数类型到另一种整数类型,或者从float到double的转换不损失任何信息 从整数类形向float或double转换,会损失精度 窄化转换 double, float, long, int, short, byte,char 窄化转换可能会丢失信息1.4 基本数据类型与表达式1.4.4 类型转换(续)88赋值转换 将表达式类型转换为制定变量的类型方法调用转换 适用于方法或构造方法调用中的每一个参数强制转换 将一个表达式转换为指定的类型 例如 (float)5.0字符串转换 任何类型(包括nu

42、ll类型)都可以转换为字符串类型 只当一个操作数是String类型时,适用于+运算符的操作数1.4 基本数据类型与表达式1.4.4 类型转换(续)89 数字提升 将算术运算符的操作数转换为共同类型 一元数字提升一元数字提升 如果一个操作数是 byte, short, 或 char类型, 一元数字提升通过扩展转换将它转换为int类型 二元数字提升二元数字提升 二元数字提升作用在特定操作符的操作数上*, /, %, +, -, , , =, =, !=, &, , | and?: 在必要时使用扩展转换来转换操作数类型1.4 基本数据类型与表达式标准输入输出简介90 标准输入流 System

43、.in 标准输出流 System.out 例如 System.out.println(Hello world!); BufferedReader br = new BufferedReader(new InputStreamReader(System.in); praseInt1.4 基本数据类型与表达式1.5 数组的概念数组由同一类型的一连串对象或者基本数据组成,并封装在同一个标识符(数组名称)下。数组是对象 动态初始化 可以赋值给Object类型的变量 在数组中可以调用类Object 的所有方法911.5 数组的概念(续)数组元素 数组中的变量被称作数组的元素 元素没有名字,通过数组名字和

44、非负整数下标值引用数组元素。 每个数组都有一个由 public final 修饰的成员变量:length ,即数组含有元素的个数(length可以是正数或零)921.6 数组的创建和引用数组的声明数组的创建数组元素的初始化数组的引用多维数组931.6.1 数组的声明941.6 数组的创建和引用声明(Declaration) 声明数组时无需指明数组元素的个数,也不为数组元素分配内存空间 不能直接使用,必须经过初始化分配内存后才能使用1.6.1 数组的声明95Type arrayName; 例如:int intArray; String stringArray; Type arrayName ;

45、例如:int intArray; String stringArray;1.6 数组的创建和引用1.6.2 数组的创建96用关键字new构成数组的创建表达式,可以指定数组的类型和数组元素的个数。元素个数可以是常量也可以是变量 基本类型数组的每个元素都是一个基本类型的变量;引用类型数组的每个元素都是对象的的引用1.6 数组的创建和引用1.6.2 数组的创建(续)97arryName=new Typecomponets number; 例如:int ai; ai=new int10;String s; s=new String3; 或者可以将数组的声明和创建一并执行int ai=new int10

46、; 可以在一条声明语句中创建多个数组 String s1=new String3, s2=new String8;1.6 数组的创建和引用1.6.3 数组元素的初始化98 声明数组名时,给出了数组的初始值,程序便会利用数组初始值创建数组并对它的各个元素进行初始化 int a=22, 33, 44, 55; 创建数组的时,如果没有指定初始值,数组便被赋予默认值初始值。 基本类型数值数据,默认的初始值为0; boolean类型数据,默认值为false; 引用类型元素的默认值为null。 程序也可以在数组被构造之后改变数组元素值1.6 数组的创建和引用1.6.4 数组的引用99通过下面的表达式引用数

47、组的一个元素:arrayNameindex数组下标必须是 int , short, byte, 或者 char.下标从零开始计数. 元素的个数即为数组的长度,可以通过 arryName.length引用元素下标最大值为 length 1,如果超过最大值,将会产生数组越界异常(ArrayIndexOutOfBoundsException) 1.6 数组的创建和引用1.6.4 数组的引用(续)100int data = new int10;data -1 非法的data 10 非法的 data 1.5 非法的 data 0 合法的 data 9 合法的 1.6 数组的创建和引用1.6.4 数组的引

48、用(续)101int values = new int7;int index;index = 0;values index = 71; index = 5;values index = 23; index = 3;values 2+2 = values index-3 ; 1.6 数组的创建和引用1.6.4 数组的引用(续)102public class MyArray public static void main(String args) int myArray; /声明数组 myArray=new int10; /创建数组 System.out.println(IndexttValue)

49、; for(int i=0; imyArray.length;i+) System.out.println(i+tt+myArrayi); /证明数组元素默认初始化为0 /myArray10=100; /将产生数组越界异常 1.6 数组的创建和引用1.6.4 数组的引用(续)103class Gauss public static void main(String args) int ia = new int101; for (int i = 0; i ia.length; i+) iai = i; int sum = 0; for (int i = 0; i ia.length; i+) s

50、um += iai; System.out.println(sum); 输出: 5050 1.6 数组的创建和引用1.6.4 数组的引用(续)104数组名是一个引用:例子public class Arrays public static void main(String args) int a1 = 1, 2, 3, 4, 5 ; int a2; a2 = a1; for(int i = 0; i a2.length; i+) a2i+; for(int i = 0; i a1.length; i+) System.out.println( a1 + i + = + a1i); 1.6 数组的创建和引用1.6.4 数组的引用(续)105运行结果:a10 = 2a11 = 3a12 = 4a13 = 5a14 = 61.6 数组的创建和引用1.6.4 数组的引用(续)106字符串引用构成的数组:String strArray;strArray = new String8 ;strArray0= Hello ;1.6 数组的创建和引用1.6.4 数组的引用(续)107例子public class ArrayOfStringsDemo public static void main(String args) String anArray = String One, Strin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论