Java学习日记

本文详细介绍了Java中对象与对象引用的区别,对象作为参数传递的特点,类的初始化顺序,static字段与非static字段的使用场景,final修饰符的作用,并通过实例解析了数组的基本概念。此外,还探讨了Java中基本类型和引用类型在数组中的不同表现。
摘要由CSDN通过智能技术生成

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

friend a=new friend()

a被称为该对象的引用

即对象包含对象引用

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

对象的参数传递是传递对象的地址

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

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

加载类:先加载父类再加载子类

创建对象要先加载类。java中类的加载顺序是先加载父类再加载子类。而静态成员变量、静态成员函数、静态代码块等静态资源都是类的加载时就完成的。
所以先执行父类静态代码块再执行子类代码块
初始化:先初始化父类再初始化子类

先执行父类构造代码块、父类构造函数
再执行子类构造代码块、子类构造函数
 

public Parent() {
	super();
	System.out.println("执行父类构造方法");
}

static{
	System.out.println("执行父类静态代码块");
}

{
	System.out.println("执行父类的非静态代码块");
}
public Children() {
	super();
	System.out.println("执行子类构造方法");
}

static{
	System.out.println("执行子类静态代码块");
}

{
	System.out.println("执行子类的非静态代码块");
}

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

static修饰符修饰的域变量不属于任何一个类的具体对象。它被保存在类的内存区的公共储存单元中,而不是保存在某个对象的内存区域内,因此,一个类的任何对象访问它的时候得到的数值都是相同的,方位的方式为“类名.域名”,也可以通过对象引用,来访问。
下面总结:
1.static方法是类的方法,但可以被所有的对象访问。调用这个方法是,可采用“对象引用.方法名”,也可以采用“类名.方法名”。
2.static方法内部的代码,只能访问类中的static属性或方法(因为他们属于对象);但非static方法(对象方法)可以访问static属性或方法。
3.main方法是特殊的静态方法。
 

import java .awt.;
import java.applet.;
class pc
{
     static double ad =8;
}
public class RunPc extends Applet
{
       public void paint(Graphic g) 
       {
              Pc m =new Pc();
              Pc m1=new Pc();
              m.ad=0.1;
              g.drawString(“m1=”+m1.ad,20,50);
              g.drawString(“Pc=”+Pc.ad,20,70);
              g.drawString(“m=”+m.ad,20,90);
       }
}

当对象中出现共享数据时使用static修饰

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

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

  1. 它可以修饰类,可以修饰方法,可以修饰变量
  2. final修饰的类是一个最终类,不可以被继承。
  3. final修饰的方法不可以被覆盖。
  4. final修饰的变量的是一个常量,只能被赋值一次。这个赋值指的是显示初始化赋值。

 

final double PI = 3.14;

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

不正确

因为系统无法识别该语句给arr数组分配内存空间。

该改为:

float[] arr=new float[10];

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

基本数据类型在被创建时,在栈上给其划分一块内存,将数值直接存储在栈上;

引用数据类型在被创建时,首先要在栈上给其引用(句柄)分配一块内存,而对象的具体信息都存储在堆内存上,然后由栈上面的引用指向堆中对象的地址。

如:

有一个类Person,有属性name,age,带有参的构造方法,

Person p = new Person("Tom",20);

在内存中的具体创建过程是:

1.首先在栈内存中位其p分配一块空间;

2.在堆内存中为Person对象分配一块空间,并为其三个属性设初值"",0;

3.根据类Person中对属性的定义,为该对象的两个属性进行赋值操作;

4.调用构造方法,为两个属性赋值为"Tom",20;(注意这个时候p与Person对象之间还没有建立联系);

5.将Person对象在堆内存中的地址,赋值给栈中的p;通过句柄p可以找到堆中对象的具体信息。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值