1. 对象与对象引用的区别是什么? 请举例说明

public class Demo{
//默认构造方法
public Demo{}
}
Demo demo=new Demo();

这条语句,包括四个动作:
1)右边的“new Demo”,是以Demo类为模板,在堆空间里创建一个Demo对象。
2)末尾的()意味着,在对象创建后,立即调用Demo类的构造函数,对刚生成的对象进行初始化。
3)左边的“Demo demo”创建了一个Demo类引用变量,它存放在栈空间中。也就是用来指向Demo对象的对象引用。
4)“=”操作符使对象引用指向刚创建的那个Demo对象。
这条语句也可以写成:

Demo demo;//创建对象引用
demo=/*将对象引用指向对象*/new Demo();//创建对象

demo java 发布 java的demo怎么用_demo java 发布

2. 对象作为参数传递的特点是什么?请举例说明

对象是引用传递,当对象作为参数传递时,传递的是对象的地址

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);  
   }
}

3. 对象初始化顺序是怎样的?请举例说明

  1. 系统会对数据成员进行默认初始化
  2. 执行数据成员定义处的初始化语句
  3. 调用构造方法为数据成员指定初值
class IntClass{
	int value; //自动初始化,默认值为0
	//int value = 5; //在定义时指定初值

	public IntClass(){}
	
	//定义构造方法将属性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 = new IntClass();
		System.out.println(a.value);
		a = getInstance();
		System.out.println(a.value);
	}
}

4. 类的static字段与非static字段的区别是什么?什么情况应该使用static修饰符?请举例说明

  • 用static修饰符修饰的数据成员是不属于任何一个类的具体对象,而是属于类的静态数据成员。
  • 它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此,一个类的任何对象访问它时,存取到的都是相同的数值。
  • 访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。

静态代码块经常用来对类中定义的属性进行初始化。

class Test {
   static int value ;
   static {  
            value = 3;
            System.out.println("value="+value); 
   }
   public static void main(String[] args){   }
}

5. Java中final修饰符都有什么作用?请举例说明

  • final修饰属性,则属性为常量;
final int NUM = 20; 
       NUM = 30; // 编译错误
  • final修饰方法,则该方法在子类当中不能被覆盖,可防止任何继承类修改此方法,保证了程序的安全性和正确性。
class Parent {
     public final void method1(){}//这个方法不能被子类覆盖    
} 
class Child extends Parent { 
     public final void method1(){…}//编译错误
}
  • final修饰类,则该类不能被继承
class Parent {
}
final class Person extends Parent{
} //可以继承Parent类        
class Child extends Person{
} //编译报错,不能继承Person类

6. Java中float[10] arr; 语句正确么?为什么?

不正确,声明时不可在方括号内指定数组大小

7. Java数组元素类型为基本数据类型和引用类型时,有什么不同?请举例说明

  • 数组元素为基本数据类型的情形
    例如:
    int[] arr = new int[10]; //此时分配了数组空间,每个单元初始化为默认值0 产生一个有10个单元,类型为int的数组对象,所有单元的初值为0
  • 数组元素为引用类型
    例如:
    String[] example = new String[10]; //对象引用数组 产生一个具有10个单元的数组对象,每个单元存放的是1个String对象的引用,所有单元的初值为null,此时并未创建具体的String对象
    为数组对象引用赋值后,才能使用数组元素,否则抛出NullPointerException异常
    例如:
    example[0] = new String(“ab”); //创建String对象,赋值给example[0], 此时example的第一个元素指向String对象,从而可以操纵String对象