`

Java有趣的自己调用自己

 
阅读更多
class Test2
{
    private Test2 a;
    //private static Test2 a=new Test2();
    public static void main(String[] args)
   {
        Test2 t = new Test2(); 
    }
 public Test2 getA() {
  return a;
 }
 public void setA(Test2 a) {
  this.a = a;
 }

}

  第一种情况,自己调用自己,并迭代;但没有new出新对象,正常

class Test3
{
    private Test3 a=new Test3();
    //private static Test3 a=new Test3();
    public static void main(String[] args)
   {
        Test3 t = new Test3(); 
    }
 public Test3 getA() {
  return a;
 }
 public void setA(Test3 a) {
  this.a = a;
 }

} 

 第而种情况,自己调用自己,并迭代,生成新的对象;
结果 Exception in thread "main" java.lang.StackOverflowError;

class Test4
{
    private static Test4 a=new Test4();
    public static void main(String[] args)
   {
        Test4 t = new Test4();
        System.out.println(t.getA());
        System.out.println(t.getA().getA());
        System.out.println(t.getA().getA().getA());
    }
	public Test4 getA() {
		return a;
	}
	public void setA(Test4 a) {
		this.a = a;
	}

} 

 

第三种情况,没有报错,因为生成了静态对象,结果

com.b5map.Test4@6084fa6a
com.b5map.Test4@6084fa6a
com.b5map.Test4@6084fa6a

 

总结:static关键字,只保留自己唯独一份的变量;而且对自身的引用始终是自己;

 

 

 

2
5
分享到:
评论
1 楼 jlcon 2016-03-29  
不错,有意思

相关推荐

    java中调用python的必备jar包

    在Java中想要调用python程序,可以加入python的依赖包。 Jython是一种完整的语言,而不是一个Java翻译器或仅仅是一个Python编译器,它是一个Python语言在Java中的完全实现。Jython也有很多从CPython中继承的模块库。...

    java Swing 中调用摄像头拍照源码(有说明)

    其中一个有趣的应用场景是利用Swing调用系统的摄像头进行拍照。以下是对标题“java Swing 中调用摄像头拍照源码(有说明)”和描述的详细解释,以及相关知识点的深入探讨。 1. **Swing简介**: Swing是Java的GUI库...

    Java有趣代码

    在Java编程世界里,"Java有趣代码"是一个充满创意和娱乐性的编程实践,旨在通过代码创造出五颜六色的星星效果。这样的项目不仅能够提升开发者的技术能力,还能够带来编程的乐趣,激发对计算机图形学的兴趣。下面我们...

    Java实现vimJava实现的vimdemo

    然而,"Java实现的vimdemo"这个标题暗示了一个有趣的项目,即用Java语言重新实现Vim的一些核心功能或者创建一个类似的文本编辑器。下面将详细介绍这个项目可能涉及的知识点以及相关的编程技术。 1. **Java基础**:...

    关于java的一个有趣的问题

    首先,我们来看看标题中提到的有趣问题:`String str=new String("abc");` 这行代码会创建几个String对象。答案是两个。`"abc"`在Java中是一个字面量,它在运行时会被自动放入字符串池。`new String("abc")`则会创建...

    一个轮询的java案例

    标题中的“一个轮询的Java案例”提示我们这个话题与编程中的轮询机制有关,而描述则提供了一个有趣的比喻,用以解释轮询的过程。在这个比喻中,20个人代表了程序中的多个参与者,3包降落伞相当于有限的资源,每数到...

    sas连接java

    使用 Java 连接 SAS 可以实现许多有趣的应用场景,如数据分析、数据挖掘、报表生成等。下面我们将详细介绍如何使用 Java 连接 SAS。 SAS Connect Driver for Java SAS Connect Driver for Java 是 SAS 官方提供的...

    java编写简单有趣的猜数字游戏

    ### Java编写简单有趣的猜数字游戏 #### 背景与目标 猜数字游戏是一种非常受欢迎的益智游戏,尤其适合编程新手练习逻辑思维与编程技巧。本文将详细介绍如何使用Java语言来开发这样一个游戏,帮助读者理解游戏的...

    java两条有趣的题目

    标题中的“java两条有趣的题目”可能指的是两个具有挑战性的编程问题,旨在测试或提升Java程序员的基础知识和解决问题的能力。描述中提到这些题目“很详细”且“很有意思”,暗示它们可能涉及到一些深入的Java概念,...

    java webservice flash在domino中的使用

    Java Web服务(Webservice)与Flash技术在IBM Lotus Domino环境中的整合是一个复杂而有趣的主题,它涉及了多种技术的交互。让我们深入探讨一下这个话题。 首先,Java Web服务是一种通过HTTP协议提供和消费的标准化...

    java开源包1

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java面试常考的题和一些有趣的java谜题

    1. **Java基础语法**:Java的基础包括变量、数据类型、运算符、流程控制(如if-else、switch-case、for、while、do-while)以及方法的定义和调用。理解封装、继承和多态三大面向对象特性是核心。 2. **内存管理**:...

    Java谜题,java中的有趣的解谜

    6. **反射**:Java反射API允许在运行时检查类、接口、字段和方法的信息,甚至动态调用方法。但滥用反射可能破坏封装性,降低性能,增加代码复杂性。 7. **集合框架**:Java集合框架中的List、Set、Map各有特性,...

    java使用OpenCV从视频文件中获取帧

    Java是最流行的编程语言之一,使用Java和OpenCV可以实现许多有趣的图像和视频处理应用。 在本文中,我们将使用Java和OpenCV从视频文件中获取帧。首先,我们需要安装OpenCV和FFmpeg,下载javacv包。然后,我们可以...

    一言随机语录调用代码Hitokoto

    一言网是一个集合了各种经典、有趣、富有深意的句子的平台,它提供了API接口,使得开发者可以通过编程的方式调用这些“一言”来丰富自己的应用或网站内容。在描述中提到的效果,“成熟的人眼里满是前途,稚嫩的人...

    通过Java字节码发现有趣的内幕之初始化篇(下)Java开

    而通过阅读《通过Java字节码发现有趣的内幕之初始化篇(下)》这份资料,开发者可以进一步巩固这些知识,提升自己的Java开发技能。不过,值得注意的是,这里提到的"赚钱项目"并不明确,可能与本文的主题不直接相关,...

    预处理(JAVA实现C语言预处理程序).zip

    不过,这个项目提供了一个有趣的交叉点,使得开发者可以在Java环境中研究和实现C语言的特性。 总的来说,这个"预处理(JAVA实现C语言预处理程序)"项目为学习编译原理的人员提供了一个实用的工具,帮助他们理解和...

    java解惑(罗列了95个容易让你迷惑的java知识点)

    10. **反射**:Java反射机制允许程序在运行时检查类的信息,如字段、方法、构造器等,并能在运行时动态创建对象和调用方法。 11. **枚举**:枚举是一种特殊的类,用于定义一组预定义的常量,具有类型安全和防止硬...

    java开源包6

    brap(Java远程调用框架 BRAP) 一个Java远程调用框架,它将原生Java对象序列化压缩装入HTTP中。它是 Spring HttpInvoker的一个轻量级选择,特别适合于当你不想在客户端程序中使用Spring框架。 API访问授权的开放标准...

    java 讲义(ppt)

    栈遵循“后进先出”(LIFO)原则,常用于表达式求值、函数调用等场景;队列遵循“先进先出”(FIFO)原则,常见于任务调度和数据缓冲。这两种数据结构是理解和解决许多算法问题的关键。 "第5章 数组和广义表"进一步扩展...

Global site tag (gtag.js) - Google Analytics