一.基本概念
1.1 java语言有什么优点1.2 java语言和c/c++有什么异同1.3 为什么需要public static void main (String[] args) 这个方法1.4 如何实现在main方法前打印helloworld1.5 java程序初始化的顺序时怎样的1.6 java中的作用域有哪些1.7 一个java文件中是否可以定义多个类1.8 什么是构造函数1.9 为什么java中的有些接口没有任何方法1.10 java中的clone方法有什么用1.11 什么是反射机制1.12 package有什么作用1.13 如何实现类似c中函数指针的功能
一.基本概念 1.1 java语言有什么优点java语言是纯面向对象的语言,能够直接反应现实生活中的对象java语言有平台无关性的特点,一次编译到处运行,不管在什么平台上编译的java代码都会形成java中间代码,中间代码有平台无关性的特点,由java虚拟机解释运行java提供了很多内置类库java提供了堆web应用开发的支持java具有较好的安全性和健壮性,java提供了一个防止恶意代码攻击的安全机制(数组边界检查等),java的强类型机制,垃圾回收器,异常处理等机制使得在编写java代码时有很好的健壮性 1.2 java语言和c/c++有什么异同
同:java和c++都是面向对象的语言,都有面向对象的思想(封装,继承,多态)不同:
java是解释性语言,java编译后形成中间代码,由jvm解释运行,c/c++是编译型语言,经过编译链接后形成可直接运行的二进制代码,所以java的运行速度比c/c++稍慢了些,但也因此有了跨平台性java是纯面向对象的语言,除了基本数据类型外,所有的类型都是类,此外,java没有全局变量或全局函数,c++兼具面向对象和面向对象的特点,可以使用全局变量或全局函数java没有指针的概念,使得程序更安全java不允许多继承,但java可以实现多个接口,且接口也有多态性java不需要管理内存,有垃圾回收机制 1.3 为什么需要public static void main (String[] args) 这个方法
jvm启动时,会去方法区找程序的入口main方法,若没找到就报错,由于main方法是第一个调用的方法,此时还没有任何对象,因此无法通过任何实例调用此方法,所以mian方法只能声明成public static的,void表示没有返回值,args表示可以传递参数,为开发人员在命令行状态下与程序交互的一种手段每个类中都可以定义main方法,但只用与本文件名相同的用public修饰的类中main方法才能作为程序的入口public和static没有先后顺序,可以用final,synchronized修饰,但返回值类型必须是void 1.4 如何实现在main方法前打印helloworld
main方法是程序运行时第一个被运行的方法,但不是第一个执行的模块,由于静态代码块在类被加载时就回被调用,因此可以在静态代码块中编写代码,先于main方法执行 1.5 java程序初始化的顺序时怎样的
原则:静态先于非静态、父类先于子类具体顺序:父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量,父类非静态代码块,父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数 1.6 java中的作用域有哪些
java语言中,变量的主要类型有三种:成员变量,静态变量,局部变量成员变量的声明周期和实例对象相同,可用四种权限修饰符修饰
public 所有类可见private 当前类可见protected 自己和子类可见default 自己和当前包可见 静态变量不依赖特定实例,所有实例共享,通过类名,变量名访问局部变量所在花括号内可见 1.7 一个java文件中是否可以定义多个类
可以,但public类只能有一个,且类名需与文件名相同 1.8 什么是构造函数
构造函数名必须跟类名相同,没有返回值(也不能是void)每个类可以有多个构造函数,没有定义构造器,系统默认提供一个空参的,若定义了构造器,系统不提供默认的构造函数总是伴随new调用,不允许直接调用,器实例化时自动调用,且只运行一次目的是完成对象的初始化工作构造函数不能继承,可以重载子类可以通过super关键字显示调用父类的构造器,若父类没有无参的构造器,子类需显示调用父类有参构造器,若父类有无参构造器,子类可以不显示调用,这是默认调用父类空参构造器默认构造器的修饰符跟当前类的修饰符相关 1.9 为什么java中的有些接口没有任何方法
接口是常量和抽象方法的集合(常量默认用public static final修饰,方法默认用public abstract修饰)可以看成是一种特殊的抽象类一个类只能继承一个抽象类,但可以实现多个接口,在一定程度上解决了java只能单继承的缺陷接口中不定义任何方法可是作为一个类的标识 1.10 java中的clone方法有什么用
java中的传递机制是,基本数据类型传递的是值,引用数据类型传递的是地址值,在实际编程中有时会需要创建一个与A对象相同状态的对象B,在修改A的同时,B不能受到影响,这时要是还是使用=赋值操作就行不通了,可是使用clone方法返回一个跟对象A状态相同的一个新的对象clone的使用方法
实现Cloneable接口,标识自己是可克隆的对象在类中重写Object类中的clone方法在clong方法中调用super.clone把浅复制的引用指向新的克隆体 浅复制 vs 深复制
浅复制就是只对基本数据类型的成员变量进行复制深复制不止对基本数据类型的成岩变量进行复制,还对引用类型的变量进行复制,其中引用类型的变量也要调用clone方法 1.11 什么是反射机制
允许程序在运行时进行自我检查,同时也允许对内部成员进行操作主要功能:获取一个对象的所属类;获取一个类的所有成员变量和方法;在运行时创建对象;在运行时调用对象方法获取class类的三种方式
class.forName(“类的路径”)类名.class实例.getClass() java创建对象有几种方式
new反射clone反序列化 1.12 package有什么作用
提供多层命名空间,解决命名冲突,不同packeage下可以有同名的类对类的功能进行分类,可以使项目的组织结构更加清晰 1.13 如何实现类似c中函数指针的功能
函数指针一个最重要的功能是实现回调函数(回调函数:指函数现在某处注册,需要的时候被调用)java中要实现这个功能,可以定义一个接口,然后根据需要实现接口中的方法,然后将接口作为参数,由于接口也有多态的特性,需要调用什么类型的方法,就传相应的实现类进去。



