当前位置:学者斋 >

计算机 >计算机二级 >

2016计算机二级《Java语言程序设计》知识考点

2016计算机二级《Java语言程序设计》知识考点

《Java语言程序设计》是计算机二级考试科目之一,为了帮助考生们熟悉考试科目的考点,明确备考的方向,下面本站小编为大家搜索整理了关于《Java语言程序设计》知识考点,欢迎参考学习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!

2016计算机二级《Java语言程序设计》知识考点

  一、java简介

2009年04月20日,美国甲骨文公司74亿美元收购Sun,取得java的版权。

Java 是面向对象的语言,没有面向对象编程经验的读者需要花费不少时间来了解面向对象的概念、语法和编程思想,有不能理解的地方请大家一定要坚持,多花时间编写代码自然会豁然开朗,从面向过程到面相对象需要一个适应期。

Java 不只是一种编程语言,它是一个完整的平台,拥有庞大的库,将诸如图形绘制、Socket连接、数据库存取等复杂操作进行了最大程度的简化。

Java 是跨平台的,一次编译,到处运行,在 Windows 上编写的代码可以不加修改的移植到 Linux 上,反之也可以。

在世界编程语言排行榜中,Java几乎占据着第二名的位置,仅次于C语言

  二、String

1、初始化:

一般由String声明的字符串,长度是不可变的,这也是它与StringBuffer和StringBuilder最直观的一个区别。一般初始化方式:String s = "hello world";经过这条语句,JVM的栈内存中产生一个s变量,堆内存中产生hello world字符串对象。s指向了hello world的地址。像上面这种方式产生的字符串属于直接量字符串对象,JVM在处理这类字符串的时候,会进行缓存,产生时放入字符串池,当程序需要再次使用的时候,无需重新创建一个新的字符串,而是直接指向已存在的字符串。

2、String s = "123" + "456"内存中产生几个字符串对象?

这是个比较有争议的问题,面试的时候,老师还挺喜欢问,论坛上大家说几个的也有,我给大家分析一下,因为我们前面有提到Java字符串的缓存机制,编译器在编译的时候会进行优化,所以在编译的过程中123和456被合成了一个字符串"123456",因此,如果缓存池中目前没有123456这个对象,那么会产生一个,即""123456",且栈中产生一个引用s指向它,如果缓存池中已经存在"123456",那么将产生0个对象,直接用s指向它。

3、StringBuffer、StringBuilder

StringBuffer和StringBuilder就是所谓的可变字符串类,共四个构造方法:

StringBuffer()

public StringBuffer(int paramInt)

public StringBuffer(String paramString)

public StringBuffer(CharSequence paramCharSequence)

观察其源码发现,使用StringBuffer()时,默认开辟16个字符的长度的空间,使用public StringBuffer(int paramInt)时开辟指定大小的空间,使用public StringBuffer(String paramString)时,开辟th+16大小的空间。都是调用父类的构造器super()来开辟内存。这方面StringBuffer和StringBuilder都一样,且都实现AbstractStringBuilder类。

二者几乎没什么区别,基本都是在调用父类的各个方法,一个重要的区别就是StringBuffer是线程安全的,内部的大多数方法前面都有关键字synchronized,这样就会有一定的性能消耗,StringBuilder是非线程安全的,所以效率要高些。

  三、对象

1、初始化顺序:总体来说执行顺序为:静态块->静态属性->非静态块->属性->构造器。接下来我们分析一下类的属性和方法。

2、属性:

类中的属性一般分为类属性(全局变量)、实例属性(全局变量)、局部属性(局部变量)。<我是这么分的,尽管有人不这么分,但是分法无所谓,理解它们的含义最重要>.

类属性:前面已经说过就是那些声明为static的属性,在整个过程中只进行一次初始化,在内存中只开辟一个空间,不论在哪儿调用,值保持一致。一旦被修改,所有引用它的地方都会跟着修改。一般直接通过类名进行调用。

实例属性:实例变量是可以不进行初始化,比如一个整型的实例变量假如没有初始化,则默认值为0;而局部变量假如不赋初值语法上是通过的,但是在使用这个变量是程序就报错了。实例变量在堆和栈中都分配内存空间,在堆当中分配的是对象本身,而栈中则是对这个对象的引用。

局部属性:局部变量是在方法内部声明的变量,生命期仅在方法内,方法结束后变量就消失了;局部变量必须初始化再使用,否则会报错,也就是说,假如你在方法内定义了一个局部变量,并且没有赋值,那么你在使用这个变量的时候一定得赋值,不然就报错了。同时,局部变量可屏蔽全局变量。

3、重载:

是指在同一个类中,具有相同的`方法名,不同的参数列表的方法之间的一种机制。参数列表的不同体现在:类型不同、个数不同、顺序不同,只要满足任一一个,就可以进行方法重载。

4、重写:

重写是在继承中存在的,在两个类(子类和父类之间存在的关系)中,子类重写父类的方法,方法名相同,参数也相同的一种机制。

5、不定参数调用

public static String a(String ... value);

和下面的效果一样

public static String a(String[] value);

6、类与对象的关系

1)类是一类具有相同属性的事物的统称,是一种抽象。

2)对象是类的具体体现,又称实例。

3)类是一种静态的概念,而对象是一种动态的机制。

  四、抽象类、接口

1、抽象类与接口:

抽象类是一种类,里面除了有抽象方法外,还可以有具体的方法;

接口里面必须都是抽象的方法;

在Java中,凡是声明为形如:abstract void function()的方法,都是抽象方法;

包含抽象方法的类就是抽象类,抽象类中是可以没有抽象方法的;

有抽象方法的类必须是抽象类;

抽象类不一定有实体方法。

2、继承:

Java继承机制不允许多重继承类,但一个类允许实现多个接口

继承抽象类时,必须重写其抽象方法;

抽象类不能被声明为final类型的,因为加final关键字的类保证不能被继承,因此为抽象类加final关键字,这个类就没法用了。抽象类只能被继承,不能被实例化!

声明为interface的类为接口,比抽象类更加抽象的一种机制。在接口中,我们不能提供任何实现,所有方法必须都是抽象的,可以不加 abstract关键字,但是编译器对于接口中的方法,都是直接按抽象方法处理的。我们通过implements来实现某个接口。当我们实现某个接口时,必须重写其所有方法。

3、总结一下抽象类与接口的区别和联系:

a) 抽象类是类,可以有实体方法。

b) 抽象类不能实现多继承,而接口可以。

c) 如果需要创建不带任何方法定义和成员变量的基类,则使用接口,如果类中需要有部分具体的实现,则使用抽象类。

d) 如果事先想要将某类设计为一个基类,那么首选接口。

  • 文章版权属于文章作者所有,转载请注明 https://xuezhezhai.com/jsj/erji/wnj9v4.html