java从入门到精通程序设计
更新时间:2023-10-28 09:22:01 阅读量: 综合文库 文档下载
第一章 Java与1JBuilder概述
Java 历史与概述
? Java概述
– 美国Sun公司开发的一种编程语言与平台
– 世界上第一种具有硬件、操作系统无关性的程序语言 – 在不同硬件、不同操作系统下运行时,不需要重新编译 – 一种―一次编译,到处使用‖的语言
– 起源于1991年的绿色计划,原计划用于消费类电子产品 ? Java语言的特点
– 简单(Simple)
? 容易编写程序,程序小巧,能够在小型机器,甚至家电、机顶盒、手机上执行
– 面向对象(Object-Oriented)
? 是一种纯粹的面向对象语言,没有全局变量和全局函数,只有类和对象
– 分布式的(Distributed)
? 可以很容易地与TCP/IP通讯协议相配合,方便地实现B/S和C/S以及点对点网络程序结
构
? Java语言的特点
– 鲁棒的(Robust)
? Java程序具有相当高的稳定性。Java具有完善的变量类型检查、变量初始化检查、数组下标越界检查、无用变量回收机制,因此能够最大限度地提高程序的鲁棒性 – 安全的(Secure)
? Java拥有多层的互锁(Interlocking)保护措施,能有效地防止病毒的侵入和破坏行为的发生
? Java语言的特点
– 结构中立的(Architecture Neutral)
? Java编译器产生一种结构中立的目标文件格式,可以在多种处理器和操作系统中执行,而不用考虑不同机器的差异 – 可移植的(Portable)
? Java的简单数据类型是不随操作系统变化的。Java程序库所定义的接口也是对所有的操作系统都适用的。这些都使Java具备良好的可移植性
? Java语言的特点
– 解释的(Interpreted)
? Java解释器能直接在任何机器上执行Java二进制码(Bytecodes),这样就省去了在不同机器上编译、连接的时间。这对于缩短程序的开发过程,有极大的帮助 – 高效能的(High Performance)
? Java二进制码能被迅速转换成机器码,Java二进制码的执行效率正在逐渐逼近其它编译语言的执行效率
? Java语言的特点
– 多线程(Multi Threaded)
? Java语言具有多线程的功能,这对于交互式程序以及实时响应程序是很有帮助的 – 动态的(Dynamic)
? Java比C或C++语言更具有动态性,更能适应时刻在变的环境,Java不会因程序库的更新,而必须重新编译程序 1
1
? Java编译与运行的特点
– 既是编译语言又是解释语言
– 编译性:将源程序编译成与平台无关的一种中间语言,称为Java二进制码 – 解释性:运行时,Java平台逐句分析解释并运行Java二进制码 ? Java平台的概念
– 平台:为程序提供运行环境的硬件和操作系统的总称 – Java平台:纯软件的,为Java提供统一的运行环境 ? Java平台的组成结构
– Java虚拟机(JVM)
– Java应用程序界面(Java API) ? Java平台的组成结构
– Java虚拟机:解释并运行Java二进制码
– Java API:由许多软件包组成,这些软件包可以实现很多功能,包括图形界面功能
Java 历史与概述
? Java平台的组成结构
– 最底层是硬件层,表示Java系统运行的硬件和操作系统; – 第二层是Java虚拟机层,这层是Java平台的核心;
– 第三层是Java程序界面层,这层提供了许多功能软件包; – 最顶层是应用程序层,也就是在Java平台上运行的应用程序。 ? Java应用程序界面的主要内容
– 底层:Java平台目前可以运行的操作系统,如Solaris, Windows, Linux, Mac OS等;
– 中间层:Java API的内容:applet(小程序), math(数学工具),text(文本处理),awt
(图形界面),net(网络),util(常用功能),io(输入/输出),swing(Swing图形界面),lang(基本Java语言)等。
– 上层:Java的编译器javac,开发与调试工具
创建第一个Java程序
? 1. 用记事本编写源程序:
创建第一个Java程序
? 源程序:
/*
* 文件名: FirstApp.java
* 功 能: 显示\天天好心情!\* 编写: 张三
* 编写时间: 2004.06.03 * 修改: 李四
* 修改时间: 2004.08.15 */
public class FirstApp {
public static void main(String[] args) { // 显示\天天好心情!\
System.out.println(\天天好心情!\ } }
第二章 Java基本语法
面向对象基础
2
? 对象的基本特征
– 状态:对象的状态用一个或多个变量表示,这些变量称为成员变量 – 行为:对象的行为用函数或子程序实现,它们称为成员函数 – 一个对象就是一组变量和函数形成的一个软件包
面向对象基础
? 面向对象程序的特点
– 一切都是对象: – 程序是对象的组合: – 对象有自主存储空间: – 对象属于特定的类:
面向对象基础
? Java程序结构
– 对象是全局性的
– Java中没有全局变量和全局函数 – 所有的函数都属于特定的类
– 除少数几种基本变量以外,Java中的所有变量类型都是类
变 量
? 变量定义与变量类型
– 变量:用于保存数据。变量在使用前需要先进行定义和初始化
double resValue = 12.1 + 25.8;
– 变量的定义:给变量设定名字和类型
type name;
– “type”表示变量类型,“name”表示变量名 ? 变量类型
– 简单变量的类型 ? 变量类型的跨平台性
– 变量的表示范围不随操作系统变化
? int型:32位,范围为-2147483648~2147483647 ? float型,32位,IEEE 754规范 ? double型:64位,IEEE 754规范
– 字符型变量是16位Unicode字符类型,可以直接表示包括中文在内的各国文字 ? 变量名
– 变量名需要满足的条件:
? 变量名必须以字符开头;
? 必须是一串连续的Unicode字符,不能有空格,也不能有减号(否则会与减法相混淆); ? 变量名不能是Java关键字,逻辑值(true或false),以及保留字null;
? 在同一个有效区域里的变量名必须唯一,不同区域(比如不同子程序里)里的变量名可以重复。
? 变量名
– Java关键字列表 ? Java变量名的命名规范
– 变量名以小写字母开头,类名以大写字母开头,常量名全部由大写字母组成 – 如果变量名由多个单词组成,则将单词连在一起写,每个单词的首字母大写
? 例:flagDone, totalNum
– 常量:多个单词间以下划线连接
3
? 例:MAX_INTEGER, MAX_ARRAY_NUM
? 中文变量名
– 对于16位Unicode字符,汉字与英文字母没有区别
– 可以在变量名中使用汉字,也可以混合使用汉字、英文字母,如:
整数 = 5; ? char 汉字 = '文';
? double 费用_Fee = 3.3;
? 常数的类型
– 默认的常数类型: ? 引用变量
– 简单变量仅能存储简单的数据,对于复杂的数据,必须用引用变量来表示
– 引用变量里存储的仅仅是一个指针,它指向真正的对象所在地。例如下面的例子: ? 变量的初始化
– 所谓初始化,就是给变量赋一个初值
– 任何变量,在访问它的值以前,必须先要给它赋一个值,否则结果是不可预料 – 简单变量的初始化:只需赋一个值即可,还可以在变量定义时即将其初始化 int aNum = 0;
double aValue = 0.0; char aChar = ''; ? 变量的初始化
– Java语言对变量初始化的要求非常严格,如果变量存在未初始化的可能,则提示出错,不能继续编译
– 在Delphi语言中,对于变量可能未初始化的问题只会给出一个警告,还可以继续编译 – C/C++语言根本不提示此类问题,完全由程序员自己把握 ? 引用变量的初始化
– 用new语句在内存中创建一个对象,再将引用变量指向这个对象 TheClass aClass;
aClass = new TheClass();
– 程序第一行定义了一个引用变量,aClass,此时它还只是一个空的指针;
– 第二行语句在内存中创建了一个TheClass型的对象,再将变量aClass指向该对象 ? 最终变量
– 最终变量的值在初始化之后就不能再变了。最终变量相当于常量 – 最终变量的定义:使用final关键字: final int aConstInteger = 25;
– 最终变量的定义和初始化也可以分开: final int aConstInteger; aConstInteger = 25;
– 最终变量在定义之后应当尽快初始化,以免发生多次赋值而出错
运算符
? 什么是运算符
– 运算符对1个、2个或3个参数完成一项函数功能 – 按参数的数量划分:
? 一元运算符、二元运算符和三元运算符 – 按功能划分:
? 可分为5类:算术运算符、关系与条件运算符、移位与逻辑运算符、赋值运算符、其它运算符
? int
4
? 运算符的形式
– 一元运算符又可分为前缀符号和后缀符号 – 前缀符号的运算符在运算数之前,如―++a‖ – 后缀符号的运算符在运算数之后,如―a++‖
– 二元运算符只有一种形式,就是运算符在两个运算数之间,例如:―a + b‖ – 三元运算符只有一个:“op1 ? op2 : op3”,它相当于一个简化的条件选择语句 ? 算术运算符
– 包括基本的四则运算:加法―+‖,减法―-‖,乘法―*‖,除法―/‖,余数―%‖ – 算术运算符都支持浮点数和整数运算 ? 算术运算符
– 如果两个运算数是相同类型的,则运算的结果也是同样类型
– 如果两个运算数类型不同,Java会先将数值转换为较精确的类型,再进行计算,结果也是
较精确的类型
– 数据类型精度的次序:
? byte – 例,整数和浮点数相加,首先将整数转换成浮点数,再相加,结果也是浮点数型 ? 其它的算术运算符 – 4个一元运算符,其中―++‖和―--‖运算符各有前缀和后缀两种形式 ? 其它的算术运算符 – 最容易混淆的是―op++‖和―++op‖ ,例如: int a1 = 10; int a2 = 10; int b1, b2; b1 = a1++; b2 = ++a2; ? 关系运算符 – 比较两个值是否满足某种关系。如果满足,则返回 ―true‖(真),否则返回 ―false‖(假) – 常用的关系运算符: ? 关系运算符 – 在Java中,―=‖代表给变量赋值,而用―= =‖代表相等,这与传统的习惯不同 – 初学者往往习惯性地用―=‖表示相等,从而出现―if (a = b) {...}‖的错误 ? 条件运算符 – ―&&‖和―&‖的差别: – ―&&‖ 只有在需要时才计算右边op2的值,如果通过op1就能知道结果时,op2就不会计算 – ―&‖运算符会计算出两边op1和op2的值,再得到返回值 – 例:if ( (5>7) && (13>2) ) then {...} – ―5>7‖ 不成立,那么―(5>7) && (13>2)‖显然不会成立,因此不再计算―13>2‖ ? 负数的二进制存储方法 – 在计算机里,负数一般是以二进制―补码‖的形式存储的 – 补码是以最大的二进制数减去负数的绝对值再加1而得的 – 例:整数―-14‖,计算机中实际存储的值是 ―1 0000 0000 0000 0000 - 0000 0000 0000 1110 = 1111 1111 1111 0010‖ ? 移位与按位运算符 – 移位和按位运算符就是对二进制数值进行操作的运算符 5 – 移位运算符的作用是将二进制数向左或向右移一位。下表列出全部3种移位运算符: ? 移位与按位运算符 – <<:左移,将二进制数左移一位,右边多余的数位填0,相当于乘以2 – >>:有符号右移,将二进制数右移一位,如果二进制数的最高位为0,则左端补0,如果 最高位为1,则左端补1,相当于除以2 – >>>:无符号右移,将二进制数向右移一位,左端补0,常用于直接设置二进制位的操作 – 移位运算符常用于直接设置二进制位,此时每一位都有其具体的含义,并不代表一个整数,因此有符号右移就失去了意义,而应当使用无符号右移符―>>>‖ – 按位运算符:对二进制数的每一位分别进行逻辑操作,Java提供了4种按位运算符: ? 移位与按位运算符 – ―&‖运算符对操作数op1和op2的每一位进行―与‖操作 – 例:10 & 13,计算过程如下: 1010 & 1101 ------------- 1000 – 和1101按位与的结果是将第2位置0,其它位不变,用于将某位数字置零的操作 ? 移位与按位运算符 – ―|‖运算符进行按位的―或‖运算,只要有一个操作数的对应位为1,结果的对应位就是1 – 例:计算1010 | 0001的结果: 1010 | 0001 ------------- 1011 – 和0001按位“或”之后,右边第1位被置“1”,其它位不变。常用于将某一位置“1” ? 移位与按位运算符 – ―^‖运算符实现按位异或运算,只有两个操作数的对应位不同,结果才为1 – 例:1010 ^ 1111的结果: 1010 ^ 1111 ------------- 0101 – 与1111异或的结果是每一位都相反,常用于将某些位颠倒,其它位不变的操作 ? 移位与按位运算符 – ―~‖是按位运算符中唯一的一元运算符,它的作用是将二进制数的每一位取补,例如: ~ 1010 ------------- 0101 – 按位运算符在设置逻辑标志时非常有用,通过按位运算符可以方便地设置、修改、访问每个标志位的状态 ? 赋值运算符 – ―=‖:最基本的赋值运算符,将一个变量或常量的值赋给另一个变量。例如: int a = 5; // a的值为5 a = 8; // 现在a的值为8 – 快捷赋值运算符,用于同时实现算术、移位或按位操作与赋值操作。例如: i = i + 2; – 可以用快捷赋值符号―+=‖表示: 6 i += 2; ? 赋值运算符 – 快捷赋值运算符列表: ? 其它运算符 – ―? :‖,是唯一的一个三元运算符,形式为: op1 ? op2 : op3 – 首先判断op1,如果op1为真,则返回op2的值;如果op1为假,则返回op3的值 – ―(变量类型)‖,将变量转换成指定类型: float b = 3.6; int c = (int)b * 2; – b被强制转换成整数,抛弃小数部分以后的值为3,于是c = 6 ? 运算符的优先级列表 分支与循环结构 ? 分支控制语句 – if语句:是最基本的分支控制语句,使程序根据条件有选择地执行语句 – if语句的形式如下: if (关系表达式) { 语句 } – 它的含义是:如果关系表达式为真,则执行后面花括号里的语句,否则就不执行花括号里的语句 分支与循环结构 ? 分支控制语句 – 例:对于前面的例子,如果当a不是正数时也需要在屏幕上显示,语句如下: if (a > 0) { System.out.println(\变量a是正数。\} else { System.out.println(\变量a是负数或零。\} – 当a不是正数时,执行else内的代码,显示“变量a是负数或零” ? 分支控制语句 – 组合的if ... else 语句:例,要求当a是正数、a是负数、a是零时分别显示: if (a > 0) { System.out.println(\变量a是正数。\} else if (a < 0) { System.out.println(\变量a是负数。\} else { System.out.println(\变量a是零。\} ? 分支控制语句 – 处理多种选择问题的方法: ? 利用多个if ... else结构 ? 利用switch语句处理 – switch语句的语法结构: 7 ? switch语句将IntVar的值与每个case语句的整数值比较 ? 如果符合,就执行这个case中的语句 ? 如果不与任何一个case符合,就执行default中的语句 ? 分支控制语句 – switch分支的特点: – 每个分支均以一个break语句结尾 – 作用是跳出switch结构 – 如果没有break语句,那么程序在执行完这个case的代码后,会接着执行下面一个case的代 码 ? 例题:不带break语句的switch结构 switch (n) { case 1: System.out.println(\的值是1\case 2: System.out.println(\的值是2\case 3: System.out.println(\的值是3\case 4: System.out.println(\的值是4\case 5: System.out.println(\的值是5\default: System.out.println(\的值不在预设范围内。\} ? 循环控制语句 – 循环控制语句的作用是反复执行一段代码 – 常用的循环结构: ? while循环 ? do ... while循环 ? for循环 – 循环结构的组成部分: ? 循环头(控制语句) ? 循环体(代码) ? 循环控制语句 – while循环 while (条件表达式) { 语句 } – 当条件表达式为真时,反复执行花括号中的语句,直到条件为假,则退出循环 – 例:计算1+2+3+...,一直到结果大于100,求此时加到的最大的数是多少 ? 循环控制语句 – 例题程序如下: int sumx = 0; int x = 0; while (sumx <= 100) { x ++; sumx += x; } 8 System.out.println(\最大的加数为:\。\ – 程序的核心是一个while循环结构,当sumx没有超过100的时候,反复执行累加程序 ? 循环控制语句 – do...while结构,形式如下: do { 语句 } while (条件表达式) – while结构和do...while结构的差异: ? while循环:先判断,再执行。如果一开始循环条件就不满足,则循环内的语句根本不会执行 ? do...while循环:先执行,后判断。不管循环条件满不满足,循环内的语句至少会执行一遍 ? 循环控制语句 – while和do ... while结构对比例题 // 例题1 int a = 105; while (a <= 100) { a += 20; } System.out.println(\的值是:\// 例题2 int a = 105; do { a += 20; } while (a <= 100) System.out.println(\的值是:\? 循环控制语句 – for循环: for (初值; 终值; 增量) { 语句 } – for循环一般用于已知循环次数的程序中 – 初值部分用来初始化循环变量,终值部分设定循环的结束条件,增量部分用于在每次循环中改变循环变量的值 ? 循环控制语句 – 例题:计算从1加到100的总和 int sum = 0; for (int i = 1; i <= 100; i++) { sum += i; } System.out.println(\加到100的总和为:\ ? 在for结构中,int i = 1定义了一个整数变量i,并且设它的初值为1; ? i <= 100给出了循环的结束条件,当i <= 100不成立时,循环就会自动跳出; ? i++设定了每个循环中循环变量i的增量,每次循环时i的值都会增加1。 ? 中断控制语句 – Java语言支持3种中断语句: – break:强行退出循环,不执行循环体中剩余的语句和剩余的循环次数 – continue:停止继续执行循环体中下面的语句,跳回循环起始位置开始下一次循环 – return:退出整个函数 9 第三章 面向对象语言 类与对象 ? Java中的类 – 在Java程序中,类是由定义和主体构成的 ? 完整的类定义格式: public abstract final class 类名 extends 父类名 implements 接口名 { 类的主体 } – 类定义中,必需的部分是 ―class‖关键字和类的名字,其它部分都是可选的 成员变量与成员函数 ? 成员变量 – 成员变量的完整定义形式如下: accessLevel static final transient violatile type name – 其中用黑体字标的变量类型和变量名是必需项,其它都是可选项 ? 成员变量 – name:成员变量名也是必需项,它的命名要求与普通变量名相同 – 在一个类里,你不能定义两个相同名称的成员变量,但允许成员变量和成员函数起相同的名字,例如: public class Calculator { public double a, b; public double add; public double add() { return(a + b); } } ? 成员函数 – 成员函数与类相似,是由函数定义和函数主体构成的,如下图所示: ? 函数定义部分包括函数的访问级、返回值的类型、函数名称和参数列表 ? 函数主体是花括号里的部分,它包括实现函数功能所需要的代码 ? 成员函数 – 能否在函数中改变参数的值 public class TestSum { public void Sum(double sumx, double x) { sumx = sumx + x; } public static void main(String[] args) { TestSum aTest = new TestSum(); 10
正在阅读:
java从入门到精通程序设计10-28
五年级语文质量检测试卷分析04-17
物理化学上册习题答案04-17
C#程序设计实验指导书11-06
现代农艺课程标准03-15
贵阳中医学院2003级骨伤手术学试卷 A卷答案及评分标准01-19
华工工程力学选择判断题09-02
Schedule A 指导手册12-04
课前三分钟----安全教育03-28
超市营业员岗位职责02-25
- 多层物业服务方案
- (审判实务)习惯法与少数民族地区民间纠纷解决问题(孙 潋)
- 人教版新课标六年级下册语文全册教案
- 词语打卡
- photoshop实习报告
- 钢结构设计原理综合测试2
- 2014年期末练习题
- 高中数学中的逆向思维解题方法探讨
- 名师原创 全国通用2014-2015学年高二寒假作业 政治(一)Word版
- 北航《建筑结构检测鉴定与加固》在线作业三
- XX县卫生监督所工程建设项目可行性研究报告
- 小学四年级观察作文经典评语
- 浅谈110KV变电站电气一次设计-程泉焱(1)
- 安全员考试题库
- 国家电网公司变电运维管理规定(试行)
- 义务教育课程标准稿征求意见提纲
- 教学秘书面试技巧
- 钢结构工程施工组织设计
- 水利工程概论论文
- 09届九年级数学第四次模拟试卷
- 程序设计
- 精通
- 入门
- java
- 数学错题本的功能和使用研究
- 关于2006年春季计算机科学与技术,法学等本科专业
- 小学语文说课稿集锦
- 2016年春季中文组教研工作计划
- 20个2012年创业新点子
- 关于火电企业增收节支策略的探讨
- 第七节-动机与情绪情感试题(含答案)
- 《富贵不能淫》中考阅试题(含答案)2018.12
- 关节松动术
- 乡镇党委换届之纪委工作报告
- 曼昆经济学原理课后答案 - - 像经济学家一样思考
- 九年级化学第七单元《课题2 燃料和热量》3
- 大学英语4课后cloze及翻译原题带答案
- 实用多元统计分析相关习题
- 读后感《痛并快乐着》
- 合同法案例分析
- 《根鸟》阅读检测
- 零售学试题
- 全新版大学英语4(第二版)听力原文(Word版本) - 图文
- zzu药学专业物化期中试题