2018年二级Java复习资料
1.Java历史
在上世纪90年代初,sun公司有一个叫做Green的项目,目的是为家用消费电子产品开发一个分布式代码系统,这样就可以对家用电器进行控制,和它们进行信息交流。詹姆斯·高斯林(JamesGosling)等人基于C++开发一种新的语言Oak(Java的前身)。Oak是一种用于网络的精巧而安全的语言。Sun公司曾依此投标一个交互式电视项目,但结果是被SGI打败,Sun打算抛弃Oak。随着互联网的发展,Sun看到了Oak在计算机网络上的广阔应用前景,于是改造Oak,在1995年5月以“Java”的名称正式发布,从此Java走上繁荣之路。
当然提到Java历史,不得不提的一个故事就是Java的命名。开始“Oak”的命名是以项目小组办公室外的树而得名,但是Oak商标被其他公司注册了,必须另外取一个名字,传说有一天,几位Java成员组的会员正在讨论给这个新的语言取什么名字,当时他们正在咖啡馆喝着Java(爪哇)咖啡,有一个人灵机一动说就叫Java怎样,得到了其他人的赞同,于是,Java这个名字就这样传开了。当然对于传说,了解一下就好了,不必过于认真。
2.Java 作为学习Java的人士,对Java历史上发生的大事件有一个了解是应该的。
JDK(JavaSoftwareDevelopKit)):Java软件开发工具包。JDK是Java的核心,包括了Java运行环境,一系列Java开发工具和Java基础的类库。目前主流的JDK是Sun公司发布的JDK,除了Sun之外,还有很多公司和组织都开发了自己的JDK,例如IBM公司开发的JDK,BEA公司的Jrocket,还有GNU组织开发的JDK等等。
3.Java特点
简单地说,Java具有如下特点:简单的、面向对象、平台无关、多线程、分布式、安全、高性能、可靠的、解释型、自动垃圾回收等特点。
这里只解释一下平台无关和分布式,其余的在后面会逐步接触到。
3.1平台无关
所谓平台无关指的是:用Java写的程序不用修改就可在不同的软硬件平台上运行。这样就能实现同样的程序既可以在Windows下运行,到了Unix或者Linux环境不用修改就直接可以运行了。Java主要靠Java虚拟机(JVM)实现平台无关性。
平台无关性就是一次编写,到处运行:Write Once, Run Anywhere 3.2分布式
分布式指的是:软件由很多个可以独立执行的模块组成,这些模块被分布在多台计算机上,可以同时运行,对外看起来还是一个整体。也就是说,分布式能够把多台计算机集合起来就像一台计算机一样,从而提供更好的性能。
4.Java标准组织——JCP JCP(Java Community Process)是一个开放的国际组织,成立于 1995 年,主要职能是发展和更新 Java 技术规范、参考实现(RI)、技术兼容包(TCK)。Java 技术和 JCP 两者的原创者都是 SUN 计算机公司。组织成员可以提交 JSR(Java Specification Requests),通过讨论、认可、审核以后,将进入到下一版本的规范里面。
也就是说 JCP 是目前 Java 技术发展事实上的控制者和领领导者。
二、Java从代码到运行
用一个图来描述这个过程会比较容易理解:
1.编写代码
首先把我们想要计算机做的事情,通过 Java 表达出来,写成 Java 文件,这个过程就是编写代码的过程。如上图所示的 Hello.java 文件。
2.编译
写完 Java 代码后,机器并不认识我们写的 Java 代码,需要进行编译成为字节码,编译后的文件叫做 class 文件。如上图所示的 Hello.class 文件。
3.类装载ClassLoader 类装载的功能是为执行程序寻找和装载所需要的类。
ClassLoader能够加强代码的安全性,主要方式是:把本机上的类和网络资源类相分离,在调入类的时候进行检查,因而可以限制任何“特洛伊木马”的应用。
4.字节码(byte-code)校验
功能是对 class 文件的代码进行校验,保证代码的安全性。
Java 软件代码在实际运行之前要经过几次测试。JVM 将代码输入一个字节码校验器以测试代码段格式并进行规则检查--检查伪造指针、违反对象访问权限或试图改变对象类型的非法代码。注意----所有源于网络的类文件都要经过字节码校验器字节码校验器对程序代码进行四遍校验,这可以保证代码符合JVM 规范并且不破坏系统的完整性。如果校验器在完成四遍校验后未返回出错信息,则下列各点可被保证:
-类符合JVM规范的类文件格式所有操作代码的参数类型将总是正确的对象域访问是合法的
5.解释(Interpreter)可是机器也不能认识 class 文件,还需要被解释器进行解释,机器才能最终理解我们所要表达的东西。
6.运行
最后由运行环境中的 Runtime 对代码进行运行,真正实现我们想要机器完成的工作。
7.说明
由上面的讲述,大家看到,Java通过一个编译阶段和一个运行阶段,来让机器最终理解我们想要它完成的工作,并按照我们的要求进行运行。
在这两个阶段中,需要我们去完成的就是编译阶段的工作,也就是说:我们需要把我们想要机器完成的工作用 Java 语言表达出来,写成 Java 源文件,然后把源文件进行编译,形成 class 文件,最后就可以在 Java 运行环境中运行了。运行阶段的工作由 Java平台自身提供,我们不需要做什么工作。
三、Java程序设计基础
1.Java编程概况
现在你可以复习一下Java语言的背景材料,它的基本结构象C/C++,但任何用面向过程语言编写过程序的人都可以了解Java语言的大部分结构.1.1程序结构
Java语言的源程序代码由一个或多个编译单元(compilationunit)组成,每个编译单元只能包含下列内容(空格和注释除外):*一个程序包语句(packagestatement)*入口语句(importstatements)*类的声明(classdeclarations)*界面声明(interfacedeclarations)每个Java的编译单元可包含多个类或界面,但是每个编译单元最多只能有一个类或者界面是公共的。Java的源程序代码被编译后,便产生了Java字节代码。Java的运行系统工作起来如同一台虚拟机。在当前的Java实现中,每个编译单元就是一个以.java为后缀的文件。每个编译单元有若干个类,编译后,每个类生成一个.class文件。.class文件是Java虚拟机能够识别的代码。
1.2注释
三种类型如下://注释一行/*一行或多行注释*//**文档注释**/文档注释一般放在一个变量或函数定义前,指示在任何自动生成文档系统中调入。
1.3标识符
变量,函数,类和对象的名称都是标识符,程序员需要标识和使用的东西都需要标识符。在Java语言里,标识符以字符或_,$开头,后面可以包含数字,标识符是大小写有区别的,没有长度限制。
有效的标识符mynameict_networkHello_sys_path$bill 例子:inta_number;char_onechar;float$bill;1.4数据类型
Java使用五种基本类型:integer(整数),floating(浮点数),point(指针),Boolean(布尔变量),CharacterorString(字符或字符串)。
integer整数下边给出的数据表示都是整数的例子:4,15,089,0xAD00整数长度数据类型表示8bitsbyte16bitsshort32bitsint64bitslong floating浮点数下边给出的数据表示都是浮点数的例子:6.37,3.7E15,3e8 浮点数长度数据类型表示32bitsfloat64bitsdouble Boolean布尔变量下边是布尔变量的两种可能取值:
truefalseCharacter字符下边给出的都是字符的例子:a(tab)u(unicode)String字符串下边给出的都是字符串的例子:
“Thisisastringliteral”“中国科学院计算所”数组你可以定义任意类型的数组.chars[];这是字符型数组;int[]array;这是整型数组;你还可以定义数组的数组.intblock[][]=newint[2][3];数组边界在运行时被检测,避免堆栈溢出和内存崩溃.在Java里,数组实际上是一个对象,数组有一个成员变量: length。你可以用这个成员函数来查看任意数组的长度.inta[][]=newint[10][3]a.length/*10*/a[0].length/*3*/创建数组在Java里创建数组,你可使用两种基本方法:
创建一个空数组:intlist[]=newint[50];或你可以用初始数值填充数组.Stringnames[]={“Chenji”,“Yuan”,“Chun”,“Yang”};相当于下面功能:Stringnames[];names=newString[4];names[0]=newString(“Chenji”);names[1] =newString(“Yuan”);names[2]=newString(“Chun”);names[3]=newString(“Yang”);在编译时你不能象下例那样创建静态数组。intname[50];//将产生一个编译错误你也不能用new操作去填充一个没定义大小的数组。intname[];for(inti=0;i 1.5表达式
Java语言的表达式和C语言非常类似。运算符运算符(operator)优先级从高到底排列如下:.[]()++--!~instanceof*/%+-==!=&^&&||?:=op=,整数运算符在整数运算时,如果操作数是long类型,则运算结果是long类型,否则为int类型,绝不会是byte,short或char型。这样,如果变量i被声明为short或byte,i+1的结果会是int。如果结果超过该类型的取值范围,则按该类型的最大值取模。单目整数运算符是:运算符操作-单目非~位补码++加1--减1++运算符用于表示直接加1操作。增量操作也可以用加运算符和赋值操作间接完成。++lvalue(表示lvalue+=1,++lvalue也表示lvalue=lvalue+1(只要lvalue没有副作用)。--运算符用于表示减1操作。++和--运算符既可以作为前缀运算符,也可以做为后缀运算符。双目整数运算符是:运算符操作**+加-减*乘/除%取模&位与|位或^位异或=,==和!=产生boolean类型的数据。
布尔运算符布尔(boolean)变量或表达式的组合运算可以产生新的boolean值。单目运算符!是布尔非。双目运算符&,|和^是逻辑AND,OR和XOR运算符,它们强制两个操作数求布尔值。为避免右侧操作数冗余求值,用户可以使用短路求值运算符&&和||。用户可以使用==和!=,赋值运算符也可以用&=、|=、^=。三元条件操作符?:和C语言中的一样。
浮点运算符浮点运算符可以使用常规运算符的组合:如单目运算符++、--,双目运算符+、-、*和/,以及赋值运算符+=,-=,*=,和/=。此外,还有取模运算:%和%=也可以作用于浮点数,例如:a%b和a-((int)(a/b)*b)的语义相同。这表示a%b的结果是除完后剩下的浮点数部分。只有单精度操作数的浮点表达式按照单精度运算求值,产生单精度结果。如果浮点表达式中含有一个或一个以上的双精度操作数,则按双精度运算,结果是双精度浮点数。数组运算符数组运算符形式如下:
[]可给出数组中某个元素的值。合法的取值范围是从0到数组的长度减1。取值范围的检查只在运行时刻实。运算符以String对象实现。运算符“+”完成并操作,如果必要则自动把操作数转换为String型。如果操作数是一个对象,它可定义一个方法toString()返回该对象的String方式,例如floata=1.0print(“Thevalueofais”+a+“");+运算符用到例子Strings=”a=“+a;+=运算符也可以用于String。注意,左边(下例中的s1)仅求值一次。s1+=a;//s1=s1+a//若a非String型,自动转换为String型。对象运算符双目运算符instanceof测试某个对象是否是指定类或其子类的实例。例如:if(myObjectinstanceofMyClass){MyClassanothermyObject=(MyClass)myObject;„}是判定myObject是否是MyClass的实例或是其子类的实例。强制和转换Java语言和解释器限制使用强制和转换,以防止出错导致系统崩溃。整数和浮点数之间可以来回
强制转换,但整数不能强制转换成数组或对象。对象不能被强制为基本类型。
1.6Java流控制
下面几个控制结构是从C语言借鉴的。分支结构 if/else分支结构if(Boolean){statemanets;}else{statements;} switch分支结构switch(expr1){caseexpr2:statements;break;caseexpr3:statements;break;default:statements;break;} 循环结构for循环结构for(initexpr1;testexpr2;incrementexpr3){statements;} While循环结构While(Boolean){statements;} Do循环结构do{statements;}while(Boolean);一般顺序控制break[label]continue[label]reutrnexpr;label:statement;for循环例子下面是一个程序例子,画几条线,分别用红,绿,蓝颜色,这段程序可能是Java函数的一部分:intcount;for(count=1;count 2.Java变量和函数的实例
Java的类包含变量和函数。数据变量可以是一些原始的类型,如int,char等。成员函数是一些可执行的过程。例如,下面程序里:publicclassClassOne{inti;publicClassOne(){i=10;}publicvoidAdd_i(intj){i=i+j;}}ClassOne包含一个变量i和两个成员函数,ClassOne(intfirst)和Add_i(intj)。成员函数成员函数是一些可被其它类或自己类调用的处理子程序。一个特殊的成员函数叫构造函数,这个函数名称一般与本类名程相同。它没有返回值。构造函数和成员函数当你在Java里定义一个类时,你可定义一个或多个可选的构造函数,当创建本类的一个对象时用某一个构造函数来初始化本对象。用前面的程序例子来说明,当ClassOne类创建一个新实例时,所有成员函数和变量被创建(创建实例)。构造函数被调用。ClassOnemc:mc=newClassOne();关键词new用来创建一个类的实例,一个类用new初始化前并不占用内存,它只是一个类型定义,当mc对象初始化后,mc对象里的i变量等于10。你可以通过对象名来引用变量i。(有时称为实例变量)mc.i++;//mc实例变量加1因为mc有ClassOne类的所有变量和成员函数,我们可以使用同样的语法来调用成员函数Add_i:Add_i(10);现在mc.i变量等于21.结束函数Java并不支持析构函数(C++里的定义),因为java本身提供对象无用时自动清除的功能,同时它也提供了一个自动拉圾箱的成员函数,在清除对象时被调用:Protectedvoidfinalize(){close();} 3.对象
有效范围和废物自动回收对象有一定的生命期并在它的生命期间使用资源,当一个对象不再被使用时,它应释放内存,避免内存溢出。在Java里,收集和释放内存是一个叫自动废品回收站的线程的责任。这个线程监视对象有效范围并给一个走出有效范围的对象作上标识。
例如:Strings;//没有分配内存s=newString(”oldstring“);//分配内存s=”newstring“;//重新分配内存(创建新对象)我们将在以后访问String类时将更加明白它的工作过程,但它的快速工作过程是这样的:1.创建一个新的String类对象并填充以”oldstring“2.创建另一个String对象并填充以”newstring“注意我们创建了两个对象。Stirng对象”oldstring“Stirng对象”newstring“在第三条语句里,第一个包括”oldstring“的叫做s的对象已走出了有效范围,没有任何方法可以再访问他,我们现在有一个新的对象也叫s,包含”newstring“。在下一个废品回收线程,前一个对象将被标识并清除。
4.子类
子类是利用存在的对象创建一个新对象的机制,比如,如果你有一个Horse类,你可以创建一个Zebra子类,Zebra是Horse的一种。
classZebraextendsHorse{intnumber_OF_stripes:}关键词extends来定义对象有的子类.Zebra是Horse的子类。Horse类里的所有特征都将拷贝到Zebra类里,而Zebra类里可以定义自己的成员函数和实例变量。Zebra称为Horse的派生类或继承。另外,你也许还想覆盖基类的成员函数。用ClassOne说明,下面是一个派生类覆盖Add_i功能的例子.importClassOne;publicclassNewClassextendsClassOne{publicvoid Add_i(intj){i=i+(j/2);}} 当NewClass类的实例创建时,变量i初始化值为10,但调用Add_i产生不同的结果。NewClassmnc;mnc=newNewClass();mnc.Add_i(10);访问控制Java里当你创建一个新类时,你可以标明变量和成员函数的访问层次。
publicpublicvoidAnyOneCanAccess(){}public实例变量和成员函数可以任意其它类调用。protectedprotectedvoidOnlySubClasses(){}protected实例变量和成员函数只能被其子类调用.privateprivateStringCreditCardNumber;private实例变量和成员函数只能在本类里调用.friendlyvoidMyPackageMethod(){}缺省的,如果没有定义任何防火控制,实例变量或函数缺省定义成friendly,意味着可以被本包里的任意对象访问,但其它包里的对象不可访问。所有这个类的对象都只有实例变量的同一个拷贝,这种方法的关键词是static,例如:classBlock{staticintnumber=50;} 所有从Block类创建的对象的number变量值都是相同的。无任在哪个对象里改变了number的值,所有对象的number都跟着改变。同样的,你可以定义static成员函数,但这个成员函数不能访问非static函数和变量。classBlock{staticintnumber=50;intlocalvalue;staticvoidadd_local(){localvalue++;//没有运行}staticvoidadd_static(){number++;//运行}} 5.this和super 访问一个类的实例变量时,this关键词是指向这个类本身的指针,在前面ClassOne例子中,我们可以增加构造函数如下:
publicclassClassOne{inti;publicClassOne(){i=10;} publicClassOne(intvalue)this.i=value;} publicvoidAdd_i(intj){i=i+j;}} 这里,this指向ClassOne类的指针。如果在一个子类里覆盖了父类的某个成员函数,但又想调用父类的成员函数,你可以用super关键词指向父类的成员函数。
importClassOne;publicclassNewClassextendsClassOne{publicvoidAdd_i(intj){i=i+(j/2);super.Add_i(j);}} 下面程序里,i变量被构造函数设成10,然后15,最后被父类(ClassOne)设成25。NewClassmnc;mnc=newNewClass();mnc.Add_i(10);6.类的类型
至今为止,我用在类前面只用了一个public关键词,其实它有下面4种选择:abstract一个abstract类必须至少有一个虚拟函数,一个abstract类不能直接创建对象,必须继承子类后才能。
final一个final类声明了子类链的结尾,用final声明的类不能再派生子类。publicpublic类能被其它的类访问。在其它包里,如果想使用这个类必须先import,则它只能在它定义的package里使用。
7.抽象类
面向对象的一个最大优点就是能够定义怎样使用这个类而不必真正定义好成员函数。如果程序由不同的用户实现时是很有用的,这不需用户使用相同的成员函数名。
在java里Graphics类里一个abstract类的例子如下:publicabstractclassGraphics{publicabstractvoiddrawLine(intx1,inty1,intx2,inty2);publicabstractvoiddrawOval(intx,inty,intwidth,intheight);publicabstractvoiddrawRect(intx,inty,intwidth,intheight);...} 在Graphics类里声明了几个成员函数,但成员函数的实际代码是在另外一处地方实现的。publicclassMyClassextendsGraphics{publicvoiddrawLine(intx1,inty1,intx2,inty2){}} 当一个类包含一个abstract成员函数,这个类必须定义为abstract类。然而并不是abstract类的所有的成员函数都是abstract的。Abstract类不能有私有成员函数(它们不能被实现),也不能有静态成员函数。
8.包(Packages)包(Package)由一组类(class)和界面(interface)组成。它是管理大型名字空间,避免名字冲突的工具。每一个类和界面的名字都包含在某个包中。按照一般的习惯,它的名字是由”.“号分隔的单词构成,第一个单词通常是开发这个包的组织的名称。
定义一个编译单元的包编译单元的包由package语句定义。如果使用package语句,编译单元的第一行必须无空格,也无注释。其格式如下:packagepackageName;若编译单元无package语句,则该单元被置于一个缺省的无名的包中。使用其它包中的类和界面在Java语言里提供;一个包可以使用另一个包中类和界面的定义和实现的机制。用import关键词来标明来自其它包中的类。一个编译单元可以自动把指定的类和界面输入到它自己的包中。在一个包中的代码可以有两种方式来定义来自其它包中的类和界面:*在每个引用的类和界面前面给出它们所在的包的名字;//前缀包名法acme.project.FooBarobj=newacme.project.FooBar();*使用import语句,引入一个类或一个界面,或包含它们的包。引入的类和界面的名字在当前的名字空间可用。引入一个包时,则该包所有的公有类和界面均可用。其形式如下://从acme.project引入所有类importacme.project.*;这个语句表示acme.project中所有的公有类被引入当前包。以下语句从acme.project包中进入一个类Employec_List。//从acme.project而引入Employee_Listimportacme.project.Employee_list;Employee_Listobj=newEmployee _List();在使用一个外部类或界面时,必须要声明该类或界面所在的包,否则会产生编译错误。import(引用)类包(classpackage)用import关键词调入,指定package名字如路径和类名,用*匹配符可以调入多于一个类名。
importjava.Date;importjava.awt.*;如果java源文件不包含package,它放在缺省的无名package。这与源文件同目录,类可以这样引入:importMyClass。
Java系统包:Java语言提供了一个包含窗口工具箱,实用程序,一般I/O,工具和网络功能的包。
java.applet这个包包含量了设计applet的类,用一个类Applet和三个接口.AppletContext;AppletStub;和AudioClip.java.awt另一个窗口工具箱包.awt,包含了产生装饰物和GUI成员的类。这个package包括:
Button,Checkbox,Choice,Component,Graphics,Menu,Pane1,TextArea和TextField。java.ioI/Opackage包含文件输入/输出类,FileInputStream和FileOutputStream.java.lang这个包包含Java语言类,包含:对象,线程,异常出口,系统,整数,原点,数学,字符等。java.net这个类支持TCP/IP网络协议,并包含Socket类,URL和URL相联系的类。java.util这个类包含程序的同步类,它包含Date,Dictionary类等。
四、Java程序编写
象其它编程语言一样,Java 编程语言也被用来创建应用程序。一个共同的应用程序范例是在屏幕上显示字串“Hello World!”。下列代码给出了这个 Java 应用程序。
虽然很多你可能都不明白,没有关系,主要是来体会一下 Java 程序是什么样子,你可以先看看,有个印象,然后可以先模仿着做。1.HelloWorldApp 1.// 2.// HelloWorld 应用示例 3.// 4.public class HelloWorldApp{ 5.public static void main(String args[]){ 6.System.out.println(”Hello World!“);7.} 8.} 以上程序行是在你的屏幕上打印“Hello World!”所需的最少代码。
2.描述HelloWorldApp 第 1-3 行
程序中的 1-3 行是注释行 1 // 2 // HelloWorld 应用示例 3 // 第 4 行
第 4 行声明类名为 HelloWorldApp。类名(Classname)是在源文件中指明的,它可在与源代码相同的目录上创建一个 classname · class 文件。在本例题中,编译器创建了一个称为HelloWorldApp.class的文件, 它包含了公共类HelloWorldApp的编译代码。public class HelloWorldApp{ 第 5 行
第 5 行是程序执行的起始点。Java 解释器必须发现这一严格定义的点,否则将拒绝运行程序。
其它程序语言(特别是 C 和 C++)也采用 main()声明作为程序执行的起始点。此声明的不同部分将在本课程的后几部分介绍。如果在程序的命令行中给出了任何自变量(命令行参数),它们将被传递给 main()方法中被称作 args 的 String 数组。在本例题中,未使用自变量。
public static void main(String args[]){ public-方法 main()可被任何程序访问,包括 Java 解释器。
static-是一个告知编译器 main()是用于类 HelloWorldApp 中的方法的关键字。为使 main()在程序做其它事之前就开始运行,这一关键字是必要的。
void-表明 main()不返回任何信息。这一点是重要的,因为 Java 编程语言要进行谨慎的类型检查,包括检查调用的方法确实返回了这些方法所声明的类型。
String args[]使代码更好维护 封装迫使用户通过方法访问数据能保护对象的数据不被误修改,还能使对象的重用变得更简单。数据隐藏通常指的就是封装。它将对象的外部界面与对象的实现区分开来,隐藏实现细节。迫使用户去使用外部界面,即使实现细节改变,还可通过界面承担其功能而保留原样,确保调用它的代码还继续工作。封装使代码维护更简单。
2.继承
is a 关系—— 子对象
在面向对象世界里面,常常要创建某对象(如:一个职员对象),然后需要一个该基本对象的更专业化的版本,比如,可能需要一个经理的对象。显然经理实际上是一个职员,经理和职员具有 is a 的关系,经理只是一个带有附加特征的职员。因此,需要有一种办法从现有对象来创建一个新对象。这个方式就是继承。
“继承”是面向对象软件技术当中的一个概念。如果一个 对象 A 继承自另一个 对象 B,就把这个 A 称为”B 的子 对象 “,而把 B 称为”A 的父 对象 "。继承可以使得子 对象 具有父 对象 的各种属性和方法,而不需要再次编写相同的代码。在令子 对象 继承父 对象 的同时,可以重新定义某些属性,并重写某些方法,即覆盖父 对象 的原有属性和方法,使其获得与父对象不同的功能。
3.多态
同一行为的多种不同表达,或者同一行为的多种不同实现就叫做多态。
还是用刚才经理和职员这个例子来举例:人事部门需要对公司所有职员统一制作胸卡(一般也就是门禁卡,进出公司证明身份使用),制作的师傅说,只要告诉我一个人员的信息,就可以制作出一份胸卡,简化一下就是:一位职员的信息对应一份胸卡。
这个时候,对胸卡制作的师傅而言,所有的人都是职员,无所谓是经理还是普通职员。也就是说,对于传递职员信息这样一个行为,存在多种不同的实现,既可以传递经理的信息,也可以传递普通职员的信息。这就是多态的表现。
再举一个例子:比如我们说“笔”这个对象,它就有很多不同的表达或实现,比如有钢笔、铅笔、圆珠笔等等。那么我说“请给我一支笔”,你给我钢笔、铅笔或者圆珠笔都可以,这里的“笔”这个对象就具备多态。
八、Java类的基本构成
1.Java类的定义形式
一个完整的 Java 类通常由下面六个部分组成: 包定义语句 import 语句 类定义{ 成员变量 构造方法 成员方法 } 其中:只有类定义和“{}”是不可或缺的,其余部分都可以根据需要来定义。下面分别来学习各个部分的基本规则,看看如何写 Java 的类。
2.包
2.1.包是什么
在 Java 中,包是类、接口或其它包的集合,包主要用来将类组织起来成为组,从而对类进行管理。
2.2.包能干什么
包对于下列工作非常有用:
(1):包允许您将包含类代码的文件组织起来,易于查找和使用适当的类。(2):包不止是包含类和接口,还能够包含其它包。形成层次的包空间。
(3):它有助于避免命名冲突。当您使用很多类时,确保类和方法名称的唯一性是非常困难的。包能够形成层次命名空间,缩小了名称冲突的范围,易于管理名称。
为便于管理数目众多的类,Java 语言中引入了“包”的概念,可以说是对定义的 Java类进行“分组”,将多个功能相关的类定义到一个“包”中,以解决命名冲突、引用不方便、安全性等问题。就好似当今的户籍制度,每个公民除有自己的名字“张三”、“李四”外还被规定了他的户籍地。假定有两个人都叫张三,只称呼名字就无法区分他们,但如果事先登记他们的户籍分别在北京和上海,就可以很容易的用“北京的张三”、“上海的张三”将他们区分开来。如果北京市仍有多个张三,还可以细分为“北京市.海淀区的张三”、“北京市.西城区.平安大街的张三”等等,直到能惟一标识每个“张三”为止。
JDK 中定义的类就采用了“包”机制进行层次式管理,下图显示了其组织结构的一部分:
从图中可以看出,一个名为 java 的包中又包含了两个子包:io 包和 lang 包。lang 包中包含了 System, String, Object 三个类的定义。事实上,Java 包中既可以包含类的定义,也可以包含子包,或同时包含两者。
简而言之:从逻辑上讲,包是一组相关类的集合;从物理上讲,同包即同目录。
2.1.JDK中常用的包
java.lang----包含一些 Java 语言的核心类,包含构成 Java 语言设计基础的类。在此包中定义的最重要的一个类是“Object”,代表类层次的根,Java 是一个单根系统,最终的根就是“Object”,这个类会在后面讲到。
Java 并不具有“自由”的方法,例如,不属于任何类的方法,Java 中的所有方法必须始终属于某个类。经常需要使用数据类型转换方法。Java 在 Java.lang 包中定义了“包装对象”类,使我们能够实现数据类型转换。如 Boolean、Character、Integer、Long、Float 和Double,这些在后面会讲到。
此包中的其它类包括:
? Math——封装最常用的数学方法,如正弦、余弦和平方根。? String,StringBuffer——封装最常用的字符串操作。你不必显示导入该包,该 Java 包通常已经导入。
java.awt----包含了构成抽象窗口工具集(abstract window toolkits)的多个类,这些类被用来构建和管理应用程序的图形用户界面(GUI)。
javax.swing----完全 Java 版的图形用户界面(GUI)解决方案,提供了很多完备的组件,可以应对复杂的桌面系统构建。
java.net----包含执行与网络相关的操作的类,如 URL, Socket, ServerSocket 等。java.io----包含能提供多种输入/输出功能的类。java.util----包含一些实用工具类,如定义系统特性、使用与日期日历相关的方法。还有重要的集合框架。
2.2.Java中如何表达包——package语句
Java 语言使用 package 语句来实现包的定义。package 语句必须作为 Java 源文件的第一条语句,指明该文件中定义的类所在的包。若缺省该语句,则指定为无名包,其语法格式为:
package pkg1[.pkg2[.pkg3„]];//“[]”表示可选Java 编译 器 把包对 应 于 文 件系 统 的目 录管 理,因此包也可以嵌套使用,即一个包中可以含有类的定义也可以含有子包,其嵌套层数没有限制。package 语句中,用‘.’来指明包的层次;Java 语言要求包声明的层次和实际保存类的字节码文件的目录结构存在对应关系,以便将来使用该类时能通过包名(也就是目录名)查找到所需要的类文件。简单地说就是包的层次结构需要和文件夹的层次对应。
注意:每个源文件只有一个包的声明,而且包名应该全部小写。具体来说,程序员要做以下工作:
2.3.编译和生成包
如果在程序 Test.java 中已定义了包 p1,就必须将编译生成的字节码文件 Test.class 保存在与包名同名的子目录中,可以选用下述两种方式之一:
采用下述命令编译: javac Test.java 则编译器会在当前目录下生成 Test.class 文件,再在适合位置手动创建一个名为 p1 的子目录,将 Test.class 复制到该 p1 目录下。
采用简化的编译命令,就是可以带包编译 javac-d destpath Test.java 归入该包的类的字节代码文件应放在 java 的类库所在路径的 destpath 子目录下。现在包的相对位置已经决定了,但 java 类库的路径还是不定的。事实上,java 可以有多个存放类库的目录,其中的缺省路径为 java 目录下的 lib 子目录,你可以通过使用-classpath 选项来确定你当前想选择的类库路径。除此之外,你还可以在 CLASSPATH 环境变量中设置类库路径。destpath 为目标路径,可以是本地的任何绝对或相对路径。则编译器会自动在 destpath目录下建立一个子目录 p1,并将生成的.class 文件自动保存到 destpath/p1 下。例如: javac-d.Test.java javac-d C:test Test.java 2.4.带包运行
运行带包的程序,需要使用类的全路径,也就是带包的路径,比如上面的那个程序,就使用如下的代码进行运行:
java p1.Test 3.import 为了能够使用某一个包的成员,我们需要在 Java 程序中明确导入该包。使用“import”语句可完成此功能。在 java 源文件中 import 语句应位于 package 语句之后,所有类的定义之前,可以有 0~多条,其语法格式为:
import package1[.package2„].(classname|*);java 运行时环境将到 CLASSPATH + package1.[package2„]路径下寻找并载入相应的字节码文件 classname.class。“*”号为通配符,代表所有的类。也就是说 import 语句为编译器指明了寻找类的途径。
例,使用 import 语句引入类程序:TestPackage.java
java 编译器默认为所有的 java 程序引入了 JDK 的 java.lang 包中所有的类(import java.lang.*;),其中定义了一些常用类:System、String、Object、Math 等。因此我们可以直接使用这些类而不必显式引入。但使用其它非无名包中的类则必须先引入、后使用。
3.1.Java类搜寻方式
程序中的 import 语句标明要引入 p1 包中的 Test 类,假定环境变量 CLASSPATH 的值为
“.;C:jdk6lib;D:ex”,java 运行环境将依次到下述可能的位置寻找并载入该字节码 文件 Test.class:.p1Test.class C:jdk6libp1Test.class D:exp1Test.class 其中,“.”代表当前路径,如果在第一个路径下就找到了所需的类文件,则停止搜索。否则依次搜索后续路径,如果在所有的路径中都未找到所需的类文件,则编译或运行出错。
4.访问修饰符
Java 语言允许对类中定义的各种属性和方法进行访问控制,即规定不同的保护等级来限制对它们的使用。为什么要这样做?Java 语言引入类似访问控制机制的 目的 在 于实 现 信息的 封 装 和 隐藏。Java 语言为对类中的属性和方法进行有效地访问控制,将它们分为四个等级:private, 无修饰符, protected, public,具体规则如下:
变量和方法可以处于四个访问级别中的一个:公共,受保护,无修饰符或私有。类可以在公共或无修饰级别。
变量、方法或类有缺省(无修饰符)访问性,如果它没有显式受保护修饰符作为它的声明的一部分的话。这种访问性意味着,访问可以来自任何方法,当然这些方法只能在作为对象的同一个包中的成员类当中。
以修饰符 protected 标记的变量或方法实际上比以缺省访问控制标记的更易访问。一个protected 方法或变量可以从同一个包中的类当中的任何方法进行访问,也可以是从任何子类中的任何方法进行访问。当它适合于一个类的子类但不是不相关的类时,就可以使用这种受保护访问来访问成员。5.类定义
Java 程序的基本单位是类,你建立类之后,就可用它来建立许多你需要的对象。Java把每一个可执行的成分都变成类。
类的定义形式如下:
这里,类名要是合法的标识符。在类定义的开始与结束处必须使用花括号。你也许想建立一个矩形类,那么可以用如下代码:
6.构造方法
6.1.什么是构造方法
类有一个特殊的成员方法叫作构造方法,它的作用是创建对象并初始化成员变量。在创建对象时,会自动调用类的构造方法。
6.2.构造方法定义规则
Java 中的构造方法必须与该类具有相同的名字,并且没有方法的返回类型(包括没有void)。另外,构造方法一般都应用 public 类型来说明,这样才能在程序任意的位置创建类的实例--对象。
6.3.示例
下面是一个 Rectangle 类的构造方法,它带有两个参数,分别表示矩形的长和宽:
6.4.说明
每个类至少有一个构造方法。如果不写一个构造方法,Java 编程语言将提供一个默认的,该构造方法没有参数,而且方法体为空。
注意:如果一个类中已经定义了构造方法则系统不再提供默认的构造方
7.析构方法
析构方法 finalize 的功能是: 当对象被从内存中删除时,该成员方法将会被 自动调用。通常,在析构方法内,你可以填写用来回收对象内部的动态空间的代码。
特别注意:当我们去调用析构方法的时候,并不会引起该对象实例从内存中删除,而是不会起到任何作用。
在 Java 编程里面,一般不需要我们去写析构方法,这里只是了解一下就可以了。
8.属性
8.1.属性是什么
简单点说,属性就是对象所具有的静态属性。
8.2.定义规则
Java 类中属性的声明采用如下格式: 访问修饰符 修饰符 类型 属性名称=初始值;访问修饰符:可以使用四种不同的访问修饰符中的一种,包括 public(公共的)、protected(受保护的),无修饰符和 private(私有的)。public 访问修饰符表示属性可以从任何其它代码调用。private 表示属性只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。
修饰符:是对属性特性的描述,例如后面会学习到的:static、final 等等。类型:属性的数据类型,可以是任意的类型。属性名称:任何合法标识符
初始值:赋值给属性的初始值。如果不设置,那么会自动进行初始化,基本类型使用缺省值,对象类型自动初始化为 null。
8.3.说明
属性有时候也被称为成员变量、实例变量、域,它们经常被互换使用。
9.方法
9.1.方法是什么
方法就是对象所具有的动态功能。
9.2.定义规则
Java 类中方法的声明采用以下格式:访问修饰符 修饰符 返回值类型 方法名称(参数列表)throws 异常列表 {方法体} 访问修饰符:可以使用四种不同的访问修饰符中的一种,包括 public(公共的)、protected(受保护的),无修饰符和 private(私有的)。public 访问修饰符表示方法可以从任何其它代码调用。private 表示方法只可以由该类中的其它方法来调用。protected 将在以后的课程中讨论。
修饰符:是对方法特性的描述,例如后面会学习到的:static、final、abstract、synchronized 等等。
返回值类型::表示方法返回值的类型。如果方法不返回任何值,它必须声明为 void(空)。
Java 技术对返回值是很严格的,例如,如果声明某方法返回一个 int 值,那么方法必须从所有可能的返回路径中返回一个 int 值(只能在等待返回该 int 值的上下文中被调用。)方法名称:可以是任何合法标识符,并带有用已经使用的名称为基础的某些限制条件。参数列表:允许将参数值传递到方法中。列举的元素由逗号分开,而每一个元素包含一个类型和一个标识符。在下面的方法中只有一个形式参数,用 int 类型和标识符 days 来声明:public void test(int days){} throws 异常列表:子句导致一个运行时错误(异常)被报告到调用的方法中,以便以合适的方式处理它。异常在后面的课程中介绍。
花括号内是方法体,即方法的具体语句序列。9.3.示例
比如现在有一个“车”的类——Car,“车”具有一些基本的属性,比如四个轮子,一个方向盘,车的品牌等等。当然,车也具有自己的功能,也就是方法,比如车能够“开动”——run。要想车子能够开动,需要给车子添加汽油,也就是说,需要为 run 方法传递一些参数“油”进去。车子跑起来过后,我们需要知道当前车辆运行的速度,就需要 run 方法具有返回值“当前的速度”。
9.4.形参和实参
形参:就是形式参数的意思。是在定义方法名的时候使用的参数,用来标识方法接收的参数类型,在调用该方法时传入。
实参:就是实际参数的意思。是在调用方法时传递给该方法的实际参数。
比如:上面的例子中“int oil”就是个形式参数,这里只是表示需要加入汽油,这个方法才能正常运行,但具体加入多少,要到真正使用的时候,也就是调用这个方法的时候才具体确定,加入调用的时候传入“80”,这就是个实际参数。
形参和实参有如下基本规则:
(1):形参和实参的类型必须要一致,或者要符合隐含转换规则(2):形参类型不是引用类型时,在调用该方法时,是按值传递的。在该方法运行时,形参和实参是不同的变量,它们在内存中位于不同的位置,形参将实参的值复制一份,在该方法运行结束的时候形参被释放,而实参内容不会改变。
(3):形参类型是引用类型时,在调用该方法时,是按引用传递的。运行时,传给方法的是实参的地址,在方法体内部使用的也是实参的地址,即使用的就是实参本身对应的内存空间。所以在函数体内部可以改变实参的值。
9.5.参数可变的方法
从 JDK5.0 开始,提供了参数可变的方法。
当不能确定一个方法的入口参数的个数时,5.0 以前版本的 Java 中,通常的做法是将多个参数放在一个数组或者对象集合中作为参数来传递,5.0 版本以前的写法是:
int sum(Integer[] numbers){„} //在别处调用该方法
sum(new Integer[] {12,13,20});而在 5.0 版本中可以写为:
int sum(Integer...numbers){//方法内的操作} 注意:方法定义中是三个点 //在别处调用该方法 sum(12,13,20);//正确 sum(10,11);//正确
也就是说,传入参数的个数并不确定。但请注意:传入参数的类型必须是一致的,究其本质,就是一个数组。
关于二建的报考条件、报考程序及考试相关的其他事项我在此就不啰嗦了,大家可以上各省人事考试网直接关注,我重点谈谈该怎么复习。复习的时候需要注意以下几点:
一、复习资料尽量不要太杂
因为大家基本都在上班,学习时间精力有限,所以复习资料要精要少。因为之前我也像大家一样,盲目的在网上下载了很多课件和视频教程,各大培训网站的,光下载就费了我好几天功夫,之后又不知道到底该选择哪家,耽误了我不少复习时间,都不全不缺这就却那,吸取教训之后,我在这里推荐大家最好的办法是直接在网上购一套视频课件教程。别想着浪费时间去找免费的,有那个功夫,你二建早复习两、三章,这里推荐个购买课程的机构学尔森。看了学尔森第一轮的备考指导班先对教材有了全面的框架性了解,然后跟着精讲班把教材所有知识点都扎实的复习一遍,接下来还有那个强化和冲刺,老师讲的非常好,节省了我很多时间,不用费劲找资料。
二、紧抓大纲要求。
即充分理解大纲及书本上要求的 掌握、熟悉、了解 三部分类容,掌握部分占考试分值的70%,熟悉部分占考试分值的20%,了解部分占10%,所以重点是点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频 把握掌握部分。至于重点在哪里,没必要花时间自己去研究,学尔森视频课件里的老师会给你归纳的很详细,绝对比自己翻书省力多了。
三、复习顺序:
一般说来,最好是先复习法律法规(这样你可以对整个建设工程有一定的系统性和框架性了解,并且施工管理中第五和第七章节关于安全和工程信息档案的和法规中相关章节是重复的;当然因为法规中几乎都是要求记忆的东西,时间长了大家会忘记,所以也可以放在其他两门课程之后复习),然后复习施工管理,最后复习管理与实务(因为实务是前两科的综合,所以必须放在最后,当然为了节约时间,可以把实务和施工管理中进度、质量、安全、合同、成本控制的相关章节结合起来复习,这样是最好不过了)。
四、复习方法:
总的来说是边看书边做题边整理笔记,当然也要结合听听与考试用书同步的音频教程或者学尔森视频教程,但是这个比较消耗时间,要提前一两个月来看,我之前复习时做了对比的,如果你能在一个环境里静下心来看书,我建议你专心看书,这样的话效率比较高,可以边看书边做题。如果你没有这种条件,你可以选择听课件,听课件的同时必须在书上仔细做记号,画出重点,然后是反复记忆。熟悉课本(不管你是看书还是听课件或者报班)是第一要务,书是根本,看书的时间必须要保证,然后是做题和整理笔记。整理笔记很重要,这个花不了多少时间,但是成效很高,特别是对于法规这样概念性较多的科目,只要你提炼其中的知识点,构造知识框架,一般自己亲自整理一套知识点框架体系就记住了,考前再快速浏览几次应对考试戳戳有余。
点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频
1、如何复习工程法规:
a 这门科目概念性很强,几乎都是要求记忆的东西,对于要求记忆的东西没有特殊的办法了,就是反复看书,第一次详细看,重在理解,并在书上用不同颜色的笔标出重点,以后快速浏览,重在加强记忆。我本人觉得自己做在笔记本上整理出知识点很重要,甚至比做题都重要,因为这个考试就是考知识点,只要你把知识点记住了,考试就没问题了,当你整理好了笔记后,基本上就可以甩开厚厚的书本了,只看笔记,反复记忆。
b、建设工程法律法规选编完全可以不用看。
2、如何复习施工管理和实务:
a、对于概念性的东西,方法同法规,多看多记忆多整理。对于计算题重在理解和做题。
b、为了节约时间,应该把实务中的与工程进度、质量、安全、合同、成本这五个章节同施工管理中的相关章节结合起来复习,即先弄清楚施工管理中的概念性方面的问题,接着就进入实务中的实例演练,多做几个实例,既是对概念的进一步理解和加强,同时实务中的此章节以后也不需要再花时间了,这样效率很高,一步到位。
c、三控三管一协调(质量控制、进度控制、成本控制,合同管理、信息管理、安全管理,组织协调)一直都是这两个科目的核心,抓住了这几项基本上通过考试就没问题了。一般说来进度控制和成本控制每年都会单独出一个大题,所以这两部分是必须要求彻底明白的,而且大多倾向于计算,比较容易得手;另外的质量控制、安全控制、信息管理、合同管理、现场管理等会揉合到一起出两个大题,点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频 这个也是重点,争取那对一半。
d、实务中,第三部分即249页以后的类容,有时间就看看,没时间就算了,因为里面很多东西和前面两科目的类容是重复或相仿的,考的比重也不是很大。
e、另外管理里面的可以出计算题的地方,一定要掌握,考试基本都回看,比如流水步距的计算,单代号、双代号网络图的计算等
3、做真题、模拟考试:
当你把三个科目都系统复习完了以后,在临近考试的前四五天(最好能请假专门应对考试)做两三套历年真题(当然能在复习前做两套跟好),然后在考试的前一天自己在一个安静的环境里面按照考试的节奏模拟一下考试,学尔森课程也有高质量的模拟试卷,这样我可以提前检测下自己,然后再抓紧复习自己的薄弱项,另外通过做真题你可以了解试卷的试题结构,试题类型,试题难度,常考点,分值分布情况等,而通过模拟考试主要是调节你应对考试的状态和提前进入考试状态,避免突然考试不适应而发挥失常,这样就很不划算了,所以要做到有备无患。
五、答题技巧:
1、先易后难,不会做的果断先甩一边,有时间了回来再想;
2、单选题用排除法,首先去掉你认为错误的选项,然后再帅选剩余选项,如果在两个选项间徘徊,凭第一感觉选。
3、对于多选题,很有技巧,答对一个得0.5分,答错或多选不得分,所以你如果确认了有两个及以上选项正确而其他犹豫不定了,就一定不要再选了,拿既定的一分去博未知的半分或一分不划算甚至会得0分,如果你只确定一个答案,其他有几个拿不定注意,可以尝试再选一个,因为只选一个答对了也就是0.5分,点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频 在选一个有可能得两分。
六、复习计划:
我看了一下2014年的考试大纲和相关考试事项,5月23-24号考试,比起一三年来说整整提前了一周,所以说,复习要趁早,现在还没开始的感觉开始了。针对上班一族自己看书不报培训班的同志,我做了以下一个复习计划,希望对你们有帮助:
1、总体用两个半月时间,即3月1 5月20日,保证其中有60天或以上每天有半个个小时的学习时间。
3月5日 25,20天,工程法规;3月26 5月20,50天,施工管理与实务两科目(当然这个顺序你们可以根据自己习惯进行前后颠倒)
3、详细计划:
工程法规:
第一部分:建设工程法律制度:12天(基本上是每天一或两小节类容)第二、三部分:合同法、建设工程纠纷处理:8天,也基本上是一天一到两个小节
施工管理和实务联合复习:把50天分成7周
第一周:施工管理科目中,施工管理章节(2z101000)和施工信息管理章节(2z107000)第二周:施工成本控制(2z102000)、建筑工程造价控制(2A320050)第三周:施工进度控制(2z103000)、施工进度控制(2A320020)、单位工程施点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频 工组织设计(2A320010)第四周:施工质量控制(2z104000)、施工质量控制(2A320030)第五周:建设工程职业安全健康与环境管理(2z105000)、施工安全控制(2A320040)第六周:施工合同管理(2z106000)、施工合同管理(2A320060)第七周:建筑工程技术(2A310000)剩下的现场管理、竣工验收、工程保修三个小节可以穿插到以上几周里面。
另外,实务中的第三部分:建筑工程法律法规及相关知识,有时间就看看,没有就算了,因为他与前面两科目中相关章节相仿,考的比重一般也不大
七、考试心得:
我是去年参加考试的,一次考三科,全部通过,我觉得考试不难,记的东西特多,知识面比较广,所以需要一定的时间,我去年是边上班边复习的,光看书根本看不进,后来发现同事考一建在看培训班的课件,我就在网上找了学尔森买了二建的课件,课件还很多,每天我基本上要把课件听一节课,大体复习方法和上述差不多,课件听完第一遍后,就做题,每天或者隔一天做一套题,遇到做题中自己没掌握的部分,再把相关章节拿出来重新复习一次。我觉得,大家要考就争取一次全部通过,不到万不得已别分两次考,这样我觉得是不划算的,还得两年花两次精力,若有一次考试不过,就全功尽弃了不要舍不得买书、买课件,花不了多少钱,培训班的话,看你个人经济能力了,钱多的话,效果肯定还是好的,零基础的或者说自学时间少,自控能力差的人最好报个班,学尔森的课程有的会有助学老师全程跟踪,看大家的实际情况选择吧。
点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频 最后一点就是千万不要相信网上的考试答案,那都是骗人的把戏,我原来的同事都有试过的,害人害己。说内部有答案的肯定也有,但是能弄出答案的人,他顶多是还人情,帮朋友,说为了赚你们那点答案题,至于吗,卖贵了呢,比一两年的挂靠费还高没人愿意,卖便宜点呢,买得人多了,可是风险也大啊,搞不好抓进局子,所以真正卖答案的太少了,你别想了。
总之,只要你专心备考,掌握一定的技巧,考试是一定没问题的。还有一个好消息可以明确告诉你,有证和没证区别还是很大的,证虽然不是能力的代表,但证是应聘者的敲门砖,如同学历,我们这个专业它甚至比学历还重要,挂靠费是没多少(湖北市场行情6000 10000,广东1.5w~2.5w)但是要好找工作一些,好的机会自然就多些,以后自己想单干了也是一种硬件资本。另外,我觉得最重要的就是,好好备考二建,这里面的知识70%以上都是直接应用于工程实际的,的确在平常工作中也有帮助,对刚参加工作不就得考生门也很有帮助,所以这不只是为了考试,而是真正的学以致用。
二级建造师施工管理考点:施工合同索赔专项。索赔近三年分值在12分左右,是占分比较多的考点。而索赔问题考点的难点在于工期索赔、费用索赔。
二级建造师复习资料:二级建造师考试考点-学尔森
提供二级建造师考试辅导资料、复习笔记、讲义等内容。欢迎广大考生访问学尔森二级建造师考试网,获取更多关于二级建造师考试的信息。
2018年成都Java培训费用是多少
2018年成都Java培训学费好多钱?这是很多人咨询的问题。三月份的招聘旺季已经过去一半了,不少企业的用人需求已经满足,而不少还没有找到工作的求职者开始考虑是转行还是降低个人要求了。而对于转行,转行做IT无疑是很多人的选择,毕竟现在网上已经流传所谓的“360行,行行转IT”的说法了。而既然是转行从事Java开发,那么学费就成为很多人关心的问题。
事实上,目前成都Java培训学费并不低,即使你选择纯线上教学的模式也要八九千,更不要说纯线下面对面学习了,少则一万多、更有甚者需要两万余元。这对于很多想要转行的人来说,是一个不小的负担。但是小编想要给大家说的,拿未来两三个月的工资来培训一个前景看得见的行业,是很划得着的,毕竟目前Java开发前景大家都是可以了解到的。当然,也有不少人怀疑这个价格是不是有虚高的成分,下面小编就来给大家说说为什么成都Java培训学费为什么这么贵。
成都Java培训学费为什么这么贵。
成都Java培训学费之所以这么贵,是由几个因素导致的:包括场地设备费用、人员开支、宣传费用等
场地设备费用:目前的培训机构都是自己寻找场地给学员线下学习,国家也不会给予任何补贴。看到这,不少人会疑惑,现在都是互联网+时代,为什么还得要线下学习呢?直接线上学习不行吗。事实上,如果你的零基础转行,那么不建议你选择纯线上模式,这是因为纯线上模式的监督和学习成果验收不太到位,学员很容易因为受挫而选择放弃。
人员开支:大家转行的原因就是因为Java开发工资高,而培训机构的讲师都是拥有多年实战经验的开发工程师,其薪资可想而在。
成都互联汇智科技有限公司(知了堂)www.zhiliaotang.net
宣传费用:目前的成都Java培训学校都是公司运作,不像高校,不需要考虑任何盈利,而培训学校为了盈利,自然会花钱在品牌宣传上。
正是这些因素,才导致目前成都Java培训学费这么贵。既然价格不可能变化,那么小编建议大家更应该关注成都Java培训机构哪家好这个问题,毕竟能够选择一个好的培训机构,那么学到的东西会更多,也有利于大家后期就业(PS:关于成都Java培训机构哪家好这个问题,大家可以点击查看小编之前写的文章《2018年成都Java培训选哪家好》)。
卓越品质
2018年山东二级建造师报考常识
2018年二级建造师报名工作即将全面启动,可还是有很多考生对报考条件等一些问题不太了解,优路教育特搜集整理了二级建造师报考相关问题及答案供大家参考,今天要给大家介绍的是2018年山东二级建造师考试常见问题及答案。
问:山东省二级建造师考试证由哪里颁发?
答:二级建造师执业资格考试合格者,由省、自治区、直辖市人事部门颁发由人事部、建设部统一格式的《二级建造师执业资格证书》。
问:山东二级建造师资格证如何查出号来?
答:
1、电脑进入“二级注册建造师信息查询”官网。
2、只要知道姓名、工作单位进行输入然后点击查询即可找到。
注:若是只有姓名也可以查询,不过会查询出所有山东省与你同姓名的人,若是既知道姓名又知道注册单位,那么查询出来的基本上就是唯一的,这样你就可以查到自己的注册号了。
问:异地的能在山东报考2018年二级建造师吗?
答:可以报考,需要注册。
但是注册的时候,记得,所要注册的公司,必须是考生得到二级建筑师所在的考试地的单位,初次注册必须是考试当地的单位。当开始进行转注时,则可以换成是其他地方的单位。这一点是需要考生们注意的。因为二级建造师考合格后,需要有一个注册的过程。必须在当地的系统上进行注册,并用当地单位的身份验证。
简单来说就是,可以报考,不过证书只能在你报名的省份用。
问:山东省如何变更二级建造师的注册单位?
答:上山东省执业资格注册中心网站,登录二级建造师个人账号,左侧选择变更注册,填写变更的单位名称后上报企业,然后通知变更单位的负责注册的人员登录企业账号,设置合同日期后上报市级,打印出变更申请表盖上现企业的公章,附上与原单位签订的解聘证明复印件、现单位的劳动合同复印件,现企业的
优路教育
卓越品质
资质证书复印件去原单位盖章,然后带着身份证、注册证章、解聘证明、劳动合同到原市级建管局盖章,原市级盖章后再拿到现公司所在市级建管局盖章。所有材料最少准备3份,有的地市需要存留两份,那就得准备4份。
问:请问山东二级建造师证书收益怎么样?
答:这个也是根据市场需求变化的,而且二建的各个专业收益差别也很大:
现在房地产低迷,二建建筑实务相对好考,报考的人多,相对取到证书的人也多,收益很低,一年2000-5000元;
现在污染严重,对城市的市政环境建设需求趋高,加上市政也比较难考,所以二建市政实务收益在6000-10000元;还一个二建水利不知道什么原因,收益也挺高,应该也是污染,治理河道吧或者城市用水什么的,收益在1w以上;其他的机电公路也在5000-9000左右,根据需求的迫切度,收益不一致。
山西二级建造师考试报考流程如下:(仅供参考,详细参照2018年山西二建报名公告)
二级建造师考试报名,报考人员应严格按照单位属地原则进行报名,资格审核及考区划分将按照属地进行管理。未按照属地报名的,产生的后果由考生承担。考试地点见准考证。
报考人员均须登录山西人事考试网()报名,按照填报信息、上传照片、照片审核、网上交费、网上打印准考证的流程进行。具体时间安排如下:
1、网上报名
2、网上照片审核
3、网上交费
4、准考证打印
5、成绩查询
6、考后资格审核公告 报名流程图如下:
点击【二级建造师学习资料】或打开http:///category/jzs2?wenkuwd,注册开森学(学尔森在线学习的平台)账号,免费领取学习大礼包,包含:①精选考点完整版 ②教材变化剖析 ③真题答案及解析 ④全套试听视频 ⑤复习记忆法 ⑥练习题汇总 ⑦真题解析直播课 ⑧入门基础课程 ⑨备考计划视频
2018年二级建造师考试《法规知识》大纲
本期小编为大家介绍的是“2018年二级建造师考试《法规知识》大纲”,更多二级建造师相关资讯,请关注希赛网二级建造师频道。
2018年二级建造师考试《法规知识》大纲暂未公布,预计2018二建考试大纲发布时间为2017年12月底。
下面是2017年二级建造师考试《法规知识》大纲,供大家参考:
2017年二级建造师考试《法律法规》大纲
2Z200000建设工程法规及相关知识 2Z201000建设工程基本法律知识 2Z201010建设工程法律体系 2Z201011法律体系的基本框架 2Z201012法的形式和效力层级 2Z201020建设工程法人制度
2Z201021法人的法定条件及其在建设工程中的地位和作用 2Z201022企业法人与项目经理部的法律关系 2Z201030建设工程代理制度 2Z201031代理的法律特征和主要种类 2Z201032建设工程代理行为及其法律关系 2Z201040建设工程物权制度
2Z201041物权的主要种类和与土地相关的物权 2Z201042物权的设立、变更、转让、消灭和保护 2Z201050建设工程债权制度 2Z201051债的基本法律关系
2Z201052建设工程债的产生和常见种类 2Z201060建设工程知识产权制度 2Z201061知识产权的法律特征
2Z201062建设工程知识产权的常见种类、保护和侵权责任 2Z201070建设工程担保制度 2Z201071担保与担保合同的规定
2Z201072建设工程保证担保的方式和责任 2Z201073抵押权、质权、留置权、定金的规定 2Z201080建设工程保险制度 2Z201081保险与保险索赔的规定
历年真题解析免费获取尽在:http:///jianzaoshi1/
2Z201082建设工程保险的主要种类和投保权益 2Z201090建设工程法律责任制度 2Z201091法律责任的基本种类和特征
2Z201092建设工程民事责任的种类及承担方式 2Z201093建设工程行政责任的种类及承担方式 2Z201094建设工程刑事责任的种类及承担方式 2Z202000施工许可法律制度 2Z202010建设工程施工许可制度
2Z202011施工许可证和开工报告的适用范围 2Z202012申请主体和法定批准条件
2Z202013延期开工、核验和重新办理批准的规定 2Z202014违法行为应承担的法律责任 2Z202020施工企业从业资格制度 2Z202021企业资质的法定条件和等级 2Z202022禁止无资质或越级承揽工程的规定
2Z202023禁止以他企业或他企业以本企业名义承揽工程的规定 2Z202024违法行为应承担的法律责任 2Z202030建造师注册执业制度
2Z202031建设工程专业人员执业资格的准人管理 2Z202032建造师考试、注册和继续教育的规定 2Z202033建造师的受聘单位和执业岗位范围 2Z202034建造师的基本权利和义务 2Z202035违法行为应承担的法律责任 2Z203000建设工程发承包法律制度 2Z203010建设工程招标投标制度
2Z203011建设工程法定招标的范围、招标方式和交易场所 2Z203012招标基本程序和禁止肢解发包、限制排斥投标人的规定 2Z203013投标人、投标文件和投标保证金
2Z203014禁止串通投标和其他不正当竞争行为的规定 2Z203015中标的法定要求和招标投标投诉处理 2Z203016违法行为应承担的法律责任 2Z203020建设工程承包制度 2Z203021建设工程总承包的规定
历年真题解析免费获取尽在:http:///jianzaoshi1/
2Z203022建设工程共同承包的规定 2Z203023建设工程分包的规定 2Z203024违法行为应承担的法律责任 2Z203030建筑市场信用体系建设 2Z203031建筑市场诚信行为信息的分类
2Z203032建筑市场施工单位不良行为记录认定标准 2Z203033建筑市场诚信行为的公布和奖惩机制 2Z203034建筑市场主体诚信评价的基本规定 2Z204000建设工程合同和劳动合同法律制度 2Z204010建设工程合同制度
2Z204011建设工程施工合同的法定形式和内容 2Z204012建设工程工期和支付价款的规定 2Z204013建设工程赔偿损失的规定 2Z204014无效合同和效力待定合同的规定 2Z204015合同的履行、变更、转让、撤销和终止 2Z204016违约责任及违约责任的免除
2Z204017建设工程合同示范文本的性质与作用 2Z204020劳动合同及劳动关系制度 2Z204021劳动合同订立的规定
2Z204022劳动合同的履行、变更、解除和终止 2Z204023合法用工方式与违法用工模式的规定 2Z204024劳动保护的规定 2Z204025劳动争议的解决
2Z204026违法行为应承担的法律责任 2Z204030相关合同制度 2Z204031承揽合同的法律规定 2Z204032买卖合同的法律规定 2Z204033借款合同的法律规定 2Z204034租赁合同的法律规定 2Z204035融资租赁合同的法律规定 2Z204036运输合同的法律规定 2Z204037委托合同的法律规定
2Z204000建设工程合同和劳动合同法律制度
历年真题解析免费获取尽在:http:///jianzaoshi1/
2Z204010建设工程合同制度
2Z204011建设工程施工合同的法定形式和内容 2Z204012建设工程工期和支付价款的规定 2Z204013建设工程赔偿损失的规定 2Z204014无效合同和效力待定合同的规定 2Z204015合同的履行、变更、转让、撤销和终止 2Z204016违约责任及违约责任的免除
2Z204017建设工程合同示范文本的性质与作用 2Z204020劳动合同及劳动关系制度 2Z204021劳动合同订立的规定
2Z204022劳动合同的履行、变更、解除和终止 2Z204023合法用工方式与违法用工模式的规定 2Z204024劳动保护的规定 2Z204025劳动争议的解决
2Z204026违法行为应承担的法律责任 2Z204030相关合同制度 2Z204031承揽合同的法律规定 2Z204032买卖合同的法律规定 2Z204033借款合同的法律规定 2Z204034租赁合同的法律规定 2Z204035融资租赁合同的法律规定 2Z204036运输合同的法律规定 2Z204037委托合同的法律规定
2Z205000建设工程施工环境保护、节约能源和文物保护法律制度 2Z205010施工现场环境保护制度 2Z205011施工现场噪声污染防治的规定 2Z205012施工现场废气、废水污染防治的规定 2Z205013施工现场固体废物污染防治的规定 2Z205014违法行为应承担的法律责任 2Z205020施工节约能源制度
2Z205021施工合理使用与节约能源的规定 2Z205022施工节能技术进步和激励措施的规定 2Z205023违法行为应承担的法律责任
历年真题解析免费获取尽在:http:///jianzaoshi1/
2Z205030施工文物保护制度 2Z205031受国家保护的文物范围
2Z205032在文物保护单位保护范围和建设控制地带施工的规定 2Z205033施工发现文物报告和保护的规定 2Z205034违法行为应承担的法律责任 2Z206000建设工程安全生产法律制度 2Z206010施工安全生产许可证制度 2Z206011申请领取安全生产许可证的条件
2Z206012安全生产许可证的有效期和政府监管的规定 2Z206013违法行为应承担的法律责任
2Z206020施工安全生产责任和安全生产教育培训制度 2Z206021施工单位的安全生产责任 2Z206022施工项目负责人的安全生产责任 2Z206023施工总承包和分包单位的安全生产责任 2Z206024施工作业人员安全生产的权利和义务 2Z206025施工单位安全生产教育培训的规定 2Z206026违法行为应承担的法律责任 2Z206030施工现场安全防护制度
2Z206031编制安全技术措施、专项施工方案和安全技术交底的规定 2Z206032施工现场安全防护和安全费用的规定
2Z206033施工现场消防安全职责和应采取的消防安全措施 2Z206034工伤保险和意外伤害保险的规定 2Z206035违法行为应承担的法律责任
2Z206040施工安全事故的应急救援与调查处理 2Z206041生产安全事故的等级划分标准 2Z206042施工生产安全事故应急救援预案的规定 2Z206043施工生产安全事故报告及采取相应措施的规定 2Z206044违法行为应承担的法律责任
2Z206050建设单位和相关单位的建设工程安全责任制度 2Z206051建设单位相关的安全责任 2Z206052勘察、设计单位相关的安全责任 2Z206053工程监理、检验检测单位相关的安全责任 2Z206054机械设备等单位相关的安全责任
历年真题解析免费获取尽在:http:///jianzaoshi1/
2Z206055政府部门安全监督管理的相关规定 2Z207000建设工程质量法律制度 2Z207010工程建设标准 2Z207011工程建设标准的分类
2Z207012工程建设强制性标准实施的规定 2Z207013违法行为应承担的法律责任 2Z207020施工单位的质量责任和义务
2Z207021对施工质量负责和总分包单位的质量责任 2Z207022按照工程设计图纸和施工技术标准施工的规定 2Z207023对建筑材料、设备等进行检验检测的规定 2Z207024施工质量检验和返修的规定 2Z207025建立健全职工教育培训制度的规定 2Z207026违法行为应承担的法律责任
2Z207030建设单位及相关单位的质量责任和义务 2Z207031建设单位相关的质量责任和义务 2Z207032勘察、设计单位相关的质量责任和义务 2Z207033工程监理单位相关的质量责任和义务 2Z207034政府部门工程质量监督管理的相关规定 2Z207040建设工程竣工验收制度 2Z207041竣工验收的主体和法定条件 2Z207042施工单位应提交的档案资料
2Z207043规划、消防、节能、环保等验收的规定 2Z207044竣工结算、质量争议的规定 2Z207045竣工验收报告备案的规定 2Z207050建设工程质量保修制度
2Z207051质量保修书和最低保修期限的规定 2Z207052质量责任的损失赔偿 2Z207053违法行为应承担的法律责任 2Z208000解决建设工程纠纷法律制度
2Z208010建设工程纠纷主要种类和法律解决途径 2Z208011建设工程纠纷的主要种类 2Z208012民事纠纷的法律解决途径 2Z208013行政纠纷的法律解决途径
历年真题解析免费获取尽在:http:///jianzaoshi1/
2Z208020民事诉讼制度 2Z208021民事诉讼的法院管辖 2Z208022民事诉讼的当事人和代理人 2Z208023民事诉讼的证据和诉讼时效 2Z208024民事诉讼的审判和执行程序 2Z208030仲裁制度
2Z208031仲裁协议和仲裁受理 2Z208032仲裁审理的法定程序 2Z208033仲裁裁决的执行 2Z208034涉外仲裁的特别规定 2Z208040调解与和解制度 2Z208041调解的规定 2Z208042和解的规定
【2018年二级Java复习资料】推荐阅读:
二级建造师考试复习方法总结06-15
计算机二级java题库12-25
2018年二级建造师建筑实务教材变化对比分析(首发)06-26
二级注册消防工程师《综合》复习题11-22
二级建造师市政复习精选(施工管理精简)02-21
最新职业道德二级人力资源师复习材料06-27