1-4章课后题
第四章日期10.12
1.名词解释:构造方法,抽象
构造方法是一个与类名相同的类方法。每当使用new关键字创建一个对象,为新建对象开辟了内存空间之后,Java系统将西东调用构造方法初始化这个新建对象。
抽象(abstraction)是从被研究对象中舍弃个别的、非本质的、或与研究主旨无关的次要特征,而抽取与研究有关的共性内容加以考察,形成对研究问题正确的简明扼要的认识。
对象位于内存的栈空间
声名能引用对象的实质是将新创建的类(FighterPlane)的对象的地址赋给对象引用(fp),从此引用与该对象关联,通过引用即可操纵该对象
基本数据类型作为参数在方法中的传递是值传递
对象是引用传递,当对象作为参数传递时,传递的是对象的地址。
清理工作
当垃圾回收发生时,finalize() 方法被调用(不保证一定会发生)
垃圾回收不一定会发生
对象没有任何引用时成为垃圾
Java虚拟机进行垃圾回收,清理所有的垃圾对象,即释放对象占用的所有内存
?如何证明一个对象被释放了
final修饰类属性,则该属性为常量;如果修饰方法,则方法成为最终方法,在子类当中不能被覆盖;修饰类,则该类不能被继承。
属性和方法特点
用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。
用static修饰符修饰的方法称为静态方法,它属于类方法,不属于任何对象。有如下特点:
static方法是雷发那个发,但可以被所有对象所访问。
static方法内部的代码只能访问类中的static属性或方法,不能访问类中的非static属性或方法;但非static方法(对象方法)可以访问static属性或方法。
main方法是特殊的静态方法。
?java虚拟机规定不需要后缀名
BD
?E错在地址吗?
补充
对象与对象引用的区别是什么? 请举例说明
- 创建对象: new FighterPlane(); (分配在堆上)
- 声明一个对象引用: FighterPlane fp ; (分配在栈上)
- 初始化对象引用: fp = new FighterPlane();
对象作为参数传递的特点是什么?请举例说明
基本数据类型作为参数在方法中的传递是值传递
对象是引用传递,当对象作为参数传递时,传递的是对象的地址。
课本例4.4
class IntClass {
int value;
}
public class RunIntClass {
public static void modifyValue(IntClass s, int val){
s.value = val;
}
public static void main(String[] args) {
IntClass a = new IntClass();
modifyValue(a,8);
System.out.println(a.value);
}
}
对象初始化顺序是怎样的?请举例说明
1.系统会对数据成员进行默认初始化
2.执行数据成员定义处的初始化语句
3.调用构造方法为数据成员指定初值
类的static字段与非static字段的区别是什么?什么情况应该使用static修饰符?请举例说明
非static修饰符修饰的数据成员属于一个类的具体对象,被保存在某个对象的内存区中。
static修饰符修饰的数据成员属于类的静态数据成员,被保存在类的内存区的公共存储单元中。
所以说在属性需要被类、多个对象引用共享访问的时候,需要用static修饰。
课本例4.8
class IntClass
{
int value;
//定义构造方法将属性value初始化,注构造方法没有返回类型。
public IntClass(int val){
value = val;
}
}
public class IntClassConstructor
{
public static IntClass getInstance()
{
//调用构造方法,从而省略了s.value代码
IntClass s = new IntClass (8);
//s.value=8;
return s;
}
public static void main(String args[])
{
IntClass a = getInstance();
System.out.println(a.value);
}
}
Java中final修饰符都有什么作用?请举例说明
final修饰类属性,则该属性为常量;如果修饰方法,则方法成为最终方法,在子类当中不能被覆盖。
例1
final int NUM = 20;
NUM = 30; // 编译错误
例2
class Parent {
public final void method1(){}//这个方法不能被子类覆盖
}
class Child extends Parent {
public final void method1(){…}//编译错误
}
例3
class Parent {
}
final class Person extends Parent{
} //可以继承Parent类
class Child extends Person{
} //编译报错,不能继承Person类
Java中float[10] arr; 语句正确么?为什么?
不正确。float中的[]不应该给出具体数字,语句只是声明了arr是一个float型的数组,并未给其分配空间。
Java数组元素类型为基本数据类型和引用类型时,有什么不同?请举例说明
数组元素为基本数据类型:
例: int[] arr = new int[10]; //此时分配了数组空间,每个单元初始化为默认值0
产生一个有10个单元,类型为int的数组对象,所有单元的初始值为0;
数组元素为引用类型:
例:String[]example = new String[10]; //对象引用数组
产生一个具有10个单元的数组对象,每个单元存放的是一个String对象的引用,所有单元的初值为null,此时并未创建具体的String对象。
第二章日期9.25
课本p33 1-5
1
D
2
bite,short,int,char
3
C
4
float小数点后面要加f,不然是double类型,会出错
float s=2.3f
5
B
问答题
-
Java包含哪些数据类型?请举例说明
1)基本数据类型(primitive type)包括:
整数类型:byte(8位), short(16位), int (32位) , long(64位)
浮点类型:float,double
字符类型:char (16位,使用Unicode字符集)
布尔类型:boolean (C++ 的布尔类型是bool)
2)引用类型(reference type)包括:
class(类)
interface(接口)
数组 -
Java基本数据类型转换包含哪两类?请举例说明
1)自动类型转换规则
byte、short、char类型被提升到int类型
整型,实型,字符型数据可以混合运算。运算中,不同类型的数据先转化为同一类型,然后进行运算,转换从低级到高级 。
2)强制类型转换
高级数据要转换成低级数据,需用到强制类型转换 -
为什么需要包装类?
实现不同数据类型的转化 (通过包装类的静态方法)
获取相应数据类型的范围信息 (通过包装类的静态属性)
基本数据类型不是对象,在一些场合不能直接使用,需要转化为相应的包装类对象才能继续使用。 -
int与Integer有什么区别,它们之间的相互转化是怎样的?
intrger是普通数据类型int对应的包装类
相互转化:
1)基本数据类型转化为包装类对象通过构造方法来完成。Integer vari = new Integer(5)
2)从包装类对象哪里得到其代表的基本数据值需要调用该对象的相应方法。1)中的vari可以通过调用intValue()方法得到一个int类型的值 -
逻辑运算符&和&&的区别是什么?逻辑运算符&与位运算符&的区别是什么?请分别举例说明
x=1,y=1
“&”在执行操作时,运算符左右两边的表达式首先被运算执行,再对两表达式的结果进行与、或运算。(x+=1)==1&(y+=1)==2运行后x=2,y=2
“&&”执行操作时,如果从左边的表达式中得到操作数能确定运算结果,则不再对右边的表达式进行运算。(x+=1)==1&&(y+=1)==2运行后x=2,y=1
x&y
&为逻辑运算符时,x,y都为true时,结果为true
&为位运算符,x,y按位进行与操作
x=10101,y=11100
x&y=10100
- Java语言中可以采用什么语句跳出多重循环?请举例说明
通过
条件表达式为假
break 跳出本层循环
break lab 跳出多重循环的外层循环
continue lab 可以跳出外层的本次循环,继续外层下一次循环
第一章日期:9.18
-
谈谈你过去学习编程语言的方法、经验和教训
听课看书+练习
最初学c++的时候没有软件,只能在寝室先把大概打出来,然后去机房验证,有很多错误,改起来很费时间,然后就不怎么喜欢语言类课程了;然后概念还很多,经常顾不上概念先把代码改好就到了下一节内容了。还好后面几个语言学的时候可以下软件在寝室练习。 -
Java语言都有哪些特点?
简单,面向对象,平台无关性和可移植性,稳定和安全,多线程并且是动态的,高性能,分布性 -
Java跨平台实现的原理是什么?
.java文件会被翻译成字节码文件——.class。.class文件与具体操作系统的机器指令无关,由java虚拟机完成解释执行工作。 -
JDK、JRE、JVM有哪些区别?
JDK:Java Development Kit Java开发工具包
JRE:Java runtime environment Java运行环境
JVM:Java Virtual Machine Java虚拟机
P9
T4
#Application程序
public class HellowWorld{
public static void main(String args[]){
System.out.println(“My first Java!”);
}
}
#Applet程序
import java.awt. * ;
import java.applet. * ;
public class HellowWorldApplet extends Applet{
public void init(){
}
public void paint(Graphics g){
g.drawString(“My first Java!”,25,25);
}
}
T5
import java.awt.;
import java.applet.;
public class MfJ extends Applet{
public static void main(String args[]){
System.out.println(“My first Java!”);
}
public void init(){
}
public void paint(Graphics g){
g.drawString(“My first Java!”,25,25);
}
}