Q:java中参数传值的机制?
A:方法中参数变量的值是调用者指定的值的拷贝
Q:怎样理解将两个类型相同的数据互相赋值的情况?
A:类型相同两个数据,互相赋值就是使得他们的引用相同。类型相同的两个对象/数据一旦引用相同,就有一样的实体(变量)
Q:怎样创建一个对象?
A:包括两部分:
(1)声明对象 :
学生 哈拉泽空:
此时,哈拉泽空只是个空对象,里面什么也没有。此时不要让空对象去访问变量或方法,,否则编译通过,运行出现NullPointerException
(2)为对象分配变量(创建对象):用new运算符和构造方法
哈拉泽空 = new 学生();
此时,才可以调用哈拉泽空这个对象,才不会出现NullPointerExceprion
Q:什么叫对象的引用和实体
A:对象本身中存放着引用,自己可以操作分配个自己的变量,调用类提供的方法。分配给对象的变量称作对象的“实体”
这图说明了,两个类型相同的对象,如果二者的引用相同,那么二者就具有完全相同的“实体”
Example:
用面向对象的思想编写程序,求圆锥的体积
main方法
public class Example01 {
public static void main(String[] args) {
Circle c=new Circle();
c.SetRadius(5.0);
Circular cir=new Circular(10.0);
cir.setbottom(c);
System.out.println("底面的的半径"+c.radius);
System.out.println("圆锥的高"+cir.height);
System.out.println("地面的面积"+c.CaculateS());
System.out.println("圆锥的体积"+cir.getvolume());
c.SetRadius(7.0);
System.out.println("修改圆的半径,底面半径同样发生变化");
System.out.println(cir.getbottomRadius());
}
}
圆锥类
public class Circular {
double height;
Circle c;
Circular(double height) {
this.height=height;
}
double getvolume() {
if(c==null)
return -1;
else
return c.CaculateS()*height/3.0;
}
void setbottom(Circle c) {
this.c=c;
}
double getbottomRadius() {
return c.radius;
}
double getbottomS() {
return c.CaculateS();
}
}
圆类
public class Circle {
double radius;
void SetRadius(double radius) {
this.radius=radius;
}
double CaculateS() {
return 3.14*radius*radius;
}
}