今天面试遇到两个问题:
1.java类加载问题
package test; class FatherA { static { System.out.println("父类静态块"); } { System.out.println("父类动态块1"); } { System.out.println("父类动态块3"); } { System.out.println("父类动态块2"); } public FatherA() { System.out.println("父类构造函数"); } } public class SonB extends FatherA{ static { System.out.println("子类静态块"); } { System.out.println("子类动态块"); } public SonB() { System.out.println("子类构造函数"); } /** * @param args */ public static void main(String[] args) { new SonB(); } }
输出结果:
父类静态块
子类静态块
父类动态块1
父类动态块3
父类动态块2
父类构造函数
子类动态块
子类构造函数
原因分析:类加载机制,先加载父类static块,子类static块,之后加载父类动态块、构造函数,最后加载子类动态块、构造函数
2.参数传递问题
package test; public class MethodParms { String str="abcd"; char[] cs=new char[]{'a','b','c'}; public void ex(String a,char[] b) { a="test"; b[0]='s'; } /** * @param args */ public static void main(String[] args) { MethodParms mm=new MethodParms(); mm.ex(mm.str, mm.cs); System.out.println(mm.str+":::"); System.out.println(mm.cs); } }
输出结果:
abcd:::
sbc
原因分析:由于java方法的参数传递都可以看为是值传递,都会传递一份拷贝的值(引用值,数值)给函数。这里的String、char[]传递的都是引用值,这里char[]参数通过拷贝的引用可以直接修改值,而String对象是不可变的,通过拷贝的引用不能直接修改值,所有这里未变。
其他:这里String的不可变性通过final char[] value保证,而StringBuffer和StringBuider通过AbstractStringBuilder的char[] value是可变的,具体可见源码。
相关推荐
下面将详细说明搭建Java基本开发环境的各个步骤和知识点。 首先,JDK是整个Java开发的核心,它包含了Java运行环境(Java Runtime Environment,JRE)、Java编程语言的类库以及Java虚拟机(Java Virtual Machine,...
下面我们将深入探讨这些标签所涵盖的Java基本知识点。 1. **数据类型与变量**: Java有两大类数据类型:基本类型(如int, double, boolean)和引用类型(如类、接口和数组)。变量是存储数据的容器,需要先声明其...
Java知识点整理 Java是一种广泛使用的面向对象的编程语言,它具有丰富的API(应用程序接口)和强大的功能。在Java考试中,掌握以下知识点至关重要: 1. **JAVA SE**(Java标准版)是Java的核心部分,包括基础语法...
Java 基本语法编程练习是学习 Java 语言的基础,以下是 Java 基本语法编程练习的知识点总结: 1. Java 数据类型: Java 语言中有八种基本数据类型,即 byte、short、int、long、float、double、boolean 和 char。...
"Java基本数据类型" Java 中的基本数据类型是Java语言的基础,它是每一位初学者都必须要掌握的知识点。 Java 中的基本数据类型可以分为八种:整数型、浮点型、字符型、布尔型。 1. 标识符 标识符可以简单的理解...
"JAVA基本数字图像处理"这个项目旨在通过Java语言实现一系列基本的图像操作,以帮助开发者理解图像处理的基本原理并掌握其实践技巧。下面将详细介绍这些知识点。 首先,我们要了解数字图像的基础。数字图像实质上是...
java核心知识点整理,面试很有用 Java核心知识点2.JVM JVM 是可运行 Java 代码的假想计算机 ,包括一套字节码指令集、一组寄存器、一个栈、 一个垃圾回收,堆 和 一个存储方法域。JVM 是运行在操作系统之上的,它...
Java 数组基本知识点以及使用 Java 数组是 Java 编程语言中的一种基本数据结构,它允许我们在一个变量中存储多个值。下面是 Java 数组的基本知识点和使用方法: 数组的声明和初始化 在 Java 中,可以使用以下两...
射线交叉法的基本思想是从待检测点出发,向任意方向发射一条射线(通常选择水平方向),然后计算这条射线与多边形边界的交点数量。如果交点数量为奇数,则表示该点位于多边形内部;如果是偶数,则表示该点位于多边形...
"Java基本构架java学习"这个主题涵盖了Java语言的核心概念和架构,是初学者和有经验开发者深入理解Java的关键。 首先,Java构架的基础是JVM(Java虚拟机),它是Java程序运行的平台。JVM负责将字节码(.class文件)...
根据给定的文件信息,以下是从标题、描述、标签以及部分内容中提炼出的关于Java Web基本教程的关键知识点: ### Java Web基本教程概览 #### 一、Java编程语言概述 Java是一种面向对象的编程语言,它由Sun ...
文档资料"java基本试题java基本试题.doc"的内容看似是一份包含大量Java编程基础题目的文档,但实际文本中充满了重复的、无意义的字符和词组,这些内容并不符合正常的问题或知识点描述。因此,我无法直接从这部分内容...
这份"java知识点总结思维导图(xmind)"是为帮助学习者系统性地理解和掌握Java核心技术而精心整理的资料。思维导图作为一种有效的学习工具,能够帮助我们更好地组织和记忆信息,提高学习效率。 首先,让我们从基础...
Java语言的前世今生、执行原理、以及与面向对象编程的关系是理解和掌握Java基本语法的重要知识点。 Java语言起源于名为Green的项目,该项目目的是利用C++开发嵌入式软件,控制消费性电子产品。然而,由于C++语言的...
java判断某个点是否在所画多边形或圆形内 在计算机图形学和 GIS 领域中,判断某个点是否在所画多边形或圆形内是一个常见的问题。java语言提供了多种方法来解决这个问题。本文将详细介绍java判断某个点是否在所画...
文档梳理了Java基本语法知识——环境搭建、数据类型、运算符、控制流、数组、Arrays类、字符串、类和对象、对象的生成与销毁、Java包&方法调用&访问控制、封装和继承、多态、继承链、抽象类和接口等等。
根据给定文件的信息,我们可以深入探讨Java的基本语法和核心概念,包括程序结构、注释、...以上知识点覆盖了Java基本语法的核心要素,包括程序结构、注释、数据类型以及变量和常量的使用,为初学者提供了坚实的基础。
下面将详细阐述Java SSO的基本原理、实现方式以及相关知识点。 1. **SSO基本原理** SSO的核心思想是用户只需要一次登录,就能访问所有相互信任的应用系统。这通常通过共享认证信息或令牌来实现。在Java环境中,...
标题提到的"java基本练习题主要给java初学者学习用的",表明这是一系列旨在帮助初学者巩固Java基础知识的练习题目。这些练习通常会涵盖编程基础、控制结构、字符串处理等方面,这些都是Java编程的核心元素。 首先,...
Java基础知识点总结 Java是一种广泛应用的编程语言,掌握Java基础知识点对于编程人员非常重要。本节将对Java基础知识点进行总结,涵盖变量、数据类型、运算符、控制流程、方法、数组、内部类、继承、多态、接口、...