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. ...
随机推荐
- Python机器学习·微教程
Python目前是机器学习领域增长最快速的编程语言之一. 该教程共分为11小节.在这个教程里,你将学会: 如何处理数据集,并构建精确的预测模型 使用Python完成真实的机器学习项目 这是一个非常简洁 ...
- 使用Jasypt对SpringBoot配置文件加密
# **前言** 在日前安全形势越来越严重的情况下,让我意识到在项目中存在一个我们经常忽略的漏洞,那就是我们的项目的配置文件中配置信息的安全,尤其是数据库连接的用户名和密码的安全.所以这里我们就需要对 ...
- java并发编程(二十三)----(JUC集合)ConcurrentSkipListMap介绍
ConcurrentSkipListMap提供了一种线程安全的并发访问的排序映射表.内部是SkipList(跳表)结构实现,在理论上能够在O(log(n))时间内完成查找.插入.删除操作. 理解Ski ...
- alluxio源码解析-netty部分(2)
netty简介 Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端. netty作为alluxio中重要的通讯组件 在常见的客户端上传,下载中,都会有n ...
- SoapSerialization——手机号码归属地
public class MainActivity extends AppCompatActivity { private EditText etNumber; private TextView tv ...
- 最新 Flutter 团队工程师中文演讲 | Flutter 的性能测试和理论
本视频为 Google Flutter 团队的软件工程师 Xiao Yu 在 2018 谷歌开发者大会做的演讲,演讲题目是<Flutter 的性能测试和理论>. 这个视频里将会通过近半个小 ...
- 【openmp】for循环的break问题
问题描述:在用openmp并行化处理for循环的时候,便无法在for循环中用break语句,那么我们如何实现这样的机制呢?在stackoverflow上看到一个不错的回答总结一下. volatile ...
- Mysql5.6对时间的处理精度问题
在业务处理需要使用new Date()来更新时间类型的字段时,数据库会对时间类型进行四舍五入处理,如果new Date()的更新时间与原时间间隔太短,数据库进行四舍五入之后,认为值没有变化,从而不更新 ...
- ZooKeeper 相关概念以及使用小结
Dubbo 通过注册中心在分布式环境中实现服务的注册与发现,而注册中心通常采用 ZooKeeper,研究注册中心相关源码绕不开 ZooKeeper,所以学习了 ZooKeeper 的基本概念以及相关 ...
- 线程的start方法解析
Thread是学习我们学习多线程接触到的第一个有关多线程的类,相信每一个学习过或者了解过Java多线程的小伙伴都知道Thread类.这次分享主要对Thread的start方法进行讲解. 相信大家都知道 ...