当前位置:文档之家› The little SAS book 学习笔记第一章

The little SAS book 学习笔记第一章

The little SAS book 学习笔记第一章
The little SAS book 学习笔记第一章

The little SAS book 学习笔记

第一章SAS软件入门

1.1 SAS语言

许多软件要么是菜单驱动,要么是命令驱动(输入命令——看结果)。SAS两者都不是,在SAS中,你用一个叫做SAS程序的一系列指令语句,这些程序可以表达出你想做的事情,并用SAS语言写下来。SAS有菜单驱动栏,比如SAS企业向导模块,它使SAS看起来像一个点击的软件,但这些模块仍然使用SAS语言为你写程序。如果你试图用SAS写下你自己的程序,那就要具备一定的灵活性。

SAS 程序一个SAS程序就是一个按顺序执行的语句序列,一个语句给SAS下达信息和指令,且必须要正确的安放。一个常用来与SAS程序做类比的例子是去银行取款,你进入银行、排队、轮到你,那么你会对柜台谁你想做的事,叙述语句可能会是这样:

I would like to make a withdrawal.

My account number is 0937.

I would like$200.

Give me five 20s and two 50s.

注意第一句话说了你想做的事情,之后把相关信息传递给柜台并帮你完成要求。这里信息传递的顺序不重要,重要的是在你的叙述中,首先要说明你要做什么。你不能先说:“Give me five 20s and two 50s.”这会使柜台小姐一头雾水。此外,你必须确保后面的语句都围绕第一句展开。

SAS语句像任何语言一样,SAS语句的编写也需要遵守一些语法规则。幸运的是,相比英语来说,SAS语句的规则不仅少,而且简单。

最重要的规则是:

每一个SAS语句都由一个分号结尾

听起来很简单,但即使最富有经验的SAS程序员也会偶然忘记分号。如果你能记住这个规则,再来看看另外两个规则吧。

SAS程序布局让每一条语句看起来整洁、用缩进来表现语句的各个部分,这是很有用的,但不是必须的:

●SAS语句不区分大小写。

●一条语句可以持续到第二行(只要不把一个单词分开)。

●几条语句可以用一行。

●可以在任何一列中开始一条语句

注释可以在你的程序中插入一些注释,让它更容易明白。即使你插入一些你喜欢的食物品名也不会对程序有所影响,因为SAS不会读取注释。但不要忘记注释是为了让某人更轻松地学习你的程序,并明白你为什么这么做。

*Read animals’ weights from file;

DA TA animals;

INFILE ’c:\MyRawData\Zoo.dat’;

INPUT Lions Tigers;

PROC PRINT DATA=animals; /*Print the results*/

RUN;

有两种注释方法,一种是‘*’和‘;’一起使用;一种是用/* */表示,由于某些操作环境解释第一列中的斜线星号(/ *)作为工作结束的标志,使用这种风格的注释时要小心不要把它放在第一列。出于这个原因,我们选择了星号分号的风格为这本书的注释。

错误SAS程序通常将执行的错误标注为醒目的红色字母,你可能忘了分号,拼错了

字母,按错了键盘,一个小错误会使得整个程序无法运行。当你看到红色部分多余黑色部分的时候,不要灰心。

1.2 SAS数据集

在你进行分析、撰写报告,对你的数据进行任何处理之前,SAS必须能够处理你的数据,你的数据必须是一种叫SAS数据集的特殊形式。因为SAS非常灵活,能够读取任何形式的数据,所以将你的数据变成SAS数据集是一件非常简单的事。

变量和观测值在传统的SAS术语中,数据包括变量和观测值。采用相关的数据库的术语,SAS数据集也被叫做表、观测值也被叫做行、变量也被叫做列,你可以看到下面这个包含一些数据的表。

数据类型未加工的数据有多种形式,但SAS将其简单化。在SAS中只有两种数据类型——数值型和字符型。数值型完全是数据,可以被加减乘除、可以是正负且是小数。字符变量是除数值之外的类型,可以是数值、字母、和一些特殊的字符(¥、!),最多可以占用32767个字节长度。

如果一个变量既包括数字又包括字符,那么它一定是字符变量。如果只包括数字,可能是字符变量也可能是数值变量。在上面这个表中,姓名是字符变量,身高和体重是数值变量,ID,既可能是数值有可能是字符,依据你的选择。

缺失值数据有时会有些不完美,某些变量的个别观测值会缺失。字符变量的缺失值用空格表示,数值变量的缺失值用句号(.)表示。上表中,体重的第五个观测值缺失,用.表示。姓名的第六个观测值缺失,用空格表示。

SAS数据集的大小在SAS 9.1之前(prior to SAS 9.1),SAS数据集可以包含32767个变量,从SAS 9.1开始(beginning with SAS 9.1),SAS可包含的最多变量数由你的电脑可用资源决定(内存,CUP?)。但是超过32767个变量的SAS数据集不能用在早期的SAS 版本上。

SAS命名规则为你的变量和数据集命名,使它们容易被辨别。A,B,C这样的名字可能看起来很完美,写程序的时候也很方便,但当你6个月后再使用这些数据时,你会发现name,height,weight这样的名字更有用。为变量和数据集命名时要遵守如下规则:

●名字的长度要小于等于32个字节。(一个字母1个字节,一个汉字2个字节)

●以字母或下划线开头。

●可以包含字母、数字、或者是下划线,不能是%$!*&#@。

●可以是小写或大写字母,且不区分大小写。

SAS数据集储存的文件SAS数据集包含了一些类似名称、创建日期、创建用的SAS 版本等信息。SAS也储存了每个变量的信息,包括名称、类型、长度、数据集中的位置。这些信息叫做数据集的描述部分,它使得数据集可以自我编制(self-documenting)。

1.3 SAS程序的两个过程

SAS程序有两个基本模块:数据步和过程步。一个典型的SAS

程序,由数据步创建SAS数据集开始,再由过程步分析数据。

这里有一个例子:数据步中将米转化成千米,过程步中输出结

数据步和过程步由语句组成(废话),一个过程少至1条语句、多至几百条。新手常犯的错误是将两种过程语句用混,只要记住数据步负责读取、修改数据,过程步负责分析数据、输出报告和效用函数,就不会犯错。

数据步由DATA语句开始:data+数据名。上例中数据步处理了名为distance的数据。为了读取外部数据、未加工的数据,数据步提供了DO LOOPS,IF-THEN/ELSE,以及一些数值和字符函数。数据步也可以按照你想要的方式合并数据集,包括联接(concatenation)和合并(match-merge)。

过程步由proc语句开始:proc+过程名(print、sort、means…),SAS过程步可以处理从数据储存、输出到方差分析、3D图表的一切操作。

当程序遭遇DATA\PROC等标志着新程序开始的语句时,程序结束。如果运行的是批处理,则run代表语句的结束。Run告诉SAS去执行所有之前的程序行,全局变量不是DATA或PROC过程的部分。上图的那个程序,当proc出现时,代表data过程结束。

典型的程序是以DA TA语句开头,输入或修改数据,然后将数据传递给PROC语句。但并不一定非要用这种模式来混合data和proc语句,你可以用任何顺序来排列data和proc两者

的顺序,一个程序甚至可以仅有data语句或proc语句。

下表是data语句和proc语句的一些基本不同点:

这只是一个简化表,SAS软件非常灵活,所以data语句和proc语句之间真正的区别也是很模糊的。记住,这个表并不是说proc语句永远不能创建SAS数据集,或者DATA语句永远不能够分析生成报告。

1.4 数据步的内置循环

Data步读取并修改数据,让你以灵活的方式控制处理数据。Data步也有一个潜在的、内置的循环语句。你不用告诉SAS去执行这个循环,SAS会自动执行。

数据步按照一行一行、一个观测值一个观测值的顺序执行

这句话的表意并不明确,许多新手直到成了老手都没明白这句话的含义。

数据步“一行一行的执行”,这句话很好理解。但很多新手还是容易在这里出错,例如在没有创建一个变量之前就使用它,如果Z变量是X、Y两个变量组合的新变量,那么必须确定创建Z变量的语句在创建X、Y变量语句之后。

而“一个观测值一个观测值的执行”就不是那么容易理解。这意味着SAS先读取一个观测值,然后对这个观测值进行数据步的所有语句(当然也是一行一行的),然后再读取第二个观测值执行。每次执行SAS只有一个观测值。

我们将SAS执行的图景放慢:SAS从你的数据集中读取一个观测值。SAS对你的这个观测值执行数据步,如果数据步一直运行到结束而没有错误,SAS会把当前的观测值写入一个新的、输出数据集中,并返回到数据步开头,读取第二个观测值进行执行。当最后一个观测值都被写入输出数据集中之后,SAS结束数据步,进入下一个步。

有一个类比,数据步就像是一个投票程序。当你来到投票的地点,你会站在别人后面进行排队,排到你时,你会被问到:你叫什么名字,住在哪里。当你回答之后,你可以投票。在这里,排队的人就像是观测值,投票的程序就像是数据步。一次只能让一个人投票,每个人都相互独立。并且投票的程序是一步一步来的,你不能没说明自己的姓名和住址之前就投票。

1.5 选择一个提交程序的方式

目前为止我们讨论了写SAS程序,但仅仅写不能带给你任何结果,你必须要提交并执行。有数种方法可以执行SAS程序,但不是任何方法都适合于你的操作环境。查找一下SAS帮助文档,或者咨询下你的SAS顾问,看看哪种方法适合你的操作环境。

SAS视窗环境如果你使用SAS是按照系统提

示,或者是点击SAS的图标,那么你适合使用

SAS视窗环境。在这种交互式的环境中,你可以

写入、编辑SAS程序,提交处理、浏览、输出结

果的SAS程序。此外,视窗有许多功能可以处理

不同的任务,如管理SAS文件、定制界面、访问

SAS帮助文档、导入和导出数据。你的视窗环境

的界面取决于你电脑的的类型、使用的终端、电

脑操作系统和启动SAS时实际的选择。如果你使用的是个人电脑,那么SAS视窗环境的感觉和其他软件类似。

SAS企业向导如果你有SAS企业向导软件,

这个软件在windows下即可运行。你可以用这个

软件提交程序:使用插入菜单打开代码窗口,输

入序或打开现有SAS程。之后你可以用本地电脑、

或者在远程服务器上(需要安装)运行SAS程序。

非交互式模式

非交互式模式是SAS程序语句已先存于你

系统的文件中,直接执行那个文件。非交互式模式可以让SAS

立即执行程序,通过某个指令开始($),后接文件名,如:

$ SAS Myfile.sas

批处理或后台模式在批处理或后台模式下,你的程序存

于一个文件中,SAS会自动执行,你不需要在电脑旁,如

果程序多,SAS会将这个程序进行排队等待。这种模式通常用在大型电脑中,因此通常可以一次性处理多个任务。批处理或后台模式的成本比较

低,适合于大型工作,工作完成后,结果会存于文件夹中,你可以任何时候输出查看。批处理未必适合你的操作环境,另外提交方式也会有不同,最好查看SAS帮助文档,或咨询SAS顾问。

远程提交如果你安装了CONNECT模块,可以进行远程提交,即在一台电脑上(本地)编写程序,在另一台电脑上(远程)处理,结果会返回本地电脑。当你处理大型任务,而你的电脑性能又不够时,可以连接到远程的高性能电脑上,也可访问远程电脑的分享文件。

交互行模式交互行模式下,SAS每次提示用户输入一个语句,想改正输入的语句不是那么容易的。因此除非你足够优秀和熟练,否则最好不要用这个模式。你可以用endsas并回车来退出这个模式:

Endsas;

如果你想知道为什么会进入这个模式,并且在以后避免进入,你需要咨询SAS顾问。

1.6 SAS视窗环境中的视窗和命令

SAS视窗SAS有五种基本的视窗(窗口):结果视窗、资源管理器视窗、和三种程序视窗:程序编辑、日志、输出。除此之外,在获得SAS帮助、改变SAS系统选项、定制SAS人机会话等情况时,可能还会用到其他的视窗,下图显示了Microsoft Windows SAS会话中默认的视图:

编辑窗口编辑窗口中你可以输入、编辑、提交SAS程序。Windows操作环境默认的

是增强型编辑窗口,它对语法更敏感,并用颜色标注程序,使得更容易理解和发现错误。其他操作环境默认的是程序编辑窗口,并随操作环境和SAS版本的不同,界面特征也不同。

日志窗口日志窗口是关于SAS会话的说明。在提交SAS程序之后,任何的说明、错误、警告和程序语句都会显示在日志窗口上。

输出窗口如果程序产生需输出的结果,那么会反映在在输出窗口中。

结果窗口结果窗口就像输出窗口的一个目录表,以提纲形式列出了输出的每一个部分。

SAS命令SAS命令是为了不同的任务,你有三种方式发出命令:菜单、工具栏、SAS 命令栏,如下图:

菜单(大部分操作环境都会有一个下拉菜单要么在窗口上方要么在屏幕上方…..oh my god!略)

工具栏(不是所有的操作环境都有工具栏…略!)

SAS命令栏可以在这里输入SAS命令,一些操作环境中,命令栏坐落在工具栏中,另一些操作环境中,每个SAS窗口都有一个命令行(command line),通过语句command=>激活。大部分命令是可以直接用菜单进行选择的。

控制你的视窗你可以通过菜单、命令栏、点击的方式激活任何一种程序窗口。

1.7 在SAS视窗环境中提交程序

将你的程序放入编辑窗口中你可以通过输入,或者打开现有程序文件的方式将程序放入编辑窗口中。打开现有的程序文件,可以通过菜单-打开,也可以通过工具栏的图表,或者直接将文件拖放到编辑窗口中。

提交你的程序你有几种方式来提交程序:

使用工具栏的提交图表

激活命令栏,输入submit命令回车。

从run运行的下拉菜单中选择submit提交

左图显示了如何在windows视窗中提交增强型编辑窗口的程序。

访问SAS日志和输出提交程序后,日志窗口和输出窗口会有相应的日志和结果显示,如果你使用的是增强型编辑窗口,之前的程序会保留,如果使用的是程序编辑窗口,之前的程序不会保留。如果你的程序产生了输出,那么结果窗口会显示这些输出的目录,下图是一个例子,显示了提交程序之后,增强型编辑窗口、日志窗口、结果窗口、输出窗口的样式。

取回你的程序如果不幸你的程序出现了问题,你需要再次运行,对于程序编辑窗口,由于之前的程序不在保留,因此需要调回命令(recall),有两种方法:

命令窗口中输入recall

激活编辑窗口,从运行(run)下拉菜

单中选择

如果不停的使用recall命令,SAS可以

一直往前调回程序,知道所有提交的程

序都被调回。

1.8 阅读SAS日志

在哪找到SAS日志SAS日志窗口的位置随着你使用的操作环境、选择的模式(视窗、非交互、批处理)、个人的设置的不同而不同。在视窗模式下,提交程序之后,日志窗口默认的位置如下图:

对于批处理和非交互模式的日志则会被写入一个文件中,你需要使用操作环境的命令来查看,一般日志文件的名字与对应的SAS程序名一直,如你的SAS程序命为abc.sas,那么日志文件的命则为abc.log

日志包含的内容日志中虽然有很多琐碎,但也包含了重要的信息。这里有一个将英里转换为千米的程序:

*Create a SAS data set named distance;

*Convert miles to kilometers;

DATA distance;

Miles=26.22;

Kilometers=1.61*Miles;

*Print the results;

PROC PRINT DATA=distance;

RUN;

运行之后,SAS的日志窗口会产生一个类似这样的日志:

①说明了你使用的SAS版本和site。

②是原始的SAS程序语句

③说明了数据步为你创建的数据集名称,观测值数和变量数。它可以帮助你确认你的程序没有丢失观测值,也没有创建你不需要的变量。

④这部分显示了数据步和过程步占用的电脑资源。当你使用的是多用户系统,或者处理大型数据而使得SAS运行占用大量时间时,这部分信息可以帮助你检查哪一步比较耗时。如果SAS程序出现错误,错误信息也会反馈在日志窗口中,说明哪里出错及出错表现。

1.9 输出窗口中浏览结果

你使用的模式不同,产看输出结果的方法也会不同。如果是在视窗模式下提交SAS程序,那么直接在输出窗口查看,如果是批处理和非交互模式下,那么结果就会保存在一个文件里,需要用命令查看。比如使用UNIX系统下的非交互模式,结果会存在一个后缀为.lst的文件里,使用cat或其他更多命令来查看。

输出窗口提交程序后,结果会出现在输出窗口中,下图是一个输出窗口的例子

打印或保存输出窗口的目录激活输出窗口的目录,在菜单栏文件(file)下拉菜单中选择打印(print)或保存(save)即可。

结果窗口结果窗口起到输出窗口的目录作用,当你的输出结果非常多时,结果窗口很有用。它可以让你很清楚的看到输出结果的每一部分。下图是一个方差分析(ANOV A)过程的结果。在这个图中,左边是输出结果的目录,点击+号将其展开,可以看见ANOV A 结果的各个部分,双击某一部分,则该部分结果就会位于输出窗口顶部。

打印或保存部分输出如果要打印结果窗口中显示的某一部分的输出,则需将鼠标

移到该部分上,右击,选择打印或保存即可。或者点击一下,使其黑亮,再从菜单栏文件(file)的下拉菜单中选择输出或保存。

1.10 创建HTML输出

如果使用的是SAS视窗环境,那么可以为结果创建超文本标记语言(HTML)格式。

参数选择窗口选择菜单栏中工具(tools)下拉菜单的选项(options)-参数选择(preferences)。选择结果(result)选项卡,如下图所示:

这个参数选择窗口上,有一个“创建列表(create listing)”选项,默认的输出就是列表输出。下面还有“创建HTML”选项,用来创建HTML。样式(style)选项用来为HTML选择一个风格样式。选择之后,点击OK。

结果浏览窗口和结果窗口(注意下面提到的三种窗口:结果浏览窗口result viewer,结果窗口results window,输出窗口output window)

一旦选择了HTML输出,每次运行程序的时候都会自动出现一个结果浏览窗口(result viewer),下图显示了在运行了一个均值和输出的程序后,出现两个窗口:结果浏览窗口——显示HTML输出,结果窗口——显示输出的目录。

结果浏览窗口一次只显示输出结果的一个部分,通过选择结果窗口的目录,可以查看其他的部分。值得注意的是,结果窗口给出的目录中,每一个部分都给出了两种相同的目录,一个

是链接到输出窗口,一个是链接到结果浏览窗口

保存结果浏览窗口的输出(output of result viewer)的方法:激活结果浏览窗口,选择菜单栏文件(file)下拉菜单的保存(save as)、输出(print)。

可以在style中为输出选择不同的风格,如下图就是D3D的风格:

1.11 SAS数据的逻辑库

SAS逻辑库库只是数据集文件存放的地点。打开SAS视窗模式后,会看到SAS资源管理器窗口(explore),双击逻辑库图标,资源管理器窗口会显示出所有已定义的图标。要返回前一级窗口,选择查看(view)-向上一级(up one level),或者在工具栏中直接点击向上一级

图标。

逻辑库窗口打开逻辑库窗口后,除了自己创建的库外,至少会呈现三个逻辑库:sashelp,sasuser,和work,如果安装了某些SAS模块,还有一些特别的逻辑库,比如SAS/GRAPH模块的Maps逻辑库。Sashelp包含了控制SAS会话以及样本数据集的一些信息。WORK是sas数据集的临时储存地点,创建的数据集如果没有指定库,则默认储存在这里,关闭程序时则自动删除数据集。也可以更改默认的库,从而不是临时库。

创建新逻辑库 创建新逻辑库有两种方法:在逻辑库

窗口中选择文件(file )下拉菜单的新建(new );或者

直接右键——新建。

在新建逻辑库(new library )窗口中,为你的逻辑库起

一个名字,这里叫做Mylib,指定库的存放路径。如果

不想每次启动SAS 都要调用这个库,则勾选启动时启

用(enable at startup )即可。

这是一个新建的Mylib逻辑库的视图。

1.12 用SAS资源管理器访问SAS数据集

可以利用SAS资源管理器打开数据集、浏览、编辑,也可以列出数据集的信息,如创建时间和变量名。

目录窗口打

开一个逻辑库,

进入一个目录

窗口,显示这个

库中所有的文

件和文件夹。右

图的目录窗口

中显示Mylib逻

辑库有三个文件:Customers,Models,orders。双击某文件,则可以打开这个文件的可视视图。

可视视图这个窗口允许你创建、浏览、编辑数据集。

列出SAS数据集的属性用资源

管理器还可以列出SAS数据集的一些属

性情况,右击某文件,选择下拉菜单的属

性(properties),属性窗口显示了SAS数

据集的属性信息,如创建时间、行列数等。

如果选择列(columns)选项卡,则

出现数据的列信息

1.13 使用SAS系统选项

SAS系统选项是影响SAS运行的一些参数,比如输出的显示、内存的占用、错误的处理等问题。这些小问题由SAS为你设定好,你也可以改变它。

SAS系统选项的参数不是所有都适合你的操作环境,适合于你的再SAS的帮助文档中给出。可以通过打开SAS系统选项窗口或使用option程序来查看你的SAS系统参数。Option程序的语句如下:

Proc options;

Run;

有四种方法可以指定系统选项的参数,SAS帮助文档会告诉你哪种适合你的操作系统:

1. 系统管理员会创建一个包含了系统选项设定的配置文件,每次SAS启动时都会访问这个文件。

2. 在启动SAS之后,根据系统提示指定系统选项。

3. 如果使用SAS视窗环境,可以从SAS系统选项中改变已选择的选项。

4. 使用OPTIONS语句。

这四种方法按照优先性排列,方法2优先于方法1,方法3优先于方法2,方法4优先于3。如果使用SAS视窗环境,方法3,4最好。

OPTIONS语句OPTIONS语句是SAS程序的一部分,并可影响之后的所有语句。由OPTIONS关键词开头,后面是相关选项。比如:

OPTIONS LINESIZE=80 NODA TE;

OPTIONS语句既不属于数据步也不属于过程步,这个全局变量可以出现在程序的任何部分,但放在开头最有意义,你可以很容易看到哪些选项在发挥作用。如果OPTIONS语句只出现在数据步或者过程步中,那么它会影响那个过程,和下面的过程(If the OPTIONS statement is in a DATA or PROC step,then it affects that stepand the following steps.)。注意,后面的

OPTIONS语句会覆盖前面的,即以后面的OPTIONS为主。

窗口通过这个

窗口也可以改变

系统选项。可以

通过在命令栏中

输入“OPTIONS”,

或从工具(tools)

下拉菜单中选择.

窗口出来后,找

到要修改的部分,

右击——修改值

(modify the

value)即可。

JAVA8-新特性总结及案例

一 Lambda函数(箭头函数) Lambda 表达式,也可称为闭包,它是推动Java 8 发布の最重要新特性。Lambda 允许把函数作为一个方法の参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变の更加简洁紧凑。 (parameters) ->expression或(parameters) ->{ statement1; statement2; ...... } lambda表达式の重要特征: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选の参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选の大括号:如果主体包含了一个语句,就不需要使用大括号。 可选の返回关键字:如果主体只有一个表达式返回值则编译器会自动返回,大括号需指定表达式返回数值。 本质上,Lambda函数是对匿名内部类对象の简写。 应用举例1(比较JAVA7与JAVA8):Lambda函数做类の属性 运行结果: 应用举例2(比较JAVA7与JAVA8):Lambda函数做main函数变量

应用举例3: 应用举例4:多线程启动时使用Lambda函数

应用举例5:在 1.7中,匿名内部类只能使用定义为finalの外部变量,1.8会自动为Lambda函数使用の外部变量加上final,因此final可以省略不写。

二方法引用(::方法名 ----》调用了方法对象)应用举例1:

应用举例2:

三函数式接口 函数式接口(Functional Interface)就是一个具有一个方法の普通接口。函数式接口可以被隐式转换为lambda表达式。 函数式接口可以现有の函数友好地支持 lambda。 JDK 1.8之前已有の函数式接口: https://www.doczj.com/doc/df16977687.html,ng.Runnable java.util.concurrent.Callable java.security.PrivilegedAction https://www.doczj.com/doc/df16977687.html,parator

JAVA发展史详细版

JAVA发展史 从JDK诞生到现在已经有15年的时间了。沧海桑田一瞬间。转眼15年过去了,JDK已经发布了6个版本。在这15年里诞生了无数和Java相关的技术和标准。现在让我们进入时间隧道,重新回到1995年,再来回顾一下Java的发展轨迹和历史变迁。 一、 JDK前传 在这个世界上,熟悉Java历史的人非常多,如果要问一个人Java是从哪年诞生的,也许大多数人都会回答是1995年(这个非常好记,因为微软的Windows95也是在这一年发布的)。但事实上Java早在上个世纪90年代初就开始酝酿了。 1991年4月,Sun公司的James Gosling领导的绿色计划(Green Project)开始着力发展一种分布式系统结构,使其能够在各种消费性电子产品上运行。而Green项目组的成员一开始使用C++语言来完成这个项目,由于Green项目组的成员都具有C++背景,所以他们首先把目光锁定了C++编译器,Gosling首先改写了C++编译器,但很快他就感到C++的很多不足,需要研发一种新的语言Java来替代它,一杯飘香的咖啡成为了它的标志。 在17 个月后,整个系统完成了,这个系统是更注重机顶盒式的操作系统,不过在当时市场不成熟的情况下,他们的项目没有获得成功,但Java语言却得到了Sun总裁McNealy 的赏识。 直至 1994年下半年,由于Internet的迅猛发展和环球信息网 WWW的快速增长,第一个全球信息网络浏览器Mosaic诞生了;此时,工业界对适合在网络异构环境下使用的语言有一种非常急迫的需求;Games Gosling决定改变绿色计划的发展方向,他们对Oak进行了小规模的改造,就这样,Java在1995年的3月23日诞生了!Java的诞生标志着互联网时代的开始,它能够被应用在全球信息网络的平台上编写互动性及强的Applet程序,而1995年的Applet无疑能给人们无穷的视觉和脑力震荡。我们姑且将Java的这段历史称为Java 前传吧。 其实Java的诞生颇有那么一股“有心栽花花不开,无心插柳柳成阴”的味道。就象当年Unix和它的前身MULTICS系统一样。 二、JDK的幼年时期(1995~1998) Sun继Green项目后又经过了几年的研究,终于在1995年5月23日在SunWorld'95上正式发布Java和HotJava浏览器。在同年,有很多公司先后获得了Java许可证,如Netscape 在1995年8月,Oracle在1995年10月分别获得了Java许可证。Sun在 1995年发布第一个Java版本后,于1996年1月宣布成立新的业务部门──JavaSoft部,这个部分主要负责开发、销售并支持基于Java技术的产品,由AlanBaratz先生任总裁。 在1995年Sun虽然推出了Java,但这只是一种语言,而要想开发复杂的应用程序,必须要有一个的强大的开发库支持还行。因此,Sun在1996 年1月23日发布了JDK1.0。这个版本包括了两部分:运行环境(即JRE)和开发环境(即JDK)。在运行环境中包括了核心API、集成API,用户界面API,发布技术,Java虚拟机(JVM)五个部分。而开发环境还包括

windows xp下安装java8(jdk8)

windows xp下安装java8(jdk8) 分步阅读 java8已经正式发布有一段日子了,带来了令人振奋的新特性。但是java8有一个无法接受的特点就是不支持windows XP。安装时会报出[无法定位程序输入点RegDeleteKeyExA 于动态链接库ADVAPI32.dll 上。]错误。如下图所示,此文就为大家分享如何解决此恶心问题 工具/原料 ?jdk8安装包 ?7-zip解压工具 方法/步骤 1. 1 下载jdk8安装包,地址: https://www.doczj.com/doc/df16977687.html,/technetwork/java/javase/downloads/jdk8-do wnloads-2133151.html 2. 2 下载7-zip解压工具包并安装,地址: 32位版:https://www.doczj.com/doc/df16977687.html,/sevenzip/7z920.exe

64位版:https://www.doczj.com/doc/df16977687.html,/sevenzip/7z920-x64.msi 3. 3 将下载所得java安装包放到将要安装的jdk路径下,我是放在C:\Program Files\Java\jdk8下的;使用7-zip解压工具将安装包解压到当前目录下得到tools.zip包 4. 4 将提取到的tools.zip再次通过7-zip解压到当前目录下得到jdk文件: bin db include jre lib LICENSE

README.html THIRDPARTY LICENSEREADME-JAVAFX.txt THIRDPARTY LICENSEREADME.txt javafx-src.zip release 5. 5 打开lib目录你会发现以前的tools.jar变成了tools.pack以及jre/lib下的rt.jar变成了rt.pack

Java培训大纲

MLDN 人才培养大纲(V 3.0) 1、魔乐科技软件学院(MLDN) 魔乐科技软件学院,位于中关村科技园区德胜科技园内,是一家从事高端JAVA技术培养的技术公司,由各大型软件 企业的高级软件开发工程师、系统架构师等技术骨干组成的高端IT人才培养公司,致力于培养Linux平台、Oracle大型关系数据库、JAVA EE技术、Android开发者和企业级应用的中高级软件人才。自成立以来,为各大型软件公司输送了大量的 中、高级人才,其中,也有不少学员就业于IBM、新浪、中科软等大型公司,受到各用人单位的好评。 2、培养目标:高级软件开发工程师 本中心专注于培养企业需求量大、就业率高,但人才市场紧缺的面向行业的Java EE架构和开源的Struts/Struts 2.0/Hibernate/Spring框架和开源的JBoss/Tomcat中间件服务器、面向,Oracle、MySQL数据库,精通Java开发语言,精通Android 3G技术开发的中高级软件工程师。成绩合格的毕业生将具备1-2年大型软件设计及开发经验。 3、完备合理的知识学习体系 ·操作系统:Windows Linux ·中间件:Tomcat JBoss ·数据库:MySQL Oracle ·JAVA SE:环境搭建基础程序面向对象应用程序 Java新特性 JDBC ·JAVA EE WEB:HTML JavaScript JSP JavaBean DAO Smartupload Servlet MVC ·开源框架:Struts 1.x AJAX Hibernate Spring Struts 2.0 JSF DWR JSON JQuery ·分布式开发:RMI Web Services EJB 3.0 ·搜索引擎:Lucene、HTMLParser、Heritrix ·工作流:JBPM ·XML:语法、解析 4、主流企业开发技术 JAVA SE / JAVA EE JBoss / Tomcat / MyEclipse Oracle / MySQL Struts / Struts 2.0 / Spring / Hibernate XML / EJB 3.0 / Web Services 5、“项目/案例”教学法-让你在培训期增加300%项目经验 本课程中采用众多的企业项目案例,由浅入深进行逐层讲解,每个项目都源自于真实项目,包括电信计费系统、信息

黑马集合知识测试(带解析)

集合部分测试题 考试宣言: 同学们,考试考多少分不是我们的目的!排在班级多少的名次也不是我们的初衷! 我的考试的目的是要通过考试中的题目,检查大家在这段时间的学习中,是否已经把需要掌握的知识掌握住了,如果哪道题目你不会做,又或者做错了,那么不用怕,考完试后,导师讲解的时候你要注意听!那时候学会了,记住了,也一样不影响你高薪就业!本套题共40道不定项选择题,其中单选30道,多选10道。单选2 分/题,多选4分/题。多选题不全对半分,全对满分。 1.单列集合的顶层接口是( ) a)java.util.Map b)java.util.Collection//这是单列集合的老大,必须记住 c)java.util.List d)java.util.Set 2.ArrayList类的底层数据结构是( ) a)数组结构//看名字也能猜出来底层的数据结构. b)链表结构 c)哈希表结构 d)红黑树结构 3.LinkedList类的特点是( ) a)查询快 b)增删快//由于底层是链表结构,所以增删快,查询慢.

c)元素不重复 d)元素自然排序 4.Vector类的特点是( ) a)线程同步//这是早期工具的特性之一,安全性高,后来出现的集合都是求效率.b)线程不同步 c)增删快 d)底层是链表结构 5.关于迭代器说法错误的是( ) a)迭代器是取出集合元素的方式 b)迭代器的hasNext()方法返回值是布尔类型 c)List集合有特有迭代器ListIterator d)next()方法将返回集合中的上一个元素//返回下一个元素. 6.在我们所学知识中,下面哪几项是接口( ) a) java.util.Map b) java.util.Collection c) java.util.List d) java.util.Set 7.实现下列哪个接口,可以启用比较功能( ) a)Runnable接口 b)Iterator接口 c)Serializable接口

JAVA7 新特性介绍(官方公布)中文版

Java7 新特性集合(中文版) Java 7平台标准版文档 甲骨文有两个产品实现Java平台标准版(Java SE)7:Java SE的开发工具包(JDK),7和Java SE的运行环境(JRE)7。 JDK 7中的JRE 7的一个超集,并包含在JRE 7的一切,再加上开发applets 和应用程序所必需的编译器和调试器等工具。 JRE7提供了类库,Java虚拟机(JVM),和其他运行使用Java编程语言编写的applets和应用程序所需的组件。 下面的概念图说明了Java组件技术:

文档之“新” 文档定期更新,以提供在Java平台上的新功能的深入了解信息的开发。一些最近的更新包括: 1.Swing 包括以下主题: JLayerClass Swing包中的新组件,可支持自定义绘制 NimbusLook & Feel Swing包中最新的U组件,可支持自定义皮肤 Heavyweightand Lightweight Components Swing包中的最新属性,可实现透明和半透明窗体 Shapedand Translucent Windows Swing包中的最新组件,可实现自定义形状窗体Hue-Saturation-Luminance(HSL) Color Selection in JColorChooser Class色彩选择器,可支持色彩饱和度和亮度

Image 2 TranslucentWindow Image 3 GradientWindow Image 4 ShapedWindow 2. Java SE 7的网络增强 URLClassLoader.close方法已被添加。这种方法有效地消除了如何支持从一个特定的代码库,特别是在JAR文件中加载的类和资源更新的实现的问题。有关更多信息,请参阅合为URLClassLoader。

Java各版本特性一览-从Java1.0到Java12

Java各版本特性一览-从Java1.0到Java12 JDK Version 1.0 1996-01-23 Oak(橡树) 初代版本,伟大的一个里程碑,但是是纯解释运行,使用外挂JIT,性能比较差,运行速度慢。 JDK Version 1.1 1997-02-19 – JDBC(Java DataBase Connectivity); –支持内部类; – RMI(Remote Method Invocation) ; –反射; – Java Bean; JDK Version 1.2 1998-12-08 Playground(操场) –集合框架; – JIT(Just In Time)编译器; –对打包的Java文件进行数字签名; – JFC(Java Foundation Classes), 包括Swing 1.0, 拖放和Java2D类库; – Java插件; – JDBC中引入可滚动结果集,BLOB,CLOB,批量更新和用户自定义类型; – Applet中添加声音支持 JDK Version 1.3 2000-05-08 Kestrel(红隼) – Java Sound API; – jar文件索引; –对Java的各个方面都做了大量优化和增强; JDK Version 1.4 2004-02-06 Merlin(隼) – XML处理; – Java打印服务; – Logging API; – Java Web Start;

– JDBC 3.0 API; –断言; – Preferences API; –链式异常处理; –支持IPV6; –支持正则表达式; –引入Imgae I/O API JAVA 5 2004-09-30 Tiger(老虎) –泛型; –增强循环,可以使用迭代方式; –自动装箱与自动拆箱; –类型安全的枚举; –可变参数; –静态引入; –元数据(注解); – Instrumentation; JAVA 6 2006-12-11 Mustang(野马) –支持脚本语言; – JDBC 4.0API; – Java Compiler API; –可插拔注解; –增加对Native PKI(Public Key Infrastructure), Java GSS(Generic Security Service),Kerberos和LDAP(Lightweight Directory Access Protocol)支持; –继承Web Services; JAVA 7

PowerBI技巧之Java 10 新特性介绍

作为当今使用最广泛的编程语言之一的 Java 在 2018 年 3 月 21 日发布了第十个大版本。为了更快地迭代、更好地跟进社区反馈,Java 语言版本发布周期调整为每隔 6 个月发布一次。Java 10 是这一新规则之后,采用新发布周期的第一个大版本。Java 10 版本带来了很多新特性,其中最备受广大开发者关注的莫过于局部变量类型推断。除此之外,还有其他包括垃圾收集器改善、GC 改进、性能提升、线程管控等一批新特性。本文主要针对Java 10 中的新特性展开介绍,希望读者能从本文的介绍中快速了解 Java 10 带来的变化。 局部变量类型推断 局部变量类型推断是 Java 10 中最值得开发人员注意的新特性,这是 Java 语言开发人员为了简化 Java 应用程序的编写而进行的又一重要改进。 这一新功能将为 Java 增加一些新语法,允许开发人员省略通常不必要的局部变量类型初始化声明。新的语法将减少 Java 代码的冗长度,同时保持对静态类型安全性的承诺。局部变量类型推断主要是向 Java 语法中引入在其他语言(比如 C#、JavaScript)中很常见的保留类型名称var。但需要特别注意的是:var不是一个关键字,而是一个保留字。只要编译器可以推断此种类型,开发人员不再需要专门声明一个局部变量的类型,也就是可以随意定义变量而不必指定变量的类型。这种改进对于链式表达式来说,也会很方便。以下是一个简单的例子: 清单 1. 局部变量类型推断示例 1. var list = new ArrayList(); // ArrayList 2. var stream = list.stream(); // Stream 看着是不是有点 JS 的感觉?有没有感觉越来越像 JS 了?虽然变量类型的推断在 Java 中不是一个崭新的概念,但在局部变量中确是很大的一个改进。说到变量类型推断,从 Java 5 中引进泛型,到 Java 7 的<>操作符允许不绑定类型而初始化 List,再到 Java 8 中的 Lambda 表达式,再到现在 Java 10 中引入的局部变量类型推断,Java 类型推断正大刀阔斧地向前进步、发展。 而上面这段例子,在以前版本的 Java 语法中初始化列表的写法为: 清单 2. Java 类型初始化示例 List list = new ArrayList(); Stream stream = getStream(); 在运算符允许在没有绑定ArrayList <>的类型的情况下初始化列表的写法为: 清单 3. Java 7 之后版本类型初始化示例 List list = new LinkedList<>(); Stream stream = getStream(); 但这种 var 变量类型推断的使用也有局限性,仅局限于具有初始化器的局部变量、增强型 for 循环中的索引变量以及在传统 for 循环中声明的局部变量,而不能用于推断方法的参数类型,不能用于构造函数参数类型推断,不能用于推断方法返回类型,也不能用于字段类型推断,同时还不能用于捕获表达式(或任何其他类型的变量声明)。

JDK7新特性版_

https://www.doczj.com/doc/df16977687.html,- 做最棒的软件开发交流社区 作者: janeky https://www.doczj.com/doc/df16977687.html, <p>这段时间陆陆续续写了这个JDK7系列的文章,希望对大家有用。从简介到语法,到各个 特性,尽量用简单的例子来说明。更多的技术文章,欢迎访问我的 blog<a href="https://www.doczj.com/doc/df16977687.html,">https://www.doczj.com/doc/df16977687.html,</ a></p>

目 录 1. jdk7 1.1 JDK7新特性<一>概述 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .3 1.2 JDK7新特性<二> 语法 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .7 1.3 JDK7新特性<三> JDBC4.1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .13 1.4 JDK7新特性<四> NIO 2.0 文件系统 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .15 1.5 JDK7新特性<五> fork/join 框架 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .17 1.6 JDK7新特性<六> 监听文件系统的更改 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .23 1.7 JDK7新特性<七> 遍历文件树 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .26 1.8 JDK7新特性<八>异步io/AIO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .29

jdk6新特性

JDK6.0(Mustang)

综述 ?2006 年底,Sun 公司发布了Java Standard Edition 6(Java SE 6)的最终正式版,代号Mustang(野马) ?跟Tiger(Java SE 5)相比,在性能方面有了不错 的提升,但在API 库方面的新特性略少 ?提供了许多实用和方便的功能:脚本,Web service,XML,编译器API,数据库,JMX,网络和Instrumentation 方面都有不错的新特性和功能加强 ?下面列举了一些主要的特性:

◆Web Services ◆Scripting ◆Database ◆More Desktop APIs ◆Monitoring and Management ◆Compiler Access ◆Pluggable Annotations ◆Network ◆Console

Web Services and XML Common Annotations JAXB2 StAX Web Services metadata

Common Annotations ?Common annotations原本是Java EE 5.0(JSR 244)规范的一部分,现在SUN把它的一部分放到了Java SE 6.0中 ?为其他相关的Java技术定义一套公共Annotation,避免重复建设,保证Java SE和Java EE 各种技术的一致性 随着Annotation元数据功能(JSR 175) 加入到Java SE 5.0里面,很多Java 技术(比如EJB,Web Services)都会用Annotation部分代替XML文件来配置运行参数(或者说是支持声明式编程,如EJB的声明式事务), 如果这些技术为通用目的都单独定义了自己的Annotations,显然有点重复建设

Oracle EBS 新特性

Oracle E-Business Suite 12 新特性 Oracle电子商务套件继续保持方便易用及低成本实施/升级、管理和使用全球应用软件的特性。采用最新版本的应用软件,用户能应对不断出现的复杂性,其在管理系统时具有以下规划的性能: 1)用户生产力包(UPK) 在关键业务流方面提供了预供的培训,其详细的内容能促进用户采用并提高生产力。 2)在整合的网络中进行持续的SOA投入能更好地支持业务流程集成。 3) 针对生命周期管理性能的改善,包括物质供应、系统监测、配置管理和根源分析,这些设计都能降低IT成本。 新增功能包括: ?Oracle利润管理器(Oracle Profitability Manager)给用户新增了利润监控能力,帮助企业根据产品、渠道、细分市场及深入到客户中间的能力等全球化运营指标进行利润分析并形成报告。即:,对产品、渠道、各个细分业务部门及任何业务领域进行盈利能力分析和即时报告,甚至可以追踪到用户。 ?Oracle战略网络优化器(Oracle Strategic Network Optimization)帮助用户通过成本和收入因素持续地评估一切影响公司全球供应链运行的决策。 ?Oracle项目组合分析(Oracle Projects Portfolio Analysis)帮助用户根据假定情景分析结果来选择、投资某些全球项目并进行优先级的排序。帮助企业跨不同地域和业务领域选择与全球业务目标一致的项目。Oracle项目组合分析软件能够根据各种条件对项目进行分析,并在此基础上选择项目、划拨资金并排定全球项目的实施顺序。Oracle项目每日商业智能还能帮助用户迅速评估概括性的财务和运营信息、查明问题并深入了解项目的具体实施状况和详细的资源使用情况。 ?Oracle人力资本管理现在可以专门对数据进行基于角色的分析,这可以帮助企业做出更有根据的、更具有战略性和战术性的人力资本管理决策。 开展全球业务,提高竞争力 目前,众多公司面临如何有机运营跨地区或部门的各业务线的高难度问题。Oracle电子商务套件第12版为管理跨越不同业务部门的流程提供新的功能。例如:计划在Oracle财务应用软件中添加的新功能可以为单笔交易分别给当地分公司和总公司的GAAP财务报表创建不同的会计分录,这样就可以使大型跨国公司从单一数据库中简化报表合并和财务报告流程。另外,计划在Oracle薪酬管理平台中添加的新功能可以从单一信息平台获取任何地区和部门的员工薪酬报表。 全球化管理,降低成本,改善业绩 一直以来,实施及管理跨越不同营业部门或地区的应用软件总是需要花费大量的时间与精力。Oracle电子商务套件则使得这些应用软件的实施、管理及调整变得轻松易行,并且帮助减少相关开支。计划中的主要领域包括: ?法规遵从–Oracle电子商务套件第12版可以使用户利用一个集中的商务规则库在单一环境下对财务业务准则进行检查及审计,从而有效地实现全球法规遵从。 ?简化的用户体验–Oracle电子商务套件第12版利用从现有及收购的产品中获得的最佳用户实践,向客户提供最便捷的用户体验。新型的用户界面确保了企业内所有使用者实现最大化的生产效率。 ?全球应用管理- Oracle电子商务套件第12版囊括了Oracle企业管理器10g预置管理功

李兴华魔乐科技Java 笔记JAVA_SE基础知识

1、课程名称:JA V A SE基础知识 2、知识点 2.1、上次课程的主要知识点 1、在Oracle的学习之中有以下几点必须重点掌握: ·数据的查询和更新操作、事务处理; ·表的建立、约束的使用、序列的使用; ·表的设计范式应该是理解。 2.2、本次预计讲解的知识点 1、JA V A学习层次; 2、Java简介及JDK的安装及配置; 3、Java SE的基础程序设计; 4、数组及方法的使用。 3、具体内容 3.1、Java的学习层次 从程序的开发来讲,Java语言是整个JA VA EE体系的核心基础部分,在这一部分之中,只有将核心概念掌握透彻了,才有可能为以后的学习提供方便。 知识点的学习:可以根据每一个关键字或者是知识点,联想到其所对应的程序及其概念,以及各个注意事项。 在整个JA VA基础部分之中,有以下三个主要部分组成: ·JA VA SE的基础部分:基本程序的一个恢复以及数组及方法的使用; ·Java SE的面向对象:此部分概念很多,而且必须全部记下; ·Java SE的应用部分:类集、IO、类库、JDBC等等。 其他的有许多的了解部分:多线程、网络编程; 理解的部分:Java SE 1.5的提供的各种新特性。 在以上的所有知识之中按照重要性来讲,一共有如下几部分: ·面向对象:所讲解的一切都是为了抽象类和接口服务的; ·类集部分:为数据结构实现; ·IO:面向对象的完美体现; ·JDBC:为以后的JA VA EE开发做准备呢。

3.2、Java简介(理解) Java:是一门编程语言,而且现在已经形成了一自己的一套完整的开发体系,被大多数的公司所支持,所以现在的Java 已经不再纯粹的作为一门语言出现了,更多的是作为一个行业的开发标准出现了。 从整个行业发展来讲,Java平台、.NET平台、Adobe FLEX等已经算是将编程霸占的已经足够多了,因为这些公司的实力较大。 ·.NET:微软支持; ·FLEX:Adobe公司支持; ·Java:Oracle/SUN支持、IBM、HP等公司支持。 Oracle要收购SUN公司,是为了形成:中间件+ 编程语言+ 开发工具+ 操作系统+ 数据库,完整商用体系; 从历史发展来看商用体系: ·IBM:Websphere + Java + WSAD(RAD)+ AIX + DB2; ·BEA + Borland + Oracle:BEA WebLogic + JBuilder + Java + Linux + Oracle; ·开源项目:Tomcat + JBoss + Eclipse + Linux + MySQL(Oracle) 一旦Oracle形成了这样的开发体系,则直接针对于微软了。 Oracle在收购SUN公司之前最早是由IBM提出收购的,因为IBM主要的软件产品线都在Java上,之所以现在的Java 这么的火暴,主要的原因还在于IBM的推广。 IBM的典型标志:只搞理论研究从来不搞实践。 Java语言最早是在1991年的时候推出的,其前身是Oak语言,这门语言的主要目的是为了竞争一个GREEN的项目,这个项目就非常类似于今天的嵌入式开发,可以通过邮件控制家电的运行,原本SUN公司的设计人员打算使用C++进行开发的,但是后来考虑到C++的复杂性,所以使用了C++语言开发了一个新的平台——OAK(橡树),但是遗憾的是此平台并没有竞争成功,被网景公司的SGL的平台所打败,从此之后Oak基本上就无家可归了。 网景公司是靠浏览器技术发展的,但是其浏览器的市场被微软抢走了,在90年代的时候网景公司的浏览器相当的流行,但是就当其达到顶峰的时候内部开始出现问题了,这个时候大部分的人不再去研究浏览器的技术了,而只是专注于市场的推广了,而就在这个时候微软一直注意着提升浏览器的技术,所以慢慢的发展势头就盖过了网景公司了。现在的网景公司的主要依靠的是FireFox浏览器来重新抢夺市场。 通过了学习浏览器技术之后,SUN公司的设计人员使用了OAK平台开发出了一套自己的浏览器技术——HotJava。一直到了1995年的时候,SUN才正式的将Oak更名为Java,同时推出了JDK 1.0开发平台,最早的Java是在浏览器中运行的一种技术——Applet。

jdk15的新特性

“JDK1.5”的一个重要主题就是通过新增一些特性来简化开发, 这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。 下面我们简单介绍一下这些新特性。 1.泛型(Generic) C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的功能。一个集合可以放任何类型的对象,相应地从集合里面拿对象的时候我们也不得不对他们进行强制得类型转换。猛虎引入了泛型,它允许指定集合里元素的类型,这样你可以得到强类型在编译时刻进行类型检查的好处。 Collection c = new ArrayList(); c.add(new Date()); 编译器会给出一个错误: add(https://www.doczj.com/doc/df16977687.html,ng.String) in java.util.Collection cannot be applied to (java.util.Date) 2.For-Each循环 For-Each循环得加入简化了集合的遍历。假设我们要遍历一个集合对其中的元素进行一些处理。典型的代码为: void processAll(Collection c){ for(Iterator i=c.iterator(); i.hasNext();){ MyClass myObject = (MyClass)i.next(); myObject.process(); } }

使用For-Each循环,我们可以把代码改写成: void processAll(Collection c){ for (MyClass myObject :c) myObject.process(); } 这段代码要比上面清晰许多,并且避免了强制类型转换。 3.自动装包/拆包(Autoboxing/unboxing) 自动装包/拆包大大方便了基本类型数据和它们包装类地使用。 自动装包:基本类型自动转为包装类.(int >> Integer) 自动拆包:包装类自动转为基本类型.(Integer >> int) 在JDK1.5之前,我们总是对集合不能存放基本类型而耿耿于怀,现在自动转换机制解决了我们的问题。 int a = 3; Collection c = new ArrayList(); c.add(a);//自动转换成Integer. Integer b = new Integer(2); c.add(b + 2); 这里Integer先自动转换为int进行加法运算,然后int再次转换为Integer. 4.枚举(Enums) JDK1.5加入了一个全新类型的“类”-枚举类型。为此JDK1.5引入了一个新关键字enmu. 我们可以这样来定义一个枚举类型。 public enum Color { Red, White, Blue

JAVA企业级应用开发技术综述

JA V A企业级应用开发技术综述 (江西理工大学信息工程学院,江西赣州341000) 摘要:本文简要介绍Java EE的发展历程,浅析了Java EE7的一些特性,展望Java EE8,最后介绍第三方开源Java EE框架,以此以加深对Java EE的理解,从而更好的应用它。 关键字:Java EE Overview of JA V A Enterprise Application and Development Technology (Faculty of Information Engineering,Jiangxi University of Science and Technology,Ganzhou341000China) Abstract:This paper describes the development process of Java EE,and analysis some features of Java EE7,prospect of Java EE8,finally,introduction the third party open source Java EE framework in order to understanding of Java EE deeply and better apply it. Keyword:Java EE 0引言 Java EE(Java Platform,Enterprise Edition)是sun公司推出的企业级应用程序版本。这个版本以前称为J2EE。能够为我们帮助开发和部署可移植、健壮、可伸缩且安全的服务器端Java应用程序。Java EE是在Java SE的基础上构建的,它提供Web服务、组件模型、管理和通信API,可以用来实现企业级的面向服务体系结构(service-oriented architecture,SOA)和Web2.0应用程序。 Java,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台的总称。用Java实现的HotJava浏览器(支持Java applet)显示了Java的魅力:跨平台、动态的Web、Internet计算。从此,Java被广泛接受并推动了Web的迅速发展,常用的浏览器现在均支持Java applet. 1Java EE的发展历程 (1)1991年4月:Sun Microsystems公司由James Gosling领导的一个叫“Green”的项目; (2)1995年5月:Sun在Sun World'95大会上正式发布Java; (3)1996年1月:Sun公司发布了Java开发工具包JDK1.0; (4)1997年2月:Sun公司发布了JDK1.1; (5)1998年:Sun公司发布了JKD1.2和JSP/Servlet、EJB规范;

JAVA8 新特性总结及案例

一L a m b d a函数(箭头函数) Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。 使用 Lambda 表达式可以使代码变的更加简洁紧凑。 (parameters) -> expression或(parameters) ->{ statement1; statement2; ...... } lambda表达式的重要特征: 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。 可选的参数圆括号:一个参数无需定义圆括号,但多个参数需要定义圆括号。 可选的大括号:如果主体包含了一个语句,就不需要使用大括号。 可选的返回关键字:如果主体只有一个表达式返回值则编译器会自动返回,大括号需指定表达式返回数值。 本质上,Lambda函数是对匿名内部类对象的简写。 应用举例1(比较JAVA7与JAVA8):Lambda函数做类的属性 运行结果: 应用举例2(比较JAVA7与JAVA8):Lambda函数做main函数变量 应用举例3: 应用举例4:多线程启动时使用Lambda函数 应用举例5:在中,匿名内部类只能使用定义为final的外部变量,会自动为Lambda函数使用的外部变量加上final,因此final可以省略不写。 二方法引用(::方法名 ----》调用了方法对象) 应用举例1: 应用举例2: 三函数式接口 函数式接口(Functional Interface)就是一个具有一个方法的普通接口。

函数式接口可以被隐式转换为lambda表达式。 函数式接口可以现有的函数友好地支持 lambda。 JDK 之前已有的函数式接口: JDK 新增加的函数接口: 序号接口 & 描述 1 BiConsumer 代表了一个接受两个输入参数的操作,并且不返回任何结果 2 BiFunction 代表了一个接受两个输入参数的方法,并且返回一个结果 3 BinaryOperator 代表了一个作用于于两个同类型操作符的操作,并且返回了操作符同类型的结果4 BiPredicate 代表了一个两个参数的boolean值方法 5 BooleanSupplier 代表了boolean值结果的提供方 6 Consumer 代表了接受一个输入参数并且无返回的操作 7 DoubleBinaryOperator 代表了作用于两个double值操作符的操作,并且返回了一个double值的结果。 8 DoubleConsumer 代表一个接受double值参数的操作,并且不返回结果。 9 DoubleFunction 代表接受一个double值参数的方法,并且返回结果 10 DoublePredicate 代表一个拥有double值参数的boolean值方法

学习java的心得体会

学习java的心得体会 国家队每一次踢球失败后都要说这么一句:我们回去后要好好总结,下次会打得更好! 总结不代表就能改过原有的不足,也不代表就能进步了 (一)充分利用MSDN因为我个人觉得它胜过任何一本编程参考书 MSDN是 Microsoft 当前提供的有关编程信息的最全面的资源,它包含微软最新的技术数据库,加上易学易用的全文检索功能,让您迅速找到任何您需要的技术参考数据 (二)加强自我管理,善于作自我总结,分析自已的优点及缺点 中国境内百分之八十以上的 __在百分之八十以上的场合的讲话中都有类似的观点,所以在这里我是不多说了,反正这一条用在什么行业什么地方都不会有错的,人生最大的敌人不是就是自已吗?管好自已认清自已,那还有什么搞不定的? (三)养成良好的文档习惯

良好的文档是正规研发流程中非常重要的环节,一个好的程序是先写好文档再进行编程的,在设计文档的指导下,才能写出安全的代码。如果你不写文档,一开始就写程序,这样你就不会按已设计好的路线走,而是想到哪写到哪。小功能还好说,要是大功能,就容易混乱甚至失控.那么如何写文档呢?其实我认为没有统一的标准,虽然国家及一些NB的人总结了很多的模板,但每个人的习惯不同,如果你不加以修改或创新,就套用某个标准,我相信写起来会很吃力及说不清的难受,因此我觉得只要能将你的设计思想及实现算法或步骤描述清楚就是好的文档,我强烈建议广大程序员朋友们在写文档时要善于用图表来说明你的思想,我们不是作家,也可能作文都经常性地不及格,写出五官端正的文章对我们来说可能不容易啊!好好地利用 VISIO,ROSE或别的工具来表达你的思想吧! (五)代码风格要规范,严谨,效率要高。 (六)掌握好跟踪调试技巧. 跟踪调试程序是一件繁琐而又复杂的事情,所以掌握必要的调试策略及技巧却可以使这些工作变得轻松起来.强烈建议你去看一下老美Everett N.McKay及Mike Wooding写的书<>,你一定受益匪浅. (七)养成自我测试的习惯

相关主题
文本预览
相关文档 最新文档