Java基本知识点(适合面试)
1〕把软件系统看成是各种对象的集合,这更接近人的思维。 2〕软件需求的变动往往是功能的变动,而功能的执行者--对象一样可不能有太大的变化。这使得按照对象设计出来的系统结构比较稳固。
3〕对象包括属性和方法,对象把属性和方法的具体实现方式一起封装起来,这使得方法与之相关的属性不再分离,提高每个子系统的相对独立性,从而提高了软件的可爱护性。
4〕支持封装、继承、多态和抽象,提高了软件的可重用性、可爱护性和可扩展性。
2.把一个类放在包里有什么作用?(包的作用)
1〕能够区分名字相同的类; 2〕有助于实施访问权限操纵;
3〕有助于划分和组织java应用中的各个类。
3.说出一些常用的类,包,接口,请各举出5个。Runable,ActionListener,Conllection,Map,Set,List接口
1〕java.lang包----包括线程类(Thread)、专门类(Exception)、系统类(System)、整数类(Integer)和字符串类(String)等, 这些类是java程序中经常用到的。
2〕java.awt包----抽象窗口工具箱包,awt是(Abstract Window Toolkit) 的缩写。那个包中包含了用于构建GUI界面的类及绘图类。
3〕java.io包----输入/输出包,包含各种输入流类和输出流类,如文件输入流类(FileInputStream类)及文件输出流类(FileOutputStream)等。
4〕java.util包----提供一些有用类,如日期类(Data)和集合类(Collection)等。
5〕java.net包----支持TCP/IP网络协议,包括Socket类及和URL相关的类,这些类都用于网络编程。
除了上面提到的差不多包,JDK中还有专门多其他包,比如用于数据库编程的java.sql包,用于编写网络程序的java.rmi包(rmi是〝Remote Method Invocation〞的缩写)。另外,javax.*包是对差不多包的扩展,包括用于编写GUI的javax.Swing包,以及用于编写声音程序的javax.sound包等。
4. 描述一下你最常用的编程风格。
1〕注意编码规那么,符合编码要求; 2〕变量,类等起名要有意义; 3〕经常格式化代码,注意格式;
4〕代码中加入测试方法或测试类,尽量提早发觉错误; 5〕代码中要加入注释,为别人和自己今后明白得代码带来方便。
5. 说一说标识符的命名规那么,以及java的编程规范。 Java标识符的命名规那么:
1〕标识符由字母、数字、下划线〝_〞、美元符号〝$〞或者人民币符号〝¥〞组成,同时首字母不能是数字。 2〕不能把关键字和保留字作为标识符。 3〕标识符没有长度限制。 4〕标识符对大小写敏锐。 Java编程规范:
1〕类名和接口名:首字母大写,其余字母小写。如SamDoc
2〕方法名和变量名:首字母小写,其余的字母大写。如bothEyesOfDoll。
3〕包名:字母全部小写。如,com.abc.dollapp。
4〕常量名:采纳大写形式,单词之间以下划线〝_〞隔开。如DEFAULT_COLOR_DOL。
6.用new关键字的作用是什么?
1〕 为对象分配内存空间,将对象的实例变量自动初始化为其变量类型的默认值; 2〕 假如实例变量在声明时被显示初始化,那就把初始化值赋给实例变量; 3〕 调用构造方法; 4〕 返回对象的引用。
7.简述变量的作用域
1〕成员变量:在类中声明,它的作用域是整个类。
2〕局部变量:在一个方法的内部或方法的一个代码块的内部声明。假如在方法的内部声明,它的作用域是整个方法;假如在一个方法的某个代码块的内部声明,它的作用域是那个代码块。
3〕方法参数:方法或者构造方法的参数,它的作用域是整个方法或者构造方法。 4〕专门处理的参数:它的作用域是紧跟着catch(Exception e)后的代码块。
8.静态变量和实例变量有什么区别?
1〕 类的静态变量在内存中只有一个,java虚拟机在加载类的过程中为静态变量分配内存,静态变量位于方法区,被类所有实例共享。静态变量能够直截了当通过类名被访问。静态变量的生命周期取决于类的生命周期,当加载类的时候静态变量被创建并分配内存,当卸载类的时候,静态变量被销毁并撤销所在内存。
2〕 类的每个实例都有相应的实例变量。每创建一个类的实例,java虚拟机就为实例变量分配一次内存,实例变量位于堆中。实例变量的生命周期取决于实例的生命周期,当创建实例的时候,实例变量被创建并分配内存,当销毁实例的时候,实例变量被销毁并撤销所在内存。
9.使用switch语句的时候需要注意什么事项?
1〕在switch(exp)语句中,exp表达式的类型必须是与int类型兼容的差不多类型,即能自动转换为int的类型。包括byte、short、char和int类型。其他类型不能作为exp表达式的类型。 2〕在case value字句中,value表达式必须满足以下条件:
1.value类型必须是与int类型兼容的差不多类型,包括byte、short、char和int类型。 2.value必须是常量。
3.每个case子句的value表达式的值必须不同。
3〕在switch语句中最多只能有一个default子句。default子句是可选的,同时能够位于switch语句中的任何位置。 4〕假如switch表达式与某个case表达式匹配,或者与default情形匹配,就从case子句或default子句开始执行。假如遇到了break语句,就退出整个switch语句,否那么依次执行switch语句中后续的case子句,不再检查case表达式的值。
10.方法重载和覆盖 重载方法必须满足以下条件:
1〕方法名相同
2〕方法的参数的数据类型、个数、顺序至少有一项不同 3〕方法的返回类型能够不相同 4〕方法的修饰符能够不相同 覆盖方法必须满足以下条件:
1〕子类方法的名称、参数签名和返回类型必须与父类方法的名称、参数签名和返回类型一致; 2〕子类方法不能缩小父类方法的访问权限; 3〕子类方法不能抛出比父类方法更多的专门;
4〕方法覆盖只存在于子类和父类〔包括直截了当父类和间接父类〕之间。在同一个类中方法只能被重载,不能被覆盖;
5〕父类的静态方法不能被子类覆盖为非静态的方法;
6〕子类能够定义与父类的静态方法同名的静态方法,以便在子类中隐藏父类的静态方法; 7〕父类的非静态方法不能被子类覆盖为静态方法; 8〕父类的私有方法不能被子类覆盖;
9〕父类的抽象方法能够被子类通过两种途径覆盖:一是子类实现父类的抽象方法;二是子类重新声明父类的抽象方法;
10〕父类的非抽象方法能够被覆盖为抽象方法。
方法重载和方法覆盖具有以下相同点:
1〕都要求方法名相同;
2〕都能够用于抽象方法和非抽象方法之间。
方法重载和方法覆盖具有以下不同点:
1〕方法覆盖要求参数签名必须一致,而方法重载要求参数签名必须不一致; 2〕方法覆盖要求返回类型必须一致,而方法重载对返回类型不做限制; 3〕方法覆盖只能用于子类覆盖父类的方法,而方法重载用于同一类的所有方法;
4〕方法的覆盖对方法的访问权限和抛出的专门有专门的要求,而方法重载在这方面没有任何限制; 5〕父类的一个方法只能被子类覆盖一次,而一个方法在所在的类中能够被重载多次。
11.多态有什么样的特点? 多态的特点如下:
1〕关于一个引用类型的变量,编译器按照它声明的类型处理。
2〕关于一个引用类型的变量,运行时java虚拟机按照它实际引用的对象处理。
3〕在运行时环境中,通过引用类型变量来访问所引用对象的方法和属性时,java虚拟机采纳以下的绑定规那么:
1 实例方法与引用变量实际引用的对象的方法绑定,这种绑定属于动态绑定,因为是在运行时由java虚拟机动态决定的。
2 静态方法与引用变量所声明的类型的方法绑定,这种绑定属于静态绑定,因为实际上是在编译时期就差不多做了绑定。
3 成员变量(包括静态变量和实例变量)与引用类型所声明的类型的成员变量绑定,这种绑定属于静态绑定,因为实际上是在编译时期就差不多做了绑定。
12.什么是多态?面向对象程序设计什么缘故要引入多态的专门性?使用多态有什么优点?
多态性是对象依照实际情形自动调用不同类层上适当的同名方法的一种现象。不管什么时候,创建有层次关系的一些类时,假如这些类有可能共享一个方法声明,就应当考虑分别在每个类中实现不同的方法。在超类中使用抽象(或一般)的方法,然后在子类中实现(或覆盖)该方法,如此就能产生多态性。多态性能使我们专门容易在从超类继承来的新类上添加新的功能。
13.继承的使用原那么。