首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Java知识面试题复习(二)Java基础语法

注意:不能修饰类(外部类) default (即缺省,什么也不写,不使用任何关键字): 在同一包内可见,不使用任何修饰符。使用对象:类、接口、变量、方法。...使用对象:类、接口、变量、方法 访问修饰符图 运算符 &和&&的区别 &运算符有两种用法:(1)按位与;(2)逻辑与。 &&运算符是短路与运算。...关键字 Java 有没有 goto goto 是 Java 中的保留字,在目前版本的 Java 中没有使用。 final 有什么用?...this与super的区别 super: 它引用当前对象的直接父类中的成员(用来访问直接父类中被隐藏的父类中成员数据或函数,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名...以致于即使没有创建对象,也能使用属性和调用方法! static关键字还有一个比较关键的作用就是 用来形成静态代码块以优化程序性能。static块可以置于类中的任何地方,类中可以有多个static块。

32920

Java基础小结(二)

super 与 this 关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。 this关键字:指向自己的引用。...super关键字 super 表示使用它的类的父类。...方法的重写规则 参数列表必须完全与被重写方法的相同; 返回类型必须完全与被重写方法的返回类型相同; 访问权限不能比父类中被重写的方法的访问权限更低。...重载(Overload) 重载(overloading) 是在一个类里面,方法名字相同,而参数不同。返回类型可以相同也可以不同。 每个重载的方法(或者构造函数)都必须有一个独一无二的参数类型列表。...无法以返回值类型作为重载函数的区分标准。 重写与重载之间的区别 方法的重写(Overriding)和重载(Overloading)是java多态性的不同表现。 重写是父类与子类之间多态性的一种表现。

68110
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    (24) 异常 (上) 计算机程序的思维逻辑

    参数是用户输入的,我们没有办法强制用户输入什么,如果用户输的是数字,比如123,屏幕会输出123,但如果用户输的不是数字,比如abc,屏幕会输出: Exception in thread "main"...throw关键字可以与return关键字进行对比,return代表正常退出,throw代表异常退出,return的返回位置是确定的,就是上一级调用者,而throw后执行哪行代码则经常是不确定的,由异常处理机制动态确定...异常处理机制会从当前函数开始查找看谁"捕获"了这个异常,当前函数没有就查看上一层,直到主函数,如果主函数也没有,就使用默认机制,即输出异常栈信息并退出,这正是我们在屏幕输出中看到的。...异常有不同的类型,接下来,我们来认识一下。...那为什么定义这么多不同的类呢?主要是为了名字不同,异常类的名字本身就代表了异常的关键信息,无论是抛出还是捕获异常时,使用合适的名字都有助于代码的可读性和可维护性。

    59660

    Kotlin 漫谈系列之类与继承

    不过在定义主构造函数时,如果没有注解什么的,就可以不写了,所以看起来还是很?的。...如果想要让某个类可以被继承,必须要现式的为该类添加 open 的关键字,该关键字提供了和 Java 中 final 相反的功能。 Swift: ?,为什么要区分?...如果类没有主构造函数,那么每个次构造函数必须 使用 super 关键字初始化其基类型,或委托给另一个构造函数做到这一点。...Kotlin 属性覆盖和函数覆盖类似,需要使用 open 和 override 关键字,覆盖属性的类型必须兼容。...如果类没有主构造函数,那么每个次构造函数必须 使用 super 关键字初始化其基类型,或委托给另一个构造函数做到这一点。

    3.7K40

    【Java面试总结】Java基础(下篇)

    为什么Java中只有值传递? 在程序设计语言中有关将参数传递给方法(或函数)的一些专业术语。...它的创建是不需要依赖外围类的创建。2. 它不能使用任何外围类的非static成员变量和方法。...静态导包(用来导入类中的静态资源,1.5之后的新特性): 格式为:import static 这两个关键字连用可以指定导入某个类中的指定静态资源,并且不需要使用类名调用类中静态成员,可以直接使用类中静态成员变量和成员方法...super 关键字 super关键字用于从子类访问父类的变量和方法。...: 排序 查找,替换操作 同步控制(不推荐,需要线程安全的集合类型时请考虑使用 JUC 包下的并发集合) 排序操作 void reverse(List list)//反转 void shuffle(List

    64820

    java基础之继承(一)

    ,实际上每个子类的构造方法中的第一行默认是调用了父类的构造函数,而父类继续向上调用直至Object类,然后返回。...因为不是每个实例对象都需要传所有的参数,例如,大家在注册qq账号时候,有些是必填的信息,有的是可选填的,这样不同的人在注册时就会调用不同的构造函数,这样调用参数多的构造方法就没必要再为每个变量赋值,可以使用...,他们之间要么参数类型不同,要么参数个数不同。     ...总结一下:方法的重载,方法与方法之间是不一样的,而方法的重写实际上是一种方法的覆盖,子类覆盖父类的方法使父类方法在子类中不可见(实际上是可以使用super显式调用的,本节暂时不讨论)。...三、final关键字     final关键字既可以修饰类也可以修饰方法,也能修饰变量,但是具有不同的意义。被final修饰的类表示为不可继承特性,不允许子类继承,也就是不让子类再对其进行扩展。

    54180

    Java中所有的关键字及用法

    catch关键字 后面紧接着它能捕获的异常类型,所有异常类型的子类异常也能被捕获。 finally 是在异常处理时提供finally块来执行任何清除操作。...语句总是和方法有密切关系,return语句总是用在方法中,有两个作用,一个是返回值方法指定的类型的值(这个值总是确定的),一个是结束方法的执行(仅仅返回一个return)。...所有没有返回值的方法都使用它来表示返回值类型。 Void是void的封装类型,API上称其为占用符(placeholder)。...声明一个 Void 变量通常是没有什么意义的,因为没有可为其赋值的实例,注意不能用 void 为其赋值(void 是类型而不是值)。 Void 变量唯一能持有的是 null。...因此如果你想让你的浮点运算更加精确,而且不会因为不同的硬件平台所执行的结果不一致的话,那就请用关键字strictfp。

    28520

    深入理解class的继承,助你成为优秀的前端

    这是因为子类自己的this对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,加上子类自己的实例属性和方法。...ES6 的继承机制完全不同,实质是先将父类实例对象的属性和方法,加到this上面(所以必须先调用super方法),然后再用子类的构造函数修改this。...(...args); } } 另一个需要注意的地方是,在子类的构造函数中,只有调用super之后,才可以使用this关键字,否则会报错。...super 关键字 super这个关键字,既可以当作函数使用,也可以当作对象使用。在这两种情况下,它的用法完全不同。 第一种情况,super作为函数调用时,代表父类的构造函数。...同时,由于super使得this指向B的实例,所以super.valueOf()返回的是一个B的实例。 最后,由于对象总是继承其他对象的,所以可以在任意一个对象中,使用super关键字。

    34930

    Java几个重要关键字的使用

    其他:this super new  保留字:goto default  这些关键字都是我们平时写代码常用的,其中有些关键字很容易理解,也没有很深刻的意思,  比如八大基本数据类型,就仅仅表示数据的类型...public和default,其中public修饰的类是主类,必须与包名相同,default(可以不写)修饰的类是辅类。  ...,通过super关键字调用               super关键字调用构造方法的使用必须出现在当前函数第一行     代码示例:              package com.huaxin.keywords3...静态的属性和方法在加载当前类的时候就会加载静态属性和方法到静态空间存储     注意:静态的方法不能直接使用非静态变量和非静态成员方法。    ...}           }      }  输出结果为:i的值是0              i的值是1  与continue和break不同的是,return直接结束整个方法,不管这个return处于多少层循环之内

    30300

    全面理解Java中继承关系

    在Java中使用extends关键字表示继承,语法表示为: class 子类 extends 父类{}子类被称为派生类,父类又被称为超类。...需要使用父类的成员变量和方法时,就需要使用super关键字来进行引用。       隐藏是针对成员变量和静态方法,覆盖是针对普通方法。...所以第三个输出:构造代码块Fu,第四个输出:构造方法FuFu类初始化结束后,子类初始化,第五个输出的是:构造代码块Zi,第六个输出:构造方法Zi  方法重写  重写:子父类出现一模一样的方法,但返回值类型可以是子父类...重载可以改变返回值类型,它是方法名相同,参数列表不同,与返回值类型无关。方法重写:子类中出现和父类中方法声明一模一样的方法。返回值类型相同(或者是子父类,多态),方法名和参数列表一模一样。...主要发生在子类和父类的同名方法之间。方法重载:本类中出现方法名相同,参数列表不同的方法,和返回值类型无关,可以改变。主要发生同一类的多个同名方法之间。

    1.5K00

    (16) 继承的细节

    实例变量、静态变量、静态方法、private方法,都是静态绑定的。 重载和重写 重载是指方法名称相同但参数签名不同(参数个数或类型或顺序不同),重写是指子类重写父类相同参数签名的方法。...但现在有多个方法可用,子类的sum方法参数类型虽然不完全匹配但是是兼容的,父类的sum方法参数类型是完全匹配的。程序输出为: base_int_int 父类类型完全匹配的方法被调用了。...程序输出为: base_int_long 调用的还是父类的方法。父类和子类的两个方法的类型都不完全匹配,为什么调用父类的呢?因为父类的更匹配一些。...答案是可以,通过instanceof关键字,看下面代码: public boolean canCast(Base b){ return b instanceof Child; } 这个函数返回Base...防止继承 (final) 上节我们提到继承是把双刃剑,具体原因我们后续章节解说,带来的影响就是,有的时候我们不希望父类方法被子类重写,有的时候甚至不希望类被继承,实现这个的方法就是final关键字。

    69890

    Java抽象类与oop三大特征

    个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。...、 继承使用 extends 关键字实现 重写overriding 父类与子类之间的多态性, 对父类的函数进行重新定义 。...方法重写又称 方法覆盖; 若子类中的方法与父类中的某一方法具有相同的方法名、返回类型和参数表,则新方法将覆盖原有的方法。 那么子类的对象如果调用该函数,一定调用的是重写过后的函数。...如需父类中原有的方法,可使用 super 关键字,该关键字引用了当前类的父类; 子类重写父类的函数的时候,返回值类型必须是父类函数的返回值类型或该返回值类型的子类,不 能返回比父类更大的数据类型 ;...调用方法时通过传递给它们的不同参数个数和参数类型给它们的不同参数个数和参数类型给它们的不同参数个数和参数类型来决定具体使用哪个方法, 这就是多态性; 重载的时候,方法名要一样,但是参数类型和个数不一样

    80440

    《JavaSE》---12.<面向对象系列之(继承)>

    提高代码的可读性,让别人轻松知道这是访问父类中的 注意: 当父类与子类有相同的方法名但是参数不同的情况下,我们传入什么参数匹配到那个方法,那么就会访问到哪个方法....(方法的重载) 方法的重写(规则) 方法签名必须相同:包括方法名、参数列表和返回类型必须与父类的方法一致。 访问权限不能更低:子类重写的方法不能比父类方法的访问权限更低。...注: 如果一个父类和子类,它们的方法名和参数列表相同,但返回类型不同。这将导致编译错误。 为了避免这种情况,需要确保返回类型一致或者通过使用协变返回类型来处理。...协变返回类型(了解即可) 协变返回类型允许子类的方法返回类型是父类方法返回类型的子类型。 6.super在当前类中使用那么super一定是子类....与之不同的是,在子类的默认的构造方法中会执行super()来继承父类的构造方法。

    9210

    kotlin入门之泛型

    泛型 将具体的类型泛化,编码的时候用符号来值代类型,在使用时再确定他的类型。 因为泛型的存在,我们可以省去强制类型转化。 泛型是跟类型相关的,那么是不是也能使用与类型的多态呢?...是一个通配符,表示这个List的泛型类型是一个未知类型 extends 限制了这个未知类型的上界,也就是泛型类型必须满足这个extends的 限制条件 这里和定义class 的extends 关键字有点不一样...-使用关键字out来支持协变,等同于Java中的上界通配符? extends -使用关键字in来支持逆变,等同于Java中的上界通配符?...var list: List 和 Java 不同的地方是,如果你的类型定义里已经有了out或者 in, 那这个限制在变量声明时也依然在,不会被*号去掉。...b() } 多个泛型参数 //该函数返回类型R必须继承Number, T 必须实现Comparable 接口,并且是一个返回类型为R的方法 fun callMax(a:T

    1.2K20

    java 程序设计题库

    在类中的构造方法的名字与类的名字相同,但没有返回类型. C. 在类中的构造方法的名字与类的名字相同,而且有返回类型. D....在类中的构造方法的名字与类的名字相同,而且不能初始化. 12、Java application中的主类需包含main方法,main方法的返回类型是什么?...A、每次读入的字节数不同 B、前者带有缓冲,后者没有 C、前者是块读写,后者是字节读写 D、二者没有区别,可以互换使用 45.下面关于使用throw关键字抛出的对象说法正确的是( A )。...构造方法的方法名与(类名)相同,若类中没有定义任何的构造方法,则运行时系统会自动为该类生成一个没有参数的构造的方法。...问答题 答题要求:按采分点给分,语言能符合采分点表达的含义。 什么是变量?什么是常量?变量名和变量的数据类型各有什么意义?

    1.7K20

    ECMAScript中类与继承详解(Java对比学习)

    静态方法,ES6中用static声明一个静态方法,方法只能用类名直接调用,不能通过类的实例调用 二者异: ES6在类中声明函数,无需使用function关键字,java的类中必须使用关键字声明函数。...类中的继承 二者同: 继承关键字都是extends,super方法的使用 二者异: 继承的调用: ES6需要注意的是super只能调用父类方法,而不能调用父类的属性,方法定义再原型链中,属性定义在类的内部...如果父类构造器没有参数,则在子类的构造器中不需要使用 super **关键字调用父类构造器,系统会自动调用父类的无参构造器。...__proto__);//true 类的实例 构造方法默认返回实例对象(this) 但是返回this可以修改 ES6中类的出现有什么好处 js中的类仍然是基于原型的。...即使在创建类后修改类的构造函数上的原型对象仍然不会有任何问题。

    43310

    程序员的56大Java基础面试问题及答案

    因为泛型类包括预定义的集合,使用的参数都是对象类型,无法直接使用基本数据类型,所以Java又提供了这些基本类型的封装类。 基本类型和对应的封装类由于本质的不同。...重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的参数列表,有兼容的返回类型...在字段面前加 transient 关键字,例如: transient private String phone;//不参与序列化 32.Java泛型和类型擦除?...,基类与派生类中有相同成员定义时如:super.变量名 super.成员函数据名(实参) this:它代表当前对象名(在程序中易产生二义性之处,应使用this来指明当前对象;如果函数的形参与类中的成员数据同名...this和super不能同时出现在一个构造函数里面,因为this必然会调用其它的构造函数,其它的构造函数必然也会有super语句的存在,所以在同一个构造函数里面有相同的语句,就失去了语句的意义,编译器也不会通过

    17720

    Java Review (十、面向对象----继承)

    这个关键字很好地体现了子类和父类的 系:子类是对父类的扩展,子类是种特殊的父类 从这个意义上来看,使用继承来描述子类和父类的似乎不如扩展更恰当。 为什么国内把 extends 翻译为"继承"呢?...方法的重写要遵循两同两小一大规则: " 两同"即方法名相同、 形参列表相同 ; " 两小"指的是子类方法返回值类型应比父类方法返回值类型更小或相等,子类方法声明抛出的异常类应比父类方法声明抛出的异常类更小或相等...返回类型可以相同也可以不同。 Super关键字 super关键字:我们可以通过super关键字来实现对父类成员的访问,用来引用当前对象的父类。...调用父类构造器 子类是不继承父类的构造器(构造方法或者构造函数)的,它只是调用(隐式或显式)。...如果父类构造器没有参数,则在子类的构造器中不需要使用 super 关键字调用父类构造器,系统会自动调用父类的无参构造器。

    50530

    java的serializable接口_javacloneable接口

    要说明的有两点: 一是拷贝对象返回的是一个新对象,而不是一个引用; 二是拷贝对象与用 new操作符返回的新对象的区别就是这个拷贝已经包含了一些原来对象的信息,而不是对象的初始信息。...上面程序中,输出对象和读入对象使用的是同一个Person类。...如果把Person类中的name定义为static类型的话,试图重构,就不能得到原来的值,只能得到null。说明对静态成员变量值是不保存的。...变量一样: 输出结果为: name:null age:22 在被反序列化后,transient 变量的值被设为初始值,如 int 型的是 0,对象型的是 null。...; public Person(int num,String name,int age){ super(num); //调用父类中的构造函数 this.name = name;

    94430
    领券