java中对象 和 对象引用 的 区别 ! 如下表达式: A a1 = new A (); 它代表A是类,a1是 引用 ,a1不是 对象 ,new A ()才是 对象 ,a1 引用 指向new A ()这个 对象 。 在 JAVA 里,“=”不能被看成是一个赋值语句,它不是在把一个 对象 赋给另外一个 对象 ,它的执行过程实质上是将右边 对象 的地址传给了左边的 引用 ,使得左边的 引用 指向了右边的 对象 。 JAVA 表面上看起来没有指针,但它的 引用 其实质就是一个指针, 引用 里面存放的并不是 对象 ,而是该 对象 的地址,使得该 引用 指向了 对象 。
java中对象作为参数是是传递的对象的地址值,也就是说改变形参那么作为实参的对象也会改变。
public class Node {
int value;
}
public class Run{
public static void Fun(Node s,int val) {
s.value=val;
}
public static void main(String args[]) {
Node a=new Node();
Fun(a,8);
System.out.println(a.value);
}
}
.在这段代码里,我们可以看到,在Fun中我们对s所指的value赋值,在mian函数中,我们产生对象a,在Fun中对a引用的对象进行赋值,之后在main函数中显示出来。我们可以清楚的看到,对象的参数传递是传递对象的地址。
关于java对象的初始化顺序原则:父类优先于子类,静态优先于非静态,只有在第一次创建对象的时候才会初始化静态块。
用static修饰符的域变量不属于任意一个类的具体对象,而专属于类。它被保存在类的内存区的公共单元中,一个类的任何对象访问他时,存取到的都是相同的数值。
当某个属性需要被类的多个对象引用共同访问时,使用static修饰符。
1.修饰一个类,表明这个类不能被继承,也就是说如果一个类你永远不会让他被继承,就可以用final修饰。
2.修饰方法
《Java编程思想》第四版第143页是这样说的:
“使用final方法的原因有两个。第一个原因是把方法锁定,以防任何继承类的 义; 第二个原因是效率。在早期的Java实现版本中,会将final方法转为内嵌调用。但是如果方法 过于庞大,可能看不到内嵌调用带来的任何性能提升。在最近的Java版本中,不需要使用 final方法进行这些优化了。“
3.修饰变量,对于一个final修饰的变量,如果这个变量是基本数据类型,则其数值一旦初始化 之后就不能更改,如果是引用类型的变量,则在对其初始化后不能再指向另外一个对象。
首先它是不对的, 为什么呢?
要想建一个10长度的float数组首先数组声明:float[] arr; 然后:arr=new float[10];
或者直接 float [] arr=new float[10];
但是不能写成 float[10] arr; 系统无法识别该语句给arr数组分配内存空间。
基本数据类型数组储存的是基本数据。
引用数据类型数组,元素是对象,其中储存的是对象的地址值,引用数据类型数组使用规定长度的方式进行初始化时,默认值为null。
如:Student[] s=new Student[10];
s中存有数组对象的地址; 为null;