1、多态,就是重载和重写.重载发生在一个类中.重写发生在子类,意思就是子类重写父类相同名称的方法.
重载的特性:方法名相同.返回类型,传入方法的参数不同(包括个数和类型).
重写Overriding是父类与子类之间多态性的一种表现,重载Overloading是一个类中多态性的一种表现,
补充:方法重载
重载是指在同一个类中允许有重名的方法存在,但方法的参数必须不同。
参数不同是指参数的个数不同或参数的类型不同或参数的顺序不同。
不能用方法的返回类型来决定方法的重载.
重载经常用于构造方法。
重写的特性:方法名相同,返回类型,参数均相同,必须发生在子类.
?成员变量、静态方法按照引用变量声明的类型静态绑定;实例方法按照引用变量引用的实例动态绑定。
2、泛型
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。
泛型的规则和限制:
1、泛型的类型参数只能是类类型(包括自定义类),不能是简单类型。
2、同一种泛型可以对应多个版本(因为参数类型是不确定的),不同版本的泛型类实例是不兼容的。
3、泛型的类型参数可以有多个。
4、泛型的参数类型可以使用extends语句,例如<T extends superclass>。习惯上称为“有界类型”。
5、泛型的参数类型还可以是通配符类型。例如Class<?> classType = Class.forName("java.lang.String");
3、Collection 和 Collections的区别
答:Collection是集合类的上级接口,继承与他的接口主要有Set 和List.
Collections是针对集合类的一个帮助类,他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作。
4、描述一下JVM加载class文件的原理机制?
答:JVM中类的装载是由ClassLoader和它的子类来实现的,Java ClassLoader 是
一个重要的Java运行时系统组件。它负责在运行时查和装入类文件的类。
5、J2EE是技术还是平台还是框架?
答:J2EE本身是一个标准,一个为企业分布式应用的开发提供的标准平台。
J2EE也是一个框架,包括JDBC、JNDI、RMI、JMS、EJB、JTA等技术。
6、构造器Constructor是否可以被override?
答:构造器(override)不能被继承,因此不能重写overriding,但是可以被重载overloading。
7、当一个对象作为参数传递给一个方法后,此方法可以改变这个对象的属性,并可以返回变化后的结果,
那么这里到底是值的传递还是引用传递?
答:是值得传递。
java语言中只有值传递参数,对一个对象实例作为一个参数被传递到方法中时,
参数的值就是对该对象的引用,对象的内容可以在被调用的方法中改变,但对象的
引用是永远改变不了的。
8、char型变量中能不能存贮一个中文汉字?为什么:
答:是能够定义成为一个中文的,因为java中以unicode编码,一个char占16个字节,所以放一个中文是没问题的。
9、谈谈final, finally, finalize的区别:
java常见笔试题 答:final:修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父
类被继承。
因此一个类不能既被声明为 abstract的,又被声明为final的。将变量或方法声明为final,
可以保证它们在使用中不被改变。被声明为final的变量必须在声明时给定初值,
而在以后的引用中只能读取,不可修改。被声明为final的方法也同样只能使用,不能重载
finally:在异常处理时提供 finally 块来执行任何清除操作。如果抛出一个异常,
那么相匹配的 catch 子句就会执行,然后控制就会进入 finally 块(如果有的话)。
finalize:方法名。Java 技术允许使用 finalize() 方法在垃圾收集器将对象从内存中清除出去之前做必要的清理工作。
这个方法是由垃圾收集器在确定这个对象没有被引用时对这个对象调用的。它是在 Object 类中定义的,
因此所有的类都继承了它。子类覆盖 finalize() 方法以整理系统资源或者执行其他清理工作,如文件关闭。
firefox火狐浏览器32位
finalize() 方法是在垃圾收集器删除对象之前对这个对象调用的。
10、GC是什么?为什么要有GC?
答:GC是垃圾回收的意思(gabage collection),内存处理器是编程人员容易出现问题的地方,
忘记或者错误的内存回收导致程序或者系统的不稳定甚至崩溃,java的GC功能可以自动监测
对象是否超过作用域从而达到自动回收内存的目的,java语言没有提供释放已分配内存的显示操作方法。
11、assert什么时候使用?
答:assertion(断 言)在软件开发中使用中常见的调试方式,很多编程语言中都支持这种机制,
在实现中,assertion就是在程序中的一条语句,他对一个boolean表 达式进行检查,一个正确的程序
必须保证这个boolean表达式的值是true。如果该值为false,说明该程序已经处于不正确的状态了,
系统将给出警 告或者退出。一般来说assertion用来保证程序最基本、关键的正确性,assertion检查通常在开发和测试时启动,
为了提高效率,在软件发布 后,assertion检查通常是关闭的。
12、基本的数据类型
答:8种基本数据类型 byte,int,long,double,char,boolean,float,short
String不是基本数据类型,java.lang.String是final类,因此不能修改这个类,不能继承这个类。
为了节省空间,提高效率我们应该用StringBuffer。
13、面向对象的特点
答:抽象、继承、封装和多态
a、抽象是或略
一个主题中与当前目标的无关的因素,一边充分考虑有关的内容。抽象并不能解决目标中所有的问题,
只能选择其中的一部分,忽略其他的部分。抽象包含两个方面:一是过程抽象;一是数据抽象。
b、继 承是一种联接类的层次模型,允许和鼓励类的重用,提供了一种明确的共性的方法。
对象的一个新类可以从现有的类中派生,这叫做类的继承。心累继承了原始类的 特性,新类称为原始类的派生类或者是子类,
原始类称为新类的基类或者父类。子类可以从父类那里继承父类的方法和实现变量,并却允许新类增加和修改新的方法 使之满足需求。
c、封装就是把过程和数据包围起来。对数据的访问只是允许通过已经定义好的界面。面向对象就是基于这个概念,
即现实世界可以描述为一系列完全自治,封装的对象,这些对象通过固定受保护的接口访问其他对象。
d、多态性是指不同类的对象对同一个请求作出相应。多态性包括参数多态和包含多态。多态性语言具有灵活、抽象、
行为共享、代码共享的优势。很好的解决了应用程序中同名的问题。
14、Static Nested Class和Inner Class的不同,说的越多越好
答:Static Nested Class是被声明为静态(static)的内部类,它可以不依赖于外部类实例被实例化。
而通常的内部类需要在外部类实例化后才能实例化.
15、抽象类和接口有什么区别,它们中的属性和方法 的特点是什么?
答: 1、声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,
python怎么读取气象月报表a文件 并为该类声明方法,但不能在该类中实现该类的情况。不能创建abstract 类的实例。然而可以创建一个变量,
其类型是一个抽象类,并让它指向具体子类的一个实例。不能有抽象构造函数或抽象静态方法。
Abstract 类的子类为它们父类中的所有抽象方法提供实现,否则它们也是抽象类为。取而代之,在子类中实现该方法。
知道其行为的其它类可以在类中实现这些方法。
2、接口(interface)是抽象类的变体。在接口中,所有方法都是抽象的。多继承性可通过实现这样的接口而获得。
接口中的所有方法都是抽象的,没有一个 有程序体。接口只可以定义static final成员变量。接口的实现与子类相似,
除了该实现类不能从接口定义中继承行为。当类实现特殊接口时,它定义(即将程序体给予)所有这种接口的方法。
然后,它可以在实现了该接口的类的任何对象上调用接口的方法。由于有抽象类,它允许使用接口名作为引用变量的类型。
通常的动态联编将生效。引用可以转换到接口类型或从
魔方教程一步一步图解完整版接口类型转换,instanceof 运算符可以用来决定某对象的类是否实现了接口。
16、xml有哪些解析技术?区别是什么?
答:有DOM,SAX,STAX等
DOM: 处理大型文件是其性能下降的非常厉害,这个问题是由DOM的树结构造成的,这种结构占用的内存较多,
而且DOM必须在解析文件之前把整个文档装入内存,适 合对xml的随机访问,sax:不现于,DOM,SAX是事件驱动型的
xml解析方式,他顺序的读取xml文件,不需要自已全部装载正文件,当遇到文档开 头,文档结束,
或者标签开都与标签结束时,他会触发一个事件,用于通过在其回调事件中写入处理代码来处理xml文件,适合对xml的顺序访问。
Stax:Streaming API for xml(Stax)。
17、Class.forName的作用是什么?为什么要用?
答:Class.) 返回的是一个类
Class.);的作用是要求 JVM查并加载指定的类,也就是说JVM会执行该类的静态代码段动态加载和创建Class 对象
newInstance()实际上是把new这个方式分解为两步,即首先调用Class加载方法加载某个类,然后实例化。
这样分步的好处是显而易见的。我们可以在调用Class的静态加载方法forName时获得更好的灵活性,提供给了一种降耦的手段。
用最简单的描述来区分new关键字和newInstance()方法的区别:
newInstance: 弱类型。低效率。只能调用无参构造。
new: 强类型。相对高效。能调用任何public构造
18、Set里的元素是不能重复的,那么用什么方法来区分重复与否呢? 是用==还是equals()? 它们有何区别:
答:Set里的元素是不能重复的,那么用iterator()方法来区分重复与否。equals()是判读两个Set是否相等。
equals()和==方法决定引用值是否指向同一对象equals()在类中被覆盖,为的是当两个分离的对象的内容和类型相配的话,返回真值。
Java 关键字:
abstract assert boolean break byte case catch char class const continue default do, double else enum extends
false final finally float for goto if implements import instanceof int interface long native new null package
private protected public return short static strictfp super switch
synchronized this throw throws transient true try void volatile while
Java 的8种基本数据类型
byte 一个字节 -128~127
short 2 -32768~32767
int 4 -2147483648~2147483647
long 8
float 4
double 8
char 2
boolean 1 1字节( byte )=8位(bit) ; 1KB = 1024 byte
Java 注释
单行注释 //
多行注释 /* */
文档注释 /** */
Java 命名标识符的规则
1、区分大小写、标识符长度不限。
2、英文、中文、韩文、数字、下划线、美元符号($)均可用,但不能以数字开头。
3、
不能使用Java关键字,例如:class void System等
4、标识符不能包含空格
Java 语言的8种基本数据类型中7种都可以看作是数值类型,我们知道对于数值类型的转换有一个规律:
从窄范围转化成宽范围能够自动类型转换,反之则必须强制转换。
例如: int b = 1000; long a = b;
long a =1000L;int b = (int)a;
补充:
原码:将最高位做为符号位,0表示正,1表示负,其余各位为数据位
反码:一个数为正数,则反码和原码相同。为负则符号位为1其余各位对原码取反
补码:一个数为正数,则原码、反码、补码相同,为负则符号位为1,其余各位对原码取反后加1.
int a=222 ;在内存中占32位
00000000000000000000000011011110
转为byte后,只保右八位,结果为:
11011110
高位为1说明为负数,(负数在系统中以补码形式存在)
11011110 (为补码)补码转为原码(符号位不变,各位取反加1)结果如下:
10100010(为原码)十进制-34
Java 面向对象
1、在静态方法里, 类的成员变量不能直接使用,一定要实例化类的对象,通过对象才可以使用成员变量。
类的成员变量,可以不赋初值,系统会根据成员变量的类型自动为成员变量赋初值,引用类型的成员变量初值为null。
2、局部变量一定要赋初值,才可使用。局部变量前没有权限修饰符。
3、类变量(静态变量)
用static关键字修饰的变量变为类变量。static修饰的方法和属性,可以用类名去调用。
方法重载
discuz点播模板 重载是指在同一个类中允许有重名的方法存在,但方法的参数必须不同。
参数不同是指参数的个数不同或参数的类型不同或参数的顺序不同。
不能用方法的返回类型来决定方法的重载.
重载经常用于构造方法。
继承
JAVA中子类会继承父类所有的非私有的属性和方法.
(1)静态实例块(加载类时执行) (2)实例块(创建对象前执行) (3)main(){第一句;} (4)创建对象(执行构造器)
执行顺序:(1)(3)(2)(4)
Cloneable 接口的应用
它实际上是一个空接口,即: public interface Cloneable{}
在API中推荐,完善这个接口的类需要覆盖Object.clone()方法,才可以对对象进行复制。
覆盖代码如下:
protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
SomeClass sc = new SomeClass();
ios视频播放器源码 SomeClass sc2 = sc; //sc2引用sc 引用相同的地址 对其中一个改变,会影响另外一个改变
浅复制 深复制
浅复制 protected Object clone() throws CloneNotSupportedException {
return super.clone();
}
深复制
SomeClass 类中的属性为:OtherClass oc;
protected
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论