你猜这个题输出啥?-- java基础概念

  最近在看java编程思想,大部分内容都觉得没啥意思,但是突然看到一个基本概念(似乎都忘了),于是写了测试题,我想这辈子也不会忘这个概念了。

  题目如下:

public class Suber extends Last {
    public Suber() {
    }
    public Suber(int i) {
        System.out.println("Suber(" + i + ")");
    }
    public Suber(String i) {
        super.CommonBase(i + "-su");
        System.out.println("Suber(" + i + ")");
    }
    public static void main(String[] args) {
        Suber suber = new Suber();
        System.out.println("==============main================");
        Suber s2 = new Suber(1);
        System.out.println("==============main=============");
        Suber s3 = new Suber("3");
        System.out.println("==============main=============");
    }
}

class Base1 {
    public Base1() {
        System.out.println("Base1");
    }
}
class CommonBase1 extends Base1 {
    public CommonBase1() {
        System.out.println("CommonBase1");
    }
    public void CommonBase(String i) {
        System.out.println("CommonBase1(" + i + ")");
    }
}
class Last extends CommonBase1 {
    public Last() {
        System.out.println("Last");
    }
    public Last(int i) {
        System.out.println("Last(" + i + ")");
    }
}

  当我把这个题出给我的码农朋友看的时候,他们的第一反应是:谁TM写的代码,可读性也太差,要求重构。

  但是说到具体输出结果时,他们还是有点怀疑的。

  是的,咱们现在都是走的高级路线了,对于基础的东西,还真不一定把握得准。

  结果如下:

Base1
CommonBase1
Last
==============main================
Base1
CommonBase1
Last
Suber(1)
==============main=============
Base1
CommonBase1
Last
CommonBase1(3-su)
Suber(3)
==============main=============

  结果解释: 一句话,初始化子类时,会默认调用父类的默认构造方法,原因是为了检查父类是否语法正确!!!

  好吧,基础的东西,记一下得了,说不定面试的时候就遇到了呢!

时间: 2024-12-13 09:19:18

你猜这个题输出啥?-- java基础概念的相关文章

h--5--菠菜源码下载java基础概念

1.第一个应用程序:Hello World!package my.xkyy.lsc;public class HelloWorld {public static void main(String[] args) { System.out.println("hello wrold!");}}2.数组:int[] a=new int[100];3.字节(byte):8位二进制数4.UTF-8编码:一个英文字符等于一个字节,h--5--菠菜源码下载QQ:2152876294 网址diguay

Java基础概念初识

Shiro:Apache Shiro是一个强大且易用的Java安全框架,执行身份验证.授权.密码学和会话管理.使用Shiro的易于理解的API,您可以快速.轻松地获得任何应用程序,从最小的移动应用程序到最大的网络和企业应用程序. 三个核心组件: Subject,用户安全操作 SecurityManager ,框架核心,典型的Facade,管理各种安全服务 Realms,shiro与应用数据间的"桥梁"或者"连接器".权限验证,从配置的Realms中查找用户及其权限信

2016第20周四java基础概念

简单的说JDK=JRE+Java编译器.调试器.工具类库等:JRE=JVM(类似于jre目录下的bin)+必要运行的类库(类似于jre目录下的lib) JVM:Java Virtual Mechinal(JAVA虚拟机).JVM是JRE的一部分,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的.JVM有自己完善的硬件架构,如处理器.堆栈.寄存器等,还具有相应的指令系统.JVM 的主要工作是解释自己的指令集(即字节码)并映射到本地的 CPU 的指令集或 OS 的系统调

粤嵌java培训第一天笔记-java基础概念

一.二进制数 1.最高位为0,表示正数:最高位为1,表示负数. 2.相应的负数与正数之间进行转换方式:通过补码方式进行转换,即:取反再加1. 例如:0000 0001 表示 +1:通过对 0000 0001 取反后得:1111 1110 ,再对1111 1110+1=1111 1111,二进制 1111 1111 等于 -1. 3.8位二进制数,能表示的最大值和最小值. 最大值:0111 1111=127:即2^(8-1)-1=127.(因为从0开始计算,故最多能表示0~127). 最小值:10

java 基础概念 -- 数组与内存控制

问题1: Java在声明数组的过程中,是怎样分配内存的? 在栈内存中 建一个数组变量,再在堆内存中 建一个 数组对象.至于详细的内存分配细节,还得看 该初始化是 数组动态初始化 还是 数组静态初始化. 问题2: Java数组的初始化方式 有哪几种? 两种:动态初始化 和 静态初始化.动态初始化 指的是 仅仅指定数组的长度,不指明每个数组的元素.  静态初始化 指的是 详细指定数组的每个元素. 问题3: Java 的基本类型数组 和 应用类型数组 之间,在初始化时的内存分配机制有什么差别? Jav

菠菜源码搭建与java基础概念

1.java jvm的功能:通过 ClassLoader 寻找和装载 class 文件?? ??? ??? ?? 解释字节码成为指令并执行,提供 class 文件的运行环境?? ??? ??? ?? 进行运行期间垃圾回收 菠菜源码搭建QQ:2152876294 网址diguaym.com?? ??? ??? ?? 提供与硬件交互的平台?? ?2.运算符优先级:单目 >运算>移位>比较>按位>逻辑>三目 >赋值?? ??? ??? ?单目:单目运算符+ –(负数)

1、Java基础概念

1.面向对象和面向过程的区别 面向过程 优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机.嵌入式开发.Linux/Unix等一般采用面向过程开发,性能是最重要的因素. 缺点:没有面向对象易维护.易复用.易扩展 面向对象 优点:易维护.易复用.易扩展,由于面向对象有封装.继承.多态性的特性,可以设计出低耦合的系统,使系统更加灵活.更加易于维护 缺点:性能比面向过程低 2.Java的四个基本特性(抽象.封装.继承,多态) 抽象:就是把现实生活中的某一类东西提取出来

Java基础概念

对象:职能化.是存在的具体实体,具有明确定义的特征和行为. 面向对象:一种认识事物的方式,注重对事物整体的认知,最符合人类自然的思维习惯. 类是对象的抽象,对象是类的实例. 类是具有相同属性和行为的一组对象的集合. 在软件系统中,我们用类来模拟现实生活中的实体. 属性用于描述对象的特征,对象之间属性彼此独立,一个对象的属性的变化不会影响其他对象属性的变化,由于属性是属于一个对象的组成部分,所以属性也叫做成员变量. 静态变量创建在对象之外,是所有对象共享的变量,静态变量发生变化,会影响所有的对象.

JAVA基础学习之路(一)

JAVA基础概念: PATHl: path属于操作系统的属性,是系统用来搜寻可执行文件的路径,个人理解是类似于linux中的全局变量 CALSSPATH:java程序解释类文件时加载文件的路径 注释: 单行注释  // 多行注释 /*.......*/ 文档注释 /**......*/ JAVA两类数据类型: 1基本类型 数值类型: 整形:short ,int,long 浮点型:float,double 字符类型:char 布尔类型:boolean 2引用类型 数组,类,接口 数据类型转换基本原