java第三次论述题

本文深入探讨了Java中的对象和对象引用,解释了它们之间的区别,以及与C++指针的差异。重点介绍了Java中对象作为参数传递的特性,详细梳理了Java对象初始化顺序和静态字段与非静态字段的区别。此外,还讨论了final修饰符在数据、方法和类上的作用,并阐述了Java数组的声明和使用,以及基本类型和引用类型数组的区别。最后,提到了Java中声明和初始化数组的注意事项。
摘要由CSDN通过智能技术生成

Java对象和Java对象引用
Java对象:在Java中万物皆对象,对象是客观存在的事物,任何客观存在的事物在Java中都可以作为对象。

Java对象引用:在Java中,实际上并没有对象变量这种东西,只有对象到对象的变量。对象的引用变量保存的是存取对象的方法。它并不是对象的容器,而是类似指向对象的指针。或者可以说是地址。但在Java中我们不会也不知道引用变量中实际装载的是什么,它只是用来代表单一的对象。只有Java虚拟机才知道如何使用引用来取得该对象。

Java引用和C++指针的区别:
1.Java引用的地址值是字符串,指针的地址值是int类型
2.引用的类型转换,也可能不成功,抛异,或者IDE就不能通过。C++指针只是个内存地址,指向那里,对程序来说还都是一个地址,但可能所指的地址不是程序想要的。
3.Java对象引用并不能被直接操作,指针p++,p–,这样的操作在Java中是不可能见到的,同样Java也不能获取引用指向的地址。

对象作为参数传递的特点

基本数据类型作为参数传递是值传递,而对象是引用传递

public class ValuePass {
  private static int a;
  public static void main(String [] args) {
      modify(a); 
      System.out.println(a);
  }
  public static void modify(int a) {
       a++; 
  }
}


本程序的输出为0,因为a++是对形式参数进行自增,而不是类属性a进行自增

Java对象初始化顺序

1. 父类静态成员变量

2. 父类静态代码块

3. 子类静态成员变量

4. 子类静态代码块

5. 父类成员变量

6. 父类非静态代码块

7. 父类构造器

8. 子类成员变量

9. 子类非静态代码块

10. 子类构造器

类的static字段与非static字段的区别

static修饰符修饰的域变量不属于任何一个类的具体对象,被保存在类的内存区的公共存储单位中。

区别:

**1.**static方法是类的方法,但可以被所有的对象访问。

**2.**static方法内部的代码,只能访问类中的static属性或方法;但是非static方法
(即对象方法)可以访问static属性或方法。

使用场景:

当对象中出现共享数据时,就应该使用static修饰。

举例:

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


其中,static静态代码块起赋予初始值的作用

Java中final修饰符的作用

1.修饰数据

final修饰的数据是常量

举例:

public class Student{
  int sex;
  public final static int MALE = 0;
  public final static int FEMALE = 1;
}


2.修饰方法

final修饰的方法是最终方法,不能被覆盖(即不能在子类内部重写该方法)

3.修饰类

final修饰的类称作最终类,该类不能有子类

Java中数组的声明格式

1. 类型标识符 数组名[];(合法但不推荐)
2. 类型标识符 [] 数组名;(《java开发手册》强制)

举例:

int [] arr;
String [] example;
MyClass [] mc;
//此时仅声明了引用变量,并未产生数组对象


​ 注意声明时不可在方括号内指定数组大小
​ 如float [10] arr; 是错误的

Java数组元素类型为基本类型和引用类型时的不同

1.基本类型:

举例:

int [] arr = new int [10];
//在堆上为数组对象分配10个整形元素空间,每个元素初始化默认值为0;
1
2
2.引用类型:

举例:

String [] example = new String [10];//对象引用数组
//产生一个具有10个单元的数组对象,每个单元存放的是1个String对象的引用,所有单元的初始值为默认值null,此时并未创建具体的String对象

//程序验证:
for (String x: example)
  System.out.println(x);//输出结果为10个null
//抛出NullPointerException异常
  System.out.println(example[0].length());

//修改:example[0] = new String("ab");//创建String对象,赋值给example[0], 此时example的第一个元素指向String对象,从而可以操纵String对象

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
1、JDBC(Java Database Connectivity)提供连接各种关系数据库的统一接口。   2、EJB(Enterprise JavaBeans)使得开发者方便地创建、部署和管理跨平台的基于组件的企业应用。   3、Java RMI(Java Remote Method Invocation)用来开发分布式Java应用程序。一个Java对象的方法能被远程Java虚拟机调用。这样,远程方法激活可以发生在对等的两端,也可以发生在客户端和服务器之间,只要双方的应用程序都是用Java写的。   4、Java IDL(Java Interface Definition Language) 提供与CORBA(Common Object Request Broker Architecture)的无缝的互操作性。这使得Java能集成异构的商务信息资源。   5、JNDI(Java Naming and Directory Interface)提供从Java平台到的统一的无缝的连接。这个接口屏蔽了企业网络所使用的各种命名和目录服务。   6、JMAPI(Java Management API)为异构网络上系统、网络和服务管理的开发提供一整套丰富的对象和方法。   7、JMS(Java Message Service)提供企业消息服务,如可靠的消息队列、发布和订阅通信、以及有关推拉(Push/Pull)技术的各个方面。   8、JTS(Java transaction Service)提供存取事务处理资源的开放标准,这些事务处理资源包括事务处理应用程序、事务处理管理及监控。   在Java技术中,值得关注的还有JavaBeans,它是一个开放的标准的组件体系结构,它独立于平台,但使用Java语言。一个JavaBean是一个满足JavaBeans规范的Java类,通常定义了一个现实世界的事物或概念。一个JavaBean的主要特征包括属性、方法和事件。通常,在一个支持JavaBeans规范的开发环境(如Sun Java Studio 和IBM VisualAge for Java)中,可以可视地操作JavaBean,也可以使用JavaBean构造出新的JavaBean。JavaBean的优势还在于Java带来的可移植性。现在,EJB (Enterprise JavaBeans) 将JavaBean概念扩展到Java服务端组件体系结构,这个模型支持多层的分布式对象应用。除了JavaBeans,典型的组件体系结构还有DCOM和CORBA,关于这些组件体系结构的深入讨论超出了本书的范围。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值