java基础知识

1. java和c/c++的异同
相同点:
都是面向对象语言,都使用面向对象思想。

不同点:
(1).java是解释型语言,先编译成字节码,由jvm解释执行。 c++是编译型语言,编译链接后生成可执行的二进制代码。所以,java比c++慢,但java可以跨平台执行。

(2).java纯面向对象语言,所有代码必须在类中实现,java语言不存在全局变量或全局函数。c++兼具面向过程和面向对象的特点,可定义全局变量和全局变量。

(3).java没有指针,因此程序更加安全。

(4).c++支持多重继承,java不支持,但是java可以通过多个接口实现多重继承。

(5).c++由开发人员管理内存,java提供垃圾回收器实现垃圾的自动回收。c++将释放资源的代码放在析构函数中,java引入finalize()方法,当垃圾回收器将要释放无用对象的内存时,会首先调用该对象的finalize方法,因此,开发人员不需要关心对象所占的内存空间何时释放。

(6).c++支持运算符重载,java不支持。

(7).c++支持自动强制类型转换,java必须由开发人员进行显式强制类型转换。

2. public static void main(String[] args)方法
a. 程序入口。public:权限修饰符。 static:静态方法,存储在静态存储区,只要类被加载,不需要通过实例化对象访问

b.参数传递:java test arg1 arg2 arg3

c.其他修饰符:
static public void main(String[] args)
public static final void main(String[] args)
public static synchronized void main(String[] args)
不可用abstract修饰。

d.只有与文件名相同的用public修饰的类才可以作为程序入口。

3.在main方法前输出hello world
定义静态块:
static {

}
静态块在类加载时就被调用,因此,无论该静态块在哪个地方,都会在main方法之前执行。

4.java程序初始化的顺序
当实例化对象时,先初始化类的所有成员变量,再调用类的构造函数创建对象。

遵循3个原则:
a.静态对象优于非静态对象;
b.父类优于子类;
c.按照成员变量定义顺序进行初始化。

∴父类静态变量、父类静态代码块、子类静态变量、子类静态代码块、父类非静态变量、父类非静态代码块、父类构造函数、子类非静态变量、子类非静态代码块、子类构造函数。

5.java中的作用域
变量类型有3种:

  • 成员变量:作用范围与类的实例化对象的作用范围相同
  • 静态变量:被static修饰,被所有实例共享,只要有一个类被加载,jvm就会给类的静态变量分配存储空间。
  • 局部变量:作用域在他所在的花括号内

成员变量的四种作用域:成员变量的四种作用域

6.一个Java文件可以定义多个类
一个java文件可以定义多个类,但是只有一个可以被public修饰,且类名与文件名必须相同。
当javac指令编译这个文件时,会给每个类生成一个对应的.class文件。

7.构造函数
构造函数主要作用:完成对象的初始化工作。
构造函数伴随new操作一起调用.
子类可以用super关键字显式调用父类的构造函数。

8.接口
作用:间接实现多继承

接口是抽象方法定义的集合(接口中也可以定义一些常量值),是一种特殊的抽象类。

接口中成员的作用域修饰符都是public,常量值默认使用public static final修饰。

标识接口:对实现他的类没有语义上的要求,仅充当标识的作用,表明实现他的类属于一个特定的类型。如java类库中已存在的标识接口有:Cloneable和Serializable。使用时常用instanof来判断实例对象的类型是否实现了一个给定的标识接口。[例子见参考书目4.1.9]

9.clone方法

10.反射机制

11.package
包的宗旨是把.java文件 .class文件 resource文件(.xml.avi.map)有条理的组织在一起。

作用:提供多层命名空间;提高可读性和可维护性。

可在源文件开头加上 package packagename表明源文件属于某个包。

12.如何实现类似于c语言中函数指针的功能

参考:《java程序员面试笔试宝典-何昊》

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值