logo资料库

Java基础教程完整版.pdf

第1页 / 共183页
第2页 / 共183页
第3页 / 共183页
第4页 / 共183页
第5页 / 共183页
第6页 / 共183页
第7页 / 共183页
第8页 / 共183页
资料共183页,剩余部分请下载后查看
首 页
目 录
Java学习系列
1.1 Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解
1.2 Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解
1.3 Java学习系列(三)Java运算符、控制语句、数组及其在内存中的运行分析
1.4 Java学习系列(四)Java面向对象之修饰符、封装、继承、多态详解
1.5 Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解
1.6 Java学习系列(六)Java面向对象之Jar命令、正则表达式、国际化详解
1.7 Java学习系列(七)Java面向对象之集合框架详解(上)
1.8 Java学习系列(八)Java面向对象之集合框架详解(下)
1.9 Java学习系列(九)Java面向对象之异常机制详解
1.10 Java学习系列(十)Java面向对象之I/O流(上)
1.11 Java学习系列(十一)Java面向对象之I/O流(下)
1.12 Java学习系列(十二)Java面向对象之序列化机制及版本
1.13 Java学习系列(十三)Java面向对象之界面编程
1.14 Java学习系列(十四)Java面向对象之细谈线程、线程通信(上)
1.15 Java学习系列(十五)Java面向对象之细谈线程、线程通信(下)
1.16 Java学习系列(十六)Java面向对象之基于TCP协议的网络通信
1.17 Java学习系列(十七)Java面向对象之开发聊天工具
1.18 Java学习系列(十八)Java面向对象之基于UDP协议的网络通信
1.19 Java学习系列(十九)Java面向对象之数据库编程
1.20 Java学习系列(二十)Java面向对象之反射详解
1.21 Java学习系列(二十一)Java面向对象之注解详解
1.22 Java学习系列(二十二)Java面向对象之枚举详解
1.23 Java学习系列(二十三)Java面向对象之内部类详解
1.24 Java学习系列(二十四)Java正则表达式详解
1.25 Java学习系列(二十五)基于Junit3.8和Junit4.x的单元测试详解
1.26 Java学习系列(二十六)Java代码优化讲解
1.27 Java学习系列(二十七)UML建模的理解和图形整理(一)
1.28 Java学习系列(二十八)UML建模的理解和图形整理(二)
1.29 Java学习系列(二十九)UML建模的理解和图形整理(三)
http://www.iteye.com - 做最棒的软件开发交流社区 Java基础教程完整版 作者: JAVE_LOVER http://jave-lover.iteye.com 截止目前,该系列教程已更新完毕。内容覆盖了:JavaSE基本知识点、UML建模、 单元测试等。希望对想学习Java语言的朋友能够提供帮助。 第 1 / 183 页 本书由ITeye提供的电子书DIY功能自动生成于 2015-05-08
http://jave-lover.iteye.com 1. Java学习系列 目 录 1.1 Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解 . . . . . . . . . . . . . . . . . . . . . . . . . . 4 1.2 Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解 . . . . . . . . . . . . . . . . . . . . . . 6 1.3 Java学习系列(三)Java运算符、控制语句、数组及其在内存中的运行分析 . . . . . . . . . . . . . . . . . . . . .10 1.4 Java学习系列(四)Java面向对象之修饰符、封装、继承、多态详解 . . . . . . . . . . . . . . . . . . . . . . . . . .16 1.5 Java学习系列(五)Java面向对象之抽象类、接口、内部类、枚举类详解 . . . . . . . . . . . . . . . . . . . . . . .23 1.6 Java学习系列(六)Java面向对象之Jar命令、正则表达式、国际化详解 . . . . . . . . . . . . . . . . . . . . . . . .34 1.7 Java学习系列(七)Java面向对象之集合框架详解(上) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .39 1.8 Java学习系列(八)Java面向对象之集合框架详解(下) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .49 1.9 Java学习系列(九)Java面向对象之异常机制详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .52 1.10 Java学习系列(十)Java面向对象之I/O流(上) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56 1.11 Java学习系列(十一)Java面向对象之I/O流(下) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65 1.12 Java学习系列(十二)Java面向对象之序列化机制及版本 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .71 1.13 Java学习系列(十三)Java面向对象之界面编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 1.14 Java学习系列(十四)Java面向对象之细谈线程、线程通信(上) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .85 1.15 Java学习系列(十五)Java面向对象之细谈线程、线程通信(下) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .90 1.16 Java学习系列(十六)Java面向对象之基于TCP协议的网络通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . . .95 1.17 Java学习系列(十七)Java面向对象之开发聊天工具 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .101 1.18 Java学习系列(十八)Java面向对象之基于UDP协议的网络通信 . . . . . . . . . . . . . . . . . . . . . . . . . . . .108 1.19 Java学习系列(十九)Java面向对象之数据库编程 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .111 第 2 / 183 页
http://jave-lover.iteye.com 1.20 Java学习系列(二十)Java面向对象之反射详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .119 1.21 Java学习系列(二十一)Java面向对象之注解详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .126 1.22 Java学习系列(二十二)Java面向对象之枚举详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .131 1.23 Java学习系列(二十三)Java面向对象之内部类详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .139 1.24 Java学习系列(二十四)Java正则表达式详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .145 1.25 Java学习系列(二十五)基于Junit3.8和Junit4.x的单元测试详解 . . . . . . . . . . . . . . . . . . . . . . . . . . . .154 1.26 Java学习系列(二十六)Java代码优化讲解 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .162 1.27 Java学习系列(二十七)UML建模的理解和图形整理(一) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .172 1.28 Java学习系列(二十八)UML建模的理解和图形整理(二) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .175 1.29 Java学习系列(二十九)UML建模的理解和图形整理(三) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .180 第 3 / 183 页
http://jave-lover.iteye.com 1.1 Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解 1.1 Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解 发表时间: 2013-09-21 俗话说:“十五的月亮十六圆”。那学习是不是也是如此呢?如果把月亮看成是我们的愿望,那十五便是我们所处的 “高原期”,坚持迈过这个坎,我相信你的愿望终究会现实的。记得马云曾说:今天很残酷,明天更残酷,后天很美 好,但绝大部分人是死在明天晚上,所以每个人不要放弃今天。是的,我们不应该放弃今天,因为每个脚印都值得期 待,每一次机会都值得尝试。不扯了,还是步入正题吧! Java的运行机制:Java源程序经过编译器编译成平台无关的字节码,字节码由虚拟机解释执行,虚拟机将每一条要执行 的字节码发送给特定平台的解释器,解释器将其翻译成相应平台上的机器码,然后运行在该平台上,又由于运行时依然 保留了解释这样就保证了Java程序能跨平台了。Java是一种介于编译型语言与解释型语言之间的一门强类型的语言,所 谓编译型语言,像c/c++等运行时只需编译,无需解释,而且只能在特定运行在特定平台上;而解释型语言就是每次运 行时,经过解释器负责翻译成特定平台的机器指令,每次运行时,都需要经过一次解释。所以说Java的跨平台型主要得 益于它的虚拟机。 JDK(Java Development Kit )开发工具包 )的安装配置: 安装JDK时,无需安装公共JRE (Java Runtime Environment,由JVM+核心库组成),因为JDK默认包含了JRE;其它 步骤直接点击下一步即可。 JDK的配置:1、把JDK的bin目录添加到path环境变量中,这样就可以保证用户无需输入绝对路径,即可使用javac、 java两个工具。配置PATH的作用:让操作系统能找到我们所使用的命令,与java本身无关!2、添加系统变量 JAVA_HOME,并在JAVA_HOME添加JDK安装路径,比如D:\Program Files\Java\jdk1.5.0,具体要根据jdk1.5的安装 路径来定。配置JAVA_HOME变量的作用:JAVA_HOME路径下包括lib,bin,jre等文件夹,以后配置tomcat, eclipse等java开发软件可能需要依赖此变量。3、添加系统变量CLASSPATH,并在CLASSPATH变量下添加如下路径: %JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar (注意前面的“.;”) 配置CLASSPATH变量的作用: 为系统指明 java加载类(class or lib)的路径,只有类在classpath中,java命令才能识别。 配置成功的效果如下: 下面以一个著名程序:HelloWorld结束本章内容,然后谈下编译和运行java的两个常用命令javac、java class _你好世界 { 第 4 / 183 页
http://jave-lover.iteye.com 1.1 Java学习系列(一)Java的运行机制、JDK的安装配置及常用命令详解 public static void main(String[] args) { System.out.println("Hello World!"); } } 效果如图(其中的HelloWorld.java为java源文件名,这里的点号指的是当前目录,当然你也可以换成其它目录,注意 命令参数与文件名之间要有空格,java区分大小写,而源文件不区分大小写,下面两图效果可以看到是一样的): 、 命令解释: 编译源文件:javac -d [目录] java源文件 用于将生成的二进制文件放在指定目录下。 运行class文件:java -cp [目录] 类名 指定JVM到哪个目录下去搜索Java类。每个class对应一个类。 如果Java源文件中有public类,该源文件的主文件名必须和public类名相同。 如果Java源文件中没有public类,该源文件的主文件名可以是任意的。 关于java中类的修饰符,后面讲到面向对象的时候我会详细讲解。 好啦,今天就写到这,先把HelloWorld跑起来吧! 结束语:java的常用命令还有很多,具体会在后面陆续讲到。对于编程,个人觉得只要你肯多练,不断去调试和思考其 脉络,再去慢慢的研究其细节,我想Java对你来说将不会很难。好啦,今天就写到这,明天开始讲ava的基本类型,内 容可能会比较多,但是我会尽量讲的详细一些。 第 5 / 183 页
http://jave-lover.iteye.com 1.2 Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解 1.2 Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解 发表时间: 2013-09-21 今天看到一则小笑话,分享给大家。一对情侣甜蜜的在公园中依偎着,男的看到女的的头发如此柔顺,便忍不住偷摸了 一下,女的娇滴滴的说:“唉呀!讨厌啦!” 男的听了心更痒,于是又偷摸了一下,女的又说:“嗯,不要啦!”男的一听,心都要飞起来了,又再摸了一下,突然 那女的站起来,粗暴的说道:“不要摸了!我的假发都快掉了!!! Java注释 前面我们讲了下Java的运行机制及JDK的安装配置等相关操作,今天我们先从Java的注释开始。Java注释对程序本身没 有影响,主要是开发者提供一些辅助信息来更好的理解。首先,Java的注释分三种:单行、多行以及文档注释。单行: //后面的内容就是单行注释;多行:/* 中间部分 就是多行注释 */;至于文档注释,我们以一个简单的Java小程序为 例。 /** 此处为文档注释,我们可以用 javadoc命令直接提取文档注释, 并根据文档注释来生成API文档 */ public class $月饼 { //此处为单行注释。主方法(程序入口) public static void main(String[] args) { System.out.println("五仁月饼味道真心不错!"); } /* public void info(){ System.out.println("此方法被多行注释了。。"); } */ } 第 6 / 183 页
http://jave-lover.iteye.com 1.2 Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解 此时如果我们想用javadoc来帮我们生成API文档,命令及运行效果如下图: 打开我们的myFirstAPI目录下的index.html你会发现javadoc这个命令的强大所在。 Java标识符 标识符(合法的名字):类名、方法名等。可以以中文、美元$开头,但不能以数字开头,且不能是Java的关键字和保留字 (都必须小写)。直接量:true,false,null。共53个关键字,其中有2个保留字:const、goto,它们在Java中目前没有被 使用,因此不具有意义。上面的类名写成$月饼 是可以编译通过的,但是一般不这么写,我们的类名应尽量有意义,当 别人看的时候能一目了然。 基本数据类型 Java语言是一门强类型语言,所有变量(计算机内存里的数据就需要通过变量来访问它,变量就是一块内存的访问方式) 必须先声明类型,再使用。Java有8种基本类型: 整数取值范围: -128~127 -32768~32767 -2G~2G-1 -2的63次方~2的63次方-1 4个整型(不支持小数): byte(1字节),、 short(2字节)、 int(4字节)、 long(8字节) 2个浮点型(支持小数): float(4字节)、 double(8字节) 第 7 / 183 页
http://jave-lover.iteye.com 1.2 Java学习系列(二)Java注释、标识符、基本数据类型及其转换易错点详解 1个字符型:char(2字节) 1个布尔型:boolean(1字节) 只能有两种取值:true、false 当我们直接使用一个整数时,整数默认是int类型。如果想使用一个long型,应该在正数后加L或l。Java的整型常数有三 种形式: 1.十进制整数,如123,-456,0。 2.八进制整数,以0开头,如0123表示十进制数83,-011表示十进制数-9。 3.十六 进制整数,以0x或0X开头,如0x123表示十进制数291,-0X12表示十进制数-18。当我们直接使用浮点数时,浮点数默认是 double类型。如果想使用一个float型,应该在正数后加F或f,如:浮点数表示:.512f(整数0部分可以省略,10十进制 表示);0.12e4F(0.12乘以10的4次方,科学计数法)。实际编程时,尽量使用double(范围大,精度高)。字符型:每个 字符型的变量只能装一个字符。可以是英文或中文。字符型的表示方式如:1. 'q'、'中' ;转义字 符:'\n','\t'、'\r'、'\b'等。所以我们在给变量赋值时,一定要注意变量的取值范围。需要补充的是:所有的正无穷大 和负无穷大都分别相等,非数(NaN)就是用0.0/0,非数连自己都不相等。 实例说明: 1、byte b = 385;//由于变量b超过了byte类型的取值范围,所以此时编译器此时会报错(可能损失精度)。----由于byte 只占一个字节,所以要注意值溢出的问题。 2、如果我们在385这个数值进行强制类型(下面会讲到),结果会是多少呢?byte b = (byte)385;思考一下。 计算过程如下: 我们知道数据的存储要遵循两条原则:1.最高位是符号位。最高位是0代表整数,最高位是1代表负数。2.所有的数值在 计算机中都是以补码(在计算机内,有符号数有3种表示法:原码、反码和补码。原码:直接换算出的二进制码。反码: 负数时除符号位不变之外,其它位都取反;正数反码=原码。补码:负数补码=反码+1;正数补码=原码)的形式保存 的。在控制台输出给我们的是在转换成原码后再计算返回给我们的十进制数值。我们可以看到转换成的原码后7位1,符 号位(最高位)也为1,所以我们可以算出结果为-127。 类型转换:byte-->short-->int-->long-->float-->double (---> 表示类型之间可以转换,由于char可以转化为int 类型(也就是说字符型变量,可直接作为“正整数”使用),所以这7种基本类型之间是相互可以转化的),还有一个布尔 型,由于它只支持两种取值(true/false),所以数值类型只有7种。在数据类型进行转换时要注意:范围小的可以自动转 第 8 / 183 页
分享到:
收藏