Java基础学习笔记(二)

6.什么是字节码?采用字节码的最大好处是什么?

在回答这个问题前,首先需要搞明白什么是编译程序和解释程序。编译程序是整体编译通过,然后一次执行;解释程序在执行程序时逐条解释成机器语言给计算机来执行。编译程序虽然在运行时直接读取机器码(二进制文件或汇编),但已经生成的机器码不能改动,意味着在其他机器上不一定能顺利执行。解释程序解决了这个问题,但是性能十分低。于是java语言的独特性就表现出来了,它在机器和程序之间加入了一层虚拟的机器。这台机器对编译程序提供统一的接口。编译程序只需要生成虚拟机能够理解的代码,然后再由解释器来将虚拟机代码翻译成特定系统的机器码执行。其中供虚拟机理解的代码就叫做字节码,即扩展名为class的文件。

那么采用字节码的好处是什么呢?结合上文中编译程序和解释程序的理解,可以知道每一种平台的解释器是不同的,但是实现的JVM是相同的。java源程序只需要先编译成字节码,再由JVM将每一条要执行的字节码送给解释器,解释器再将其翻译成特定机器对应的机器码,最后在特定的机器上运行。这个过程也同时解释了为什么称java解释与编译并存的特点。

同时也在保留了解释型语言平台无关特点的同时,解决了其执行效率低的问题。(字节码不专门对应一种机器,所以只需要一次编译就可以到处运行了)

7.Java和C++的区别

  • 都面向对象,支持封装、多态和继承
  • Java无法通过指针直接访问内存,程序内存更安全
  • Java无需程序员手动释放无用内存(有兴趣可以了解下java自动内存管理机制)

Java类只能单继承,C++支持多重继承(但java接口可以多实现)

8.关于构造方法Constructor

构造方法的特性

  • 名字与类名相同
  • 没有返回值,也不能用void声明
  • 生成类的对象时自动调用

一个类的构造方法的作用是什么?若一个类没有声明构造方法,该程序能正确执行吗?为什么?

  • 主要作用是完成对类对象的初始化工作。可以执行。因为一个类即使没有声明构造方法也会有默认的不带参数的构造方法。

构造器Constructor是否可被override

  • 构造方法和私有属性无法被子类继承,所以构造方法无法overwrite,但是可以overload,也就是说一个类可以有多个构造方法。

 在Java中定义一个不做事且没有参数的构造方法的作用

  • 虽然无法被继承,但Java程序在执行子类的构造方法前如果没有super()调用父类特定构造方法,也会默认调用父类中无参数构造方法。所以如果父类中只定义了有参数构造方法,又不用super()调用,编译时会报错,报错原因为在父类中找不到可供执行的无参数构造方法,解决办法就是加一个什么也不做的无参构造方法。

在调用子类构造方法之前会先调用父类没有参数的构造方法,其目的是?

  • 帮助子类完成初始化

9.Java应用程序与小程序

  • 应用程序(application)从main()方法启动。小程序(applet)无main(),调用init()或run()在浏览器页面运行。
  • 应用程序中的主类就是包含main()的类,小程序中的主类是继承自系统类JApplet或Applet的子类。application中的主类可以不是public,但applet中的主类必须是public。

10.字符型常量和字符串常量的区别

  • 形式上: 字符常量是单引号引起的一个字符 字符串常量是双引号引起的若干个字符

  • 含义上: 字符常量相当于一个整形值(ASCII值),可以参加表达式运算 字符串常量代表一个地址值(该字符串在内存中存放位置)

  • 占内存大小上: 字符常量只占一个字节 字符串常量占若干个字节(至少一个字符结束标志)

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值