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. ...
随机推荐
- 【JDK】JDK源码分析-AbstractQueuedSynchronizer(3)
概述 前文「JDK源码分析-AbstractQueuedSynchronizer(2)」分析了 AQS 在独占模式下获取资源的流程,本文分析共享模式下的相关操作. 其实二者的操作大部分是类似的,理解了 ...
- 用vue2.0+vuex+vue-router+element-ui+mockjs实现后台管理系统的实践探索
A magical vue element touzi admin. 效果演示地址 更多demo展示 分支说明 master分支:前后端统一开发的版本:可以用于学习nodejs+mongodb+exp ...
- 【Java例题】7.4 文件题1-学生成绩排序
4.学生成绩排序.已有一个学生成绩文件,含有多位学生的成绩:读取这个文件中的每位学生的成绩,然后排序:最后将这些排好序的成绩写到另一个文件中. package chapter7; import jav ...
- 算法与数据结构基础 - 折半查找(Binary Search)
Binary Search基础 应用于已排序的数据查找其中特定值,是折半查找最常的应用场景.相比线性查找(Linear Search),其时间复杂度减少到O(lgn).算法基本框架如下: //704. ...
- Eclipse+CXF框架开发Web服务实战
一. 说明 采用CXF框架开发webservice. 所用软件及版本如下. 操作系统:Window XP SP3. JDK:JDK1.6.0_07,http://www.oracle.com/ ...
- 三层架构(MVC)实现简单登陆注册验证(含验证码)
前言在我的上一篇微博里我已经提出了登陆的方法,当时我采取的是纯servlet方式,因为当时刚接触到servlet,正好网上没有这方面的全面讲解,所以我就发飙了.不过在现实生产中我们大多采用的三层架构. ...
- 工作中常见的五种技术leader
力不从心型 在工作中有种技术leader,总认为自己是最好的.在方案设计的时候,自己有一种方案,下属有一种方案.leader非要别人听他的.如果两种方案没有优劣之分,比较建议的做法是让真正实施的人按照 ...
- openldap介绍和使用
openldap介绍和使用 为什么会有本文? 早期,公司是没有统一认证这个东西的,所以各自玩各自的.于是, confluence一个用户体系,gitlab一个用户体系,Jenkins一个用户体系等等, ...
- 编程使用c#连接到IBM db2的两种方式
一:使用c#通过odbc连接到IBM db2使用 ConnectionString 属性连接到各种数据源. 部署:只要在客户端安装IBM DB2 ODBC driver.配置DSn即可. 1):可以单 ...
- 优雅的在WinForm/WPF/控制台 中使用特性封装WebApi
优雅的在WinForm/WPF/控制台 中使用特性封装WebApi 说明 在C/S端作为Server,建立HTTP请求,方便快捷. 1.使用到的类库 Newtonsoft.dll 2.封装 HttpL ...