Java常见面试题-1
问:
1 面向对象的特征有哪些方面?
2 访问修饰符public,private,protected,以及不写(默认)时的区别?
3 String 是最基本的数据类型吗? 对象类型 基本类型
4 float f=3.4;是否正确?
5 short s1 = 1; s1 = s1 + 1;有错吗?short s1 = 1; s1 += 1;有错吗?
6 Java有没有goto?
7 int和Integer有什么区别?
8 &和&&的区别? if( a>6 && a<100 )
9 switch 是否能作用在byte 上,是否能作用在long 上,是否能作用在String上?
10 用最有效率的方法计算2乘以8?
11 数组有没有length()方法?String有没有length()方法?
12 在Java中,如何跳出当前的多重嵌套循环?
13、构造器(constructor)是否可被重写(override)?
14、是否可以继承String类?
15、String和StringBuilder、StringBuffer的区别?
16、重载(Overload)和重写(Override)的区别。重载的方法能否根据返回类型进行区分?
17、char 型变量中能不能存贮一个中文汉字,为什么?
18、抽象类(abstract class)和接口(interface)有什么异同?
19、抽象的(abstract)方法是否可同时是静态的(static),是否可同时是本地方法(native),是否可同时被synchronized修饰? 是否能使final修饰的?
20、阐述静态变量和实例变量的区别。
21、是否可以从一个静态(static)方法内部发出对非静态(non-static)方法的调用?
22、接口是否可继承(extends)接口?抽象类是否可实现(implements)接口?抽象类是否可继承具体类(concrete class)?
23、一个".java"源文件中是否可以包含多个类(不是内部类)?有什么限制?
24、Java 中的final关键字有哪些用法?
25、Error和Exception有什么区别?
26、try{}里有一个return语句,那么紧跟在这个try后的finally{}里的代码会不会被执行,什么时候被执行,在return前还是后?
27、Java语言如何进行异常处理,关键字:throws、throw、try、catch、finally分别如何使用?
28、运行时异常和受检异常有什么区别?
29、列举一些常见的运行时异常?
30、final 和 finally finalize的区别?
答:
1:面向对象的特征有:继承、多态、封装;Java中面向对象的特征有:继承、多态、封装、抽象、接口等。
2:访问修饰符public、private、protected、以及不写时默认default的区别:作用域的不同(参考下表)
| 当前类 | 当前包 | 当前子类 | 其他包 | ||
| public | √ | √ | √ | √ | |
| protected | √ | √ | √ | ||
| default | √ | √ | |||
| private | √ | ||||
3:Java中String不是基本数据累i系那个,属于对象类型,是object的子类。
4:Float f = 3.4; 不正确,编译器会报强制类型转换的错误,3.4默认的是Double类型而不是单精度浮点型float,float声明的时候需要在后面加F。
5:Short s1 = 1; s1 = s1 + 1;编译器会报强制类型转换的错误:int类型不能转换为short;s1 = s1 + 1;等式右边会发生类型的自动提升,转换才int,int不能隐式类型转换为short,故报错;short s1 = 1; s1 += 1;编译器正常运行,+=是Java中的运算符,s1 += 1在运行的时候会默认进行隐式类型转换,等于s1 = (short)(s1 + 1);故不报错。
6:Java中goto是保留字,但是没有使用。
7:int是Java提供的8中基本数据类型之一。Java为每个基本数据类型提供了封装类,integer是Java为int提供的封装类。int的默认是是0;而integer的默认值是null,即integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。
8:&和&&都可用于逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式结果都为True时,整个运算结果才为True,如果有一方为False,则运算结果为False;&&还有短路的功能,如果第一个表达式结果为False,则第二个表达式不再运算,运算结果为False;&主要用于位运算;例如:If(a>6&&y++),a>6为False时,运算结果为False,y不会++;If(a>5&y++),a>6为False时还需判断y++是否为False,此时会报错,布尔值无法和int类型比较。
9:switch能作用在byte上,不能作用在long 和String 上。
10:2<<3
11:数组中没有length()方法,有length属性;String中有length()方法 。
12:额可在最外层的循环语句前定义一个标号,然后在里层循环体的代码中使用带有标号的break语句即可跳出外层循环。try-catch抛出异常也可以跳出循环;让外层循环体的条件表达式,可以受到里层循环体的控制也可跳出循环。
13:构造器(constructor)不能被继承,因此不能重写override,但是可以被重载overload。
14:String类是final类故不可以被继承。
15:StringBuff线程安全的可变字符序列;StringBuilder一个可变的字符序列;StringBuff和StringBuilder上的主要操作都是append和intert方法,可重载这些方法,以接受任意类型的数据。
16:overload重载表示同一类中可以有多个名称相同的方法,但这些方法的参数列表各不相同,而override重写指的是父类的方法满足不了子类的需求,子类可以重写父类的方法,参数列表和函数名相同,返回值的数据类型,子类的要比父类的的占位范围大,例如,父类是int类型的返回值,子类就不能为short、char、byte,子类可以为long等。
17:char字符型变量能存贮一个Unicode字符集里面的汉字, Java中的char字符型占位两个字节,而Unicode中的汉字也是两个字节。
18:抽象类中可以有普通函数,成员变量,抽象函数;而接口中只能有抽象函数;接口可以理解成是一种特殊的抽象类,抽象类中是继承,接口中是实现;
19:abstract方法不可同时是Static、Native;也不能使用final修饰。
20:在语法定义上的区别:静态变量前要加Static关键字,而实例变量钱则不加;在程序运行时的区别:实例变量必须创建了对象后才可以通过 这个对象来使用;静态变量则可以直接使用类名使用。
21:Static方法内部不可以发出对非Static方法的调用,因为非Static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而Static方法调用时不需要创建对象,可以直接用类名调用;也就是说,当一个Static方法被调用时,可能还没有创建 任何实例对象,如果从一个Static方法中发出对非Static方法的调用,那个非Static方法是关联到哪个 对象呢?这个逻辑无法成立,所以,一个Static方法不可以从内部发出对非Static方法的调用。
22:接口与接口之间是多继承的继承 关系,抽象类可以实现接口,类与接口之间是多实现的实现关系;抽象类可以继承具体的类,因为抽象类也是类,类与类之间是单继承的继承关系。
23:一个.java源文件可以包含多个类,但是只能有一个Public类,且类名与文件名一致。
24:Java中final关键字的用法:final修饰的类称之为最终类,被final修饰的类,不能被其他类继承;final修饰的函数,可以被子类调用,但是,不能被重写;final修饰的成员变量称之为常量(常量就是只能赋值一次,别且不能被修改)final修饰的常量 命名规范为:全大写+下划线 final修饰的成员变量赋值的时候只能在初始化的时候或则构造函数里;fianl修饰的静态变量只能在初始化的时候或静态代码块中赋值。
25:Error:程序级别的问题,不是代码出问题;Exception:代码级别的问题;
26:会被执行,在 try{ }里面的语句 运行至return时会接着运行finally里面的代码,如果finally里面也有return那么会返回finally里面return的值。
27:Java中进行异常处理的方式有两种:A 、继续抛,调用方在调用有异常的函数的时候,如果当前调用方的函数内部不想处理,则可以继续上抛,抛给当前函数的调用方,如果没有调用方想处理,都继续抛,此时最终会抛到JVM,JVM就会来处理本次异常--报错,终止程序;B、自己try 通过使用try-catch语句对 异常进行处理;throws是用在继续上抛时,在函数声明的参数小括号后面添加throws关键字,抛出具体的异常类;throw是政策抛出异常的格式,throw new 异常类( ); try-catch格式:try{ 有异常的代码块 }catch( 异常类 参数 ){ 对异常的处理 }我们catch可以写多个,每个都可以具体捕获不同的异常,然后对不同的异常进行处理;finally是接在try-catch后使用,fianlly后面的语句块,无论是否有异常都会执行。
28:可检异常:编译器要求必须处理,否则不能通过编译;运行时异常:编译期不会检查,所以在程序中可以不处理,但如果发生,会在运行时抛出。可检异常和 运行时异常都是属于Exception异常,是代码级别的异常。
29:数组下标越界异常(ArrayIndexOutOfBoundsException)空指针异常(NullPointerException)类型强制转换异常(ClassCaseException)算术异常类(AritheneticExecption)文件未找到异常(FileNotFoundException)
30:final和finally、finalize的区别:fianl用于声明属性、方法和类,分别表示属性不可变、方法不可覆盖,类不可继承;内部类要访问局部变量必须定义成final类型;finally是异常处理语句结构的一部分,表示总是执行;finalize是Object类的一个方法,在垃圾收集器执行的时候,会调用被回收对象的此方法,可以覆盖此方法提供垃圾收集时的其他资源回收,例如关闭文件等。JVM不保证 此方法总被调用。
Java常见面试题-1的更多相关文章
- java常见面试题及答案 1-10(基础篇)
java常见面试题及答案 1.什么是Java虚拟机?为什么Java被称作是"平台无关的编程语言"? Java 虚拟机是一个可以执行 Java 字节码的虚拟机进程.Java 源文件被 ...
- java常见面试题及答案
java常见面试题及答案 来源 https://blog.csdn.net/hsk256/article/details/49052293 来源 https://blog.csdn.net/hsk25 ...
- Java 常见面试题(一)
1)什么是Java虚拟机?为什么Java被称作是“平台无关的编程语言”? Java虚拟机是一个可以执行Java字节码的虚拟机进程.Java源文件被编译成能被Java虚拟机执行的字节码文件.Java被设 ...
- 【转载】JAVA常见面试题及解答(精华)
JAVA常见面试题及解答(精华) 1)transient和volatile是java关键字吗?(瞬联) 如果用transient声明一个实例变量,当对象存储时,它的值不需要维持.例如: ...
- JAVA常见面试题问题简述(持续更新中)
JAVA常见面试题问题简述 1. springcloud和dubbo的区别 ①相比之下springcloud 的社区会更加活跃,解决问题的速度也会越来越快,dubbo相对来说如果碰到没有解决的问题,就 ...
- java常见面试题总结2
JAVA必背面试题和项目面试通关要点 简单来讲,equals方法主要是用来判断从表面上看或者从内容上看,2个对象是不是相等. 一 数据库 1.常问数据库查询.修改(SQL查询包含筛选查询.聚合查询和链 ...
- Java常见面试题(含答案)
第一,谈谈final, finally, finalize的区别. final?修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此一个类不能既被声明为 ...
- java常见面试题
JAVA相关基础知识 1.面向对象的特征有哪些方面 1.抽象: 抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分 ...
- JAVA常见面试题及解答
JAVA相关基础知识1.面向对象的特征有哪些方面 1.抽象:抽象就是忽略一个主题中与当前目标无关的那些方面,以便更充分地注意与当前目标有关的方面.抽象并不打算了解全部问题,而只是选择其中的一部分,暂时 ...
- Java常见面试题总结
一.Java基础 1.String类为什么是final的. 2.HashMap的源码,实现原理,底层结构. 3.说说你知道的几个Java集合类:list.set.queue.map实现类咯... 4. ...
随机推荐
- 03、Swagger2和Springmvc整合详细记录(爬坑记录)
时间 内容 备注 2018年6月18日 基本使用 spirngmvc整合swagger2 开始之前这个系列博文基本是,在项目的使用中一些模块的内容记录,但是后期逐渐优化,不单单是整合内容. swagg ...
- Missing artifact XXXXX:jar:1.9.1 解决错误问题
昨天导过来一个maven工程的一个项目,由于自己meven库中有许多现成的jar包,但是还是有一些需要去下载的,配置的是阿里云的镜像,把eclise的预编译给关闭,具体做法为:Project----- ...
- 「雕爷学编程」Arduino动手做(10)——敲击传感器模块
37款传感器和模块的提法,在网络上广泛流传,其实Arduino能够兼容的传感器模块肯定是不止37种的.鉴于本人手头积累了一些传感器与模块,依照实践出真知(动手试试)的理念,以学习和交流为目的,这里准备 ...
- Go调度器介绍和容易忽视的问题
本文记录了本人对Golang调度器的理解和跟踪调度器的方法,特别是一个容易忽略的goroutine执行顺序问题,看了很多篇Golang调度器的文章都没提到这个点,分享出来一起学习,欢迎交流指正. 什么 ...
- 开源题材征集 + MVC&EF Core 完整教程小结
到目前为止,我们的MVC+EF Core 完整教程的理论部分就全部结束了,共20篇,覆盖了核心的主要知识点. 下一阶段是实战部分,我们将会把这些知识点串联起来,用10篇(天)来完成一个开源项目. 现向 ...
- Linux下复位USB设备
有时候USB设备出错,这时我们希望通过软件复位一下USB设备,可以参考下面这段代码: #include <stdio.h> #include <unistd.h> #inclu ...
- Mybatis框架(9)---Mybatis自定义插件生成雪花ID做为表主键项目
Mybatis自定义插件生成雪花ID做为主键项目 先附上项目项目GitHub地址 spring-boot-mybatis-interceptor 有关Mybatis雪花ID主键插件前面写了两篇博客作为 ...
- Unity 自定义Inspector面板时的数据持久化问题
自定义Inspector面板的步骤: Unity内创建自定义的Inspector需要在Asset的任意文件夹下创建一个名字是Editor的文件夹,随后这个文件夹内的cs文件就会被放在vstu生成的Ed ...
- HandlerMethodArgumentResolver(一):Controller方法入参自动封装器【享学Spring MVC】
每篇一句 你的工作效率高,老板会认为你强度不够.你代码bug多,各种生产环境救火,老板会觉得你是团队的核心成员. 前言 在享受Spring MVC带给你便捷的时候,你是否曾经这样疑问过:Control ...
- Visual Studio 2019 远程调试工具(Remote Debugger)使用方法
目录 0.Visual Studio 2019 远程调试工具使用场景 1.Visual Studio 2019 远程调试工具下载地址: 2.Visual Studio 2019 远程调试工具-安装及运 ...