首页 > 编程语言 >《Java编程思想第四版》学习笔记17

《Java编程思想第四版》学习笔记17

时间:2023-08-20 19:31:21浏览次数:48  
标签:CrashJava Java String 17 Vector toString 第四版 public

崩溃 Java

Java 标准集合里包含了 toString()方法,所以它们能生成自己的 String 表达方式,包括它们容纳的对象。例如在 Vector 中, toString()会在 Vector 的各个元素中步进和遍历,并为每个元素调用 toString()。假定我们现在想打印出自己类的地址。看起来似乎简单地引用 this 即可(特别是 C++程序员有这样做的倾向):

//: CrashJava.java
// One way to crash Java
import java.util.*;
public class CrashJava {
public String toString() {
return "CrashJava address: " + this + "\n";
}
public static void main(String[] args) {
Vector v = new Vector();
for(int i = 0; i < 10; i++)
v.addElement(new CrashJava());
System.out.println(v);
}
} ///:~

若只是简单地创建一个 CrashJava 对象,并将其打印出来,就会得到无穷无尽的一系列违例错误。然而,假如将 CrashJava 对象置入一个 Vector,并象这里演示的那样打印 Vector,就不会出现什么错误提示,甚至连一个违例都不会出现。此时 Java 只是简单地崩溃(但至少它没有崩溃我的操作系统)。这已在 Java 1.1 中测试通过。

                                                                                                                                 P.220


我在IntelliJ IDEA 2023.1.4 (Ultimate Edition),Java版本 "18.0.2" 2022-07-19环境下测试,仍然发生栈溢出错误(StackOverflowError)。而书上说的是“假如将 CrashJava 对象置入一个 Vector,并象这里演示的那样打印 Vector,就不会出现什么错误提示,甚至连一个违例都不会出现”。

标签:CrashJava,Java,String,17,Vector,toString,第四版,public
From: https://blog.51cto.com/u_16183536/7163248

相关文章

  • Prim算法是一种用于解决最小生成树问题的贪心算法。它通过逐步选择边来构建最小生成树
    importjava.util.*;classPrimAlgorithm{privatestaticfinalintINF=Integer.MAX_VALUE;publicvoidprimMST(int[][]graph){intvertices=graph.length;int[]parent=newint[vertices];//用于存储最小生成树的父节点int......
  • mysql 8 - linux 安装后 java 调用报错 SQLException: Temporary file write failure
    完整报错Cause:java.sql.SQLException:Temporaryfilewritefailure.;uncategorizedSQLException;SQLstate[HY000];errorcode[1878];Temporaryfilewritefailure.;nestedexceptionisjava.sql.SQLException:Temporaryfilewritefailure.解决不要作用在......
  • 使用Java来开发物联网应用
    这是Hello,LithosphereTutorials系列教程中的其中一篇。感觉介绍用C/C++,用Python来开发物联网应用的文章比较多,用Java来做物联网的文章比较少。这篇文章,介绍如何使用Java技术来开发一个物联网的简单例子。我们从手机App上,遥控硬件板上的LED灯亮灯、熄灯、闪灯。我们学习如何......
  • java的常用工具类
    Java中有很多常用的工具类,这些工具类提供了各种功能和方法,可以简化开发过程并提高效率。以下是一些常用的Java工具类及其作用:1.java.lang.Math:提供了一系列数学计算相关的静态方法,如求绝对值、最大值、最小值、随机数等。2.java.util.Arrays:提供了一系列数组操作的静态方法,如......
  • 学习笔记 - Java 面向对象_中
    this关键字当形参名和属性名相同时,使用this关键字来区分,有this修饰的变量是属性,无this修饰的是形参。this可以调用的除了属性,还有方法、构造器。所以,this指的是当前对象(在方法调用时)或当前正在创建的对象(在构造器中调用时)。在构造器中,使用this(形参列表);可以调用......
  • java基础类讲解
    一、Calendar类packagecom.qf.chapter_01;importjava.util.Calendar;publicclassTestCalendar{ publicstaticvoidmain(String[]args){ //创建Calendar对象 Calendarcalendar=Calendar.getInstance();//得到当前时间 System.out.println(calendar.getTime().......
  • 《Lua程序设计第四版》 第三部分22~25章自做练习题答案
    Lua程序设计第四版第三部分编程实操自做练习题答案,带⭐为重点。22.1本章开始时定义的函数getfield,由于可以接收像math?sin或string!!!gsub这样的字段而不够严谨。请将其进行重写,使得该函数只能支持点作为名称分隔符。functiongetfield(f)ifstring.find(f,"[^%w%._]")......
  • 学习Java的第17天
    Scanner进阶使用packagecom.yue.scanner;importjava.util.Scanner;publicclassDemo04{publicstaticvoidmain(String[]args){Scannerscanner=newScanner(System.in);//**从键盘接收数据**inti=0;​floatf=0.0f;System.out.println("请输入整数:"......
  • centOs8 安装JavaEE
    (1)安装linux版本的jdk步骤:先下载linux的jdk版本:下载网站:JavaDownloads|Oracle中国利用xshell:创建一个jdk文件夹:mkdir/opt/jdk利用xftp将步骤1中下载好的jdk版本安装包上传到jdk文件夹中;解压jdk文件夹中的jdk压缩包1.先进入jdk文件:cd/opt/jdk2.在jdk文件中......
  • Java常用命令使用方法
    以下是一些常用的Java命令以及它们的使用方法:java:运行Java程序语法:java<options><class>示例:javaHelloWorldjavac:编译Java源代码语法:javac<options><sourcefiles>示例:javacHelloWorld.javajar:创建或解压JAR文件创建JAR文件:语法:jarcf<jarfile><files>示例:jarcfmyjar.......