牛客网java刷题笔记 2019-1-4
1.java中可以用类中构造器调用其他类构造器(这个和C++中构造函数很类似)用于初始化程序变量值,
构造器和方法的区别:
- 功能和作用的不同
构造器是为了创建一个类的实例。这个过程也可以在创建一个对象的时候用到:Demo d = new Demo();
相反,方法的作用是为了执行java代码。 - 修饰符,返回值和命名的不同
构造器和方法在下面三个方便的区别:修饰符,返回值,命名。和方法一样,构造器可以有任何访问的修饰: public, protected, private或者没有修饰(通常被package 和 friendly调用). 不同于方法的是,构造器不能有以下非访问性质的修饰: abstract, final, native, static, 或者 synchronized。
返回类型也是非常重要的。方法能返回任何类型的值或者无返回值(void),构造器没有返回值,也不需要void。 - 两者的命名不同。构造器使用和类相同的名字,而方法则不同。按照习惯,方法通常用小写字母开始,而构造器通常用大写字母开始。构造器通常是一个名词,因为它和类名相同;而方法通常更接近动词,因为它说明一个操作。
//this用法
public class Platypus {
String name;
Platypus(String input) {
name = input;
}
Platypus() {
this("John/Mary Doe");
}
public static void main(String args[]) {
Platypus p1 = new Platypus("digger");
Platypus p2 = new Platypus();
}
}
在上面的代码中,有2个不同参数列表的构造器。第一个构造器,给类的成员name赋值,第二个构造器,调用第一个构造器,给成员变量name一个初始值 “John/Mary Doe”.
//super用法
class Mammal {
void getBirthInfo() {
System.out.println("born alive.");
}
}
class Platypus extends Mammal {
void getBirthInfo() {
System.out.println("hatch from eggs");
System.out.print("a mammal normally is ");
super.getBirthInfo();
}
}
在上面的例子中,使用super.getBirthInfo()去调用超类Mammal中被重载的方法。
构造器使用super去调用超类中的构造器。而且这行代码必须放在第一行,否则编译将出错。看下面的例子:
public class SuperClassDemo {
SuperClassDemo() {}
}
class Child extends SuperClassDemo {
Child() {
super();
}
}
在上面这个没有什么实际意义的例子中,构造器 Child()包含了 super,它的作用就是将超类中的构造器SuperClassDemo实例化,并加到 Child类中。
汇总区别表格如下:
主题 | 构造器 | 方法 |
---|---|---|
功能 | 建立一个类的实例 | java功能语句 |
修饰 | 不能用bstract, final, native, static, or synchronized | 能 |
返回类型 | 没有返回值,没有void | 有返回值,或者void |
命名 | 和类名相同;通常为名词,大写开头 | 通常代表一个动词的意思,小写开头 |
this | 指向同一个类中另外一个构造器,在第一行 | 指向当前类的一个实例,不能用于静态方法 |
super | 调用父类的构造器,在第一行 | 调用父类中一个重载的方法 |
继承 | 构造器不能被继承 | 方法可以被继承 |
编译器自动加入一个缺省的构造器 | 自动加入(如果没有) | 不支持 |
编译器自动加入一个缺省的调用到超类的构造器 | 自动加入(如果没有) | 不支持 |
2.java中如何放掉一个指定占据的内存空间?
程序员无法明确强制垃圾回收器运行
解析:Java 把内存划分成两种:一种是栈内存,另一种是堆内存。
在函数中定义的一些基本类型的变量和对象的引用变量都是在函数的栈内存中分配,当在一段代码块定义一个变量时,Java 就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java 会自动释放掉为该变量分配的内存空间,该内存空间可以立即被另作它用。
数组和对象在没有引用变量指向它的时候,才变为垃圾,不能再被使用,但仍然占据内存空间不放,在随后的一个不确定的时间被垃圾回收器收走(释放掉)。这也是 Java 比较占内存的原因。
3.下面哪种流可以用于字符输入
java.io.inputStreamReader
解析:inputStream是字节流输入流;而inputStreamReader是对字符流的处理,inputStreamReader将字符流处理成字节流
4.以下可用于多媒体作品集成的软件是
Powerpoint
解析:
Powerpoint:即PPT。
windows media player:微软的一款免费播放器。
ACDSee:是ACD Systems开发的一款看图工具软件,提供良好的操作界面,简单人性化的操作方式,优质的快速图形解码方式,支持丰富的图形格式,强大的图形文件管理功能等。
我形我速:(Ulead Photo Express)是友立出品的著名数码软件,可制作出色的相片与项目,供亲朋好友欣赏。“我形我速”不只是简单的图像编辑程序,它可以用最精彩的方式,展示精彩的创意,将平凡无奇的相片转换成杰出的艺术品,与亲朋好友一起分享。它可以创建多种内容:贺卡、日历、计划表、剪贴书页、屏幕保护,甚至网页。 使用者可以通过任何数码来源进行捕获,并轻松修改图像,并用它提供的不同分享选项,将您的作品分享给挚友亲朋。
5.下面描述属于java虚拟机功能的是?
- 通过 ClassLoader 寻找和装载 class 文件
- 解释字节码成为指令并执行,提供 class 文件的运行环境
- 进行运行期间垃圾回收
- 提供与硬件交互的平台