常见的问题

1.什么是java虚拟机?为什么java称为是“平台无关的编程语言”?

java虚拟机是一个可以执行java字节码的虚拟进程。java源文件被编译成能被java虚拟机执行的字节码文件。java被设计成允许应用程序可以运行在任意的平台。

2.JDK和JRE的区别:

java运行时的环境(JRE)是将要执行java程序的java虚拟机。它同时也包含了执行applet需要的浏览器插件。java开发工具 包(JDK)是完整的java软件开发 包,包含了JRE,,编译器和其它的工具(比如:JavaDoc,java调试器),可以让开发者开发、编译、执行java应用程序。

3."static"关键字是什么意思?Java中是否可以覆盖(override)一个private或者是static的方法?

"static"关键字表明一个成员变量或者是成员方法可以在没有所属的类的实例变量的情况下被访问。

Java中static方法不能被覆盖(overrid),因为方法覆盖是基于运行时动态绑定的,而static方法时编译时静态绑定的,static方法跟类的任何实例都不相关。

4.是否可以在static环境中访问非static变量?

static变量是属于类的,当类被java虚拟机载入的时候,会对static变量进化初始化。static的特点:随着类的加载而加载 ;优先于对象存在;被类的所有对象共享;可以通过类名直接调用。

static的注意事项:

(1)在静态方法中没有this关键字,静态是随着类的加载而加载,this是随着对象的创建而存在的,静态比对象先存在。

(2)静态方法只能访问静态的成员变量和静态的成员方法。

静态方法:只能访问静态变量和成员方法

非静态方法:可以访问静态也可以访问非静态的成员变量和方法。

静态只能访问静态,非静态可以访问一切。

5.Java支持的数据类型有哪些?什么是自动拆装箱?

java语言支持8种基本数据类型:byte、short、int、long、float、double、boolean、char

自动装箱是java编译器在基本数据类型和对应的对象包装类型之间做的一个转换,比如:把int转换为Integer,double转换为Double,等等。反之就是自动拆箱。

6.java中方法覆盖(Overriding)和方法重载(Overloading)是什么意思?

方法重载是发生在同一个类里面的两个或多个方法的方法名相同参数不相同的情况。

方法覆盖(重写 )是子类重新定义了父类的方法,方法覆盖必须具有相同的方法名,参数列表,和返回值类型。

7.什么是构造方法?什么是构造方法重载?

构造方法的格式:方法名和类名相同,没有具体的返回值,连void都没有。当对象被创建时,构造方法会被调用,给对象的数据进行初始化,每一个类都有构造方法,如果程序员不提供构造方法,系统会给出默认的构造,如果你提供了构造方法系统将不在提供。建议永远自己给构造方法 。

构造方法的重载可以为一个类创建多个构造方法,每一个构造方法必须有它自己唯一的参数列表。

java不会创建 默认的复制构造方法.。C++支持复制构造函数。

8.接口和抽象类的区别是什么?

A:成员区别
    抽象类:
        成员变量:可以变量,也可以常量
        构造方法:有
        成员方法:可以抽象,也可以非抽象
    接口:
        成员变量:只可以常量
        成员方法:只可以抽象
        
B:关系区别
    类与类
        继承,单继承
    类与接口
        实现,单实现,多实现
    接口与接口
        继承,单继承,多继承
        
C:设计理念区别
    抽象类 被继承体现的是:”is a”的关系。抽象类中定义的是该继承体系的共性功能。
    接口 被实现体现的是:”like a”的关系。接口中定义的是该继承体系的扩展功能。

抽象类的几个小问题
        A:抽象类有构造方法,不能实例化,那么构造方法有什么用?
            用于子类访问父类数据的初始化
        B:一个类如果没有抽象方法,却定义为了抽象类,有什么用?
            为了不让创建对象
        C:abstract不能和哪些关键字共存
            a:final    冲突
            b:private 冲突
            c:static 无意义

抽象类的特点
        A:抽象类和抽象方法必须用关键字abstract修饰
        B:抽象类中不一定有抽象方法,但是有抽象方法的类一定是抽象类
        C:抽象类不能实例化
        D:抽象类的子类
            a:是一个抽象类。
            b:是一个具体类。这个类必须重写抽象类中的所有抽象方法。

接口是绝对抽象的,不可以被实例化,抽象类也不可以被实例化,但是,如果它包含了main方法的话是可以调用的。

9.什么是值传递和引用传递?

对象被值传递,意味着传递了一个对象的副本,就算改变了对象的副本,也不会影响源对象的值。

对象被引用传递,意味着传递的并不是实际的对象,而是对象的引用指向同一块内存地址,方法执行中对引用的操作将会影响到实际对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值