java-继承时候类的执行顺序问题_-动力节点
- 格式:docx
- 大小:40.72 KB
- 文档页数:2


Java 集合类操作优化经验总结——动力节点java 本文首先针对Java集合接口进行了一些介绍,并对这些接口的实现类进行详细描述,包括LinkedList、ArrayList、Vector、Stack、Hashtable、HashMap、WeakHashMap 等,然后对一些实现类的实现方式和使用经验进行讲解,同时重点介绍WeakHashMap。
希望通过本文介绍,可以让读者对集合的操作方式、注意事项等有一些了解。
在实际的项目开发中会有很多的对象,如何高效、方便地管理对象,成为影响程序性能与可维护性的重要环节。
Java提供了集合框架来解决此类问题,线性表、链表、哈希表等是常用的数据结构,在进行Java 开发时,JDK 已经为我们提供了一系列相应的类来实现基本的数据结构,所有类都在java.util 这个包里,清单1 描述了集合类的关系。
清单1.集合类之间关系Collection├List│├LinkedList│├ArrayList│└Vector│└Stack└SetMap├Hashtable├HashMap└WeakHashMap本文讲的就是集合框架的使用经验总结,注意,本文所有代码基于JDK7。
集合接口Collection 接口Collection 是最基本的集合接口,一个Collection 代表一组Object,即Collection 的元素(Elements)。
一些Collection 允许相同的元素、支持对元素进行排序,另一些则不行。
JDK 不提供直接继承自Collection 的类,JDK 提供的类都是继承自Collection 的子接口,如List 和Set。
所有实现Collection 接口的类都必须提供两个标准的构造函数,无参数的构造函数用于创建一个空的Collection,有一个Collection 参数的构造函数用于创建一个新的Collection,这个新的Collection 与传入的Collection 有相同的元素,后一个构造函数允许用户复制一个Collection。
Java基础方面(二)21、是否可以继承String类答:String类是final类故不可以继承22、try {}里有一个return语句,那么紧跟在这个try后的finally{}里的code会不会被执行,什么时候被执行,在return前还是后答:会执行,在return前执行23、用最有效率的方法算出2乘以8等於几答:2 << 324、两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对答:不对,有相同的hash code25、当一个对象被当作参数传递到一个方法后,此方法可改变这个对象的属性,并可返回变化后的结果,那么这里到底是值传递还是引用传递答:是值传递。
Java编程语言只有值传递参数。
当一个对象实例作为一个参数被传递到方法中时,参数的值就是对该对象的引用。
对象的内容可以在被调用的方法中改变,但对象的引用是永远不会改变的26、swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上答:witch(expr1)中,expr1是一个整数表达式。
因此传递给switch和case语句的参数应该是int、short、char 或者byte。
long,string 都不能作用于swtich27、ArrayList和Vector的区别,HashMap和Hashtable的区别答:就ArrayList与Vector主要从二方面来说.一.同步性:Vector是线程安全的,也就是说是同步的,而ArrayList是线程序不安全的,不是同步的二.数据增长:当需要增长时,Vector默认增长为原来一培,而ArrayList却是原来的一半就HashMap与HashTable主要从三方面来说。
一.历史原因:Hashtable是基于陈旧的Dictionary类的,HashMap是Java 1.2引进的Map 接口的一个实现二.同步性:Hashtable是线程安全的,也就是说是同步的,而HashMap是线程序不安全的,不是同步的三.值:只有HashMap可以让你将空值作为一个表的条目的key或value28、char型变量中能不能存贮一个中文汉字?为什么?答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的29、GC是什么?为什么要有GC答:GC是垃圾收集的意思(Gabage Collection),内存处理是编程人员容易出现问题的地方,忘记或者错误的内存回收会导致程序或系统的不稳定甚至崩溃,Java提供的GC功能可以自动监测对象是否超过作用域从而达到自动回收内存的目的,Java语言没有提供释放已分配内存的显示操作方法。
【黑马程序员】继承中的构造代码块执行顺序详解在我们Android基础班第八天,相信所有的同学都遇到了这样一道面试题目,题目是请问程序的执行结果,代码如下:class Test2_Extends {public static void main(String[] args) {Zi z = new Zi();}}class Fu {static {System.out.println("静态代码块Fu");}{System.out.println("构造代码块Fu");}public Fu() {System.out.println("构造方法Fu");}}class Zi extends Fu {static {System.out.println("静态代码块Zi");}{System.out.println("构造代码块Zi");}public Zi() {System.out.println("构造方法Zi");}}下面我们循序渐进的来研究一下这个题目,代码块就是用{}括起来的代码,根据代码块的功能、执行顺序和书写位置,我们把代码块分为静态代码块,构造代码块,局部代码块。
静态代码块:书写在成员位置,大括号前面有static关键字,仅随着类的加载执行一次,所以可以在里面一些项目中的初始化的内容。
∙构造代码块:书写在成员位置,每次创建对象的时候构造代码块都会执行一次,而且是在构造方法的内容执行之前执行,所以可以写一些该类里面所有构造方法共性的内容。
∙局部代码块:书写在局部位置(即方法里面),可以尽早的让变量在内存中消失,略微提升一些效率首先执行Zi z = new Zi();创建Zi类对象的时候,必须先加载Zi类的父类Fu,接着加载Zi类,那么Fu类和Zi类中的静态代码块就会随着类的加载而依次执行了,然后程序即将执行Zi类的构造方法,但是在构造方法执行之前必须先执行Zi类的构造代码块,接着执行Zi类的构造方法,由于Zi类的构造方法第一行语句默认都有super(),所以接着将要去执行父类Fu的构造方法,但是在执行Fu的构造方法之前,先执行Fu的构造代码块,然后才能执行Fu的构造方法,执行Fu的这些内容后,才接着执行Zi类构造方法的后续内容。
java继承的概念和使用Java中的继承是面向对象编程的核心概念之一,它允许一个类(称为子类或派生类)继承另一个类(称为父类或基类)的属性和方法。
通过继承,子类可以重用父类的代码,同时还可以添加自己独特的功能。
以下是Java中继承的基本概念和使用方法:1.声明继承关系:使用关键字extends来声明一个类继承另一个类。
例如:public class SubClass extends SuperClass2.子类与父类关系:子类会继承父类的非私有属性和方法,包括字段、方法和构造函数。
3.访问父类属性和方法:子类可以通过使用super关键字来访问父类的属性和方法。
例如:super.methodName()用于调用父类的方法。
4.方法重写:子类可以重写(覆盖)父类的方法,以便根据自己的需求提供新的实现。
重写方法使用相同的方法名、参数列表和返回类型。
使用@Override注解可以确保正确地重写父类方法。
5.单继承:在Java中,一个类只能直接继承一个父类。
这意味着Java不支持多重继承,即一个类不能同时继承多个类。
6.继承层级:通过继承,可以构建一个继承层级(inheritance hierarchy),其中子类可以有更具体的特性,而父类则提供了通用的行为和属性。
这种层级结构可以通过多级继承来扩展。
7.构造函数的继承:子类在实例化时会自动调用父类的无参构造函数(如果存在)。
如果需要调用父类的有参构造函数,可以使用super关键字。
继承的使用可以提高代码的可重用性和扩展性,同时也符合面向对象编程的概念。
然而,过度的继承可能会导致类之间的紧耦合,影响代码的灵活性,因此在使用继承时需要注意合理设计类的继承关系。