Java对象和对象引用

1.对象和对象引用有什么区别,请举例说明
答:根据类模板产生一个对象,并在计算机内存中为此开辟一个新的空间,分配在堆上,new FightPlane();语句就是产生一个对象。FightPlane fp;声明一个对象引用,相当与一个遥控器,分配在栈上。fp = new FightPlane();初始化一个对象引用。fp.FightPlane();引用调用方法。对象和对象的声明不是一个概念,有声明时可以没有对象。当声明被赋予特定对象后,声明就被引用取代。可以这样

FightPlane fp=new FightPlane()

2.对象作为参数传递有什么特点是什么?请举例说明
答:方法中的参数可以为基本数据类型、也可以为对象,它们有不同的特点。基本数据类型作为参数在方法中的传递是值传递。对象是引用传递当对象作为参数传递时,传递的是对象的地址。也就是说,对象只有一个,例4.4和例4.5从不同角度体现了这一特点。

class IntClass{
      int value;
}
public class RunIntClass{
public static void modifyValue( IntClass int val){
        s,value = val;
}
public static void main(String args[]){
     IntClass a = new IntClass();
     modifyvalue(a, 8);
    System. out. pr intln(a. value);
   }
 }

程序说明
上面的程序在main 方法中产生对象a.在modifyValue 中对a引用的对象进行属性赋值,之后又在main方法中显示a对象的属性。
当程序执行到“IntClass a = new IntClass()”时,产生了一个IntClass 的对象,被a所引用,a在main方法栈中,对象放到堆中。当程序执行到“System. out. println(a. value)”时,此时在main方法中,
通过a操纵堆中的对象,显示其属性值。整个过程体现了对象作为参数传递时的引用特点。

3.对象初始化顺序是怎样的?请举例说明
答:1.系统会对数据成员进行默认初始化
2.执行数据成员定义处的初始化语句
3.调用构造方法为数据成员指定初值

class IntClass {
     int value; // 自动初始化,默认值为θ
     //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 . print1n(a. value);
               a = getInstance( );
               System. out . print1n(a.value);
        }
}

4.类的static字 段与非static字段的区别是什么?什么情况应该使用static修饰符?请举例说明
答:用static修饰符修饰的数据成员是不属于任何一-个类的具体对象,而是属于类的静态数据成员。它被保存在类的内存区的公共存储单元中,而不是保存在某个对象的内存区中。因此, - -个类的任何对象访问它时,存取到的都是相同的数值。
访问方式为通过类名加点操作符来访问,也可通过对象引用来访问。《Java开发手册》强制使用类名(而不是该类的对象引用)访问静态方法和静态变量。
static修饰的方法有如下特点:
static方法是类方法,但可以被所有对象所访问,引用这个方法时,可以使用对象名做前缀,也可以使用类名做前缀。《Java开发手册》强制使用类名(而不是该类的对象引用)访问静态方法和静态变量。
static方法内部的代码,只能访问类中的static属性或方法,不能直接访问类中的非static属性或方法(因为那是对象方法) .,但非static方法(对象方法)可以访问static数 据成员。main方法是特殊的静态方法,是Application程序入口点,
必须写成public static void main(String [] args)的形式。

  1. Java中final修 饰符都有什么作用?请举例说明
    答:1.final修饰属性, 则属性为常量;
    例: final int NUM = 20;
    NUM=30;//编译错误
    2.如果修饰方法,则该方法在子类当中不能被覆盖(见多态一-节),可防止任何继承类修改此方法,保证了程序的安全性和正确性。例:
class Parent {
        public final void method1(){}//这个方法不能被子类覆盖
}
class Child extends Parent {
         public final void method1() {..}//编译错误
}
3.final修饰类,则该类不能被继承
例: class Parent {
      }    
      final class Person extends Parent{} 
       }//可以继承Parent类
       class Child extends Person{
     } //编译报错,不能继承Person类
  1. Java中float[10] arr;语句正确么?为什么?
    答:不正确的,声明时不能再方括号里·指定·数组的大小

  2. Java数组 元素类型为基本数据类型和引用类型时,有什么不同?请举例说明
    答:1.数组元素为基本数据类型的情形

`int[] arr = new int[10];` //此时分配了数组空间,每个单元初始化为默认值0

产生一个有10个单元,类型为int的数组对象,所有单元的初值为0
2.数组元素为引用类型

String[] example = new String[10]; //对象引用数组

产生一个具有10个单元的数组对象,每个单元存放的是1个String对象的引用,所有单元的初值为null,此时并未创建具体的String对象,为数组对象引用赋值后,才能使用数组元素,否则抛出NullPointerException异常
例如:

example[0] = new String(“ab”); //创建String对象,赋值给example[0], 此时example的第一个元素指向String对象,从而可以操纵String对象
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值