Java实习生常规技术面试题每日十题Java基础(三)
目录
1.是否可以从一个static方法内部发出对非static方法的调用?
3.Overload和Override的区别。参数列表相同,返回值不同的方法,是否是重载方法?
4.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)?
6.abstract class和interface有什么区别?
7.如何理解Java中的Serialization和Deserialization。
10.String s = new String("xyz");创建了几个字符串对象。
1.是否可以从一个static方法内部发出对非static方法的调用?
不可以。因为非static方法是要与对象关联在一起的,必须创建一个对象后,才可以在该对象上进行方法调用,而static方法调用时不需要创建对象,可以直接调用。
也就是说,当一个static方法被调用时,可能还没有创建任何实例对象,如果从一个static方法中发出对非static方法的调用,那个非static方法是关联到哪个对象上的呢?
这个逻辑无法成立,所以,一个static方法内部发出对非static方法的调用。
2.Integer与int的区别?
1、int是基本数据类型,Integer是包装类;
2、int的默认值是0,Interger的默认值是null;
3.Overload和Override的区别。参数列表相同,返回值不同的方法,是否是重载方法?
Overload是重载的意思,Override是覆盖的意思,也就是重写。
重载是指在一个类里,方法名相同,参数不同;
重写是指子类继承父类,子类里重新编写了父类中的同名(同参数)方法,也就是覆盖了父类的方法;
不是!因为重载必须要求参数列表不同!
4.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)?
接口可以继承多个接口。抽象类可以实现(implements)接口,抽象类是可继承具体类。
备注:只要明白了接口和抽象类的本质和作用,这些问题都很好回答。
只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。
5.面向对象有哪三大特性?
1、面向对象有三大特性,分别是:封装、继承和多态。
2、封装:面向对象的封装就是把描述一个对象的属性和行为的代码封装在一个类中,有些属性是不希望公开的,或者说被其他对象访问的,所以我们使用private修饰该属性,使其隐藏起来;类中提供了方法(用public修饰),常用的是get、set方法,可以操作这些被隐藏的属性,其他类可以通过调用这些方法,改变隐藏属性的值!
封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。在面向对象的编程语言中,对象是封装的最基本单位,面向对象的封装比传统语言的封装更为清晰、更为有力。
3、继承:在定义和实现一个类的时候,可以在一个已经存在的类的基础之上来进行,使用extends关键字实现继承;子类中可以加入若干新的内容,或修改原来的方法使之更适合特殊的需要,这就是继承。继承是子类自动共享父类数据和方法的机制,这是类之间的一种关系,提高了软件的可重用性和可扩展性。
4、多态:多态就是在声明时使用父类,在实现或调用时使用具体的子类;即不修改程序代码就可以改变程序运行时所绑定的具体代码,让程序可以选择多个运行状态,这就是多态性,多态增强了软件的灵活性和扩展性。这里可以举个例子,比如声明时使用的是动物类,调用时传递的是一个猫类(动物类的子类)的对象,具体执行父类里动物——吃的方法时,实际执行的是猫——吃的方法。
6.abstract class和interface有什么区别?
1、抽象类里面可以用普通方法,而接口中的方法全部都是抽象的;
2、在应用范围上来说,接口往往在程序设计的时候,用来定义程序模块的功能,方便各模块协同工作;抽象类是对相似类进行抽象,形成一个抽象的父类可供重用!
7.如何理解Java中的Serialization和Deserialization。
串行化(serialization)是指将一个对象的当前状态转换成字节流(a stream of bytes)的过程,
而反串行化(deserialization)则指串行化过程的逆过程,将字节流转换成一个对象,打回原形。
8.String是最基本的数据类型吗?
1、String是个类,不是基本数据类型;
2、基本数据类型包括byte、int、char、long、float、double、boolean和short。
9.如何实现字符串的反转及替换。
1.通过jdk自带reverse的方法
public class InvertString { public static void main(String[] args) { String a="abcde"; StringBuilder b = new StringBuilder(a); System.out.print(b.reverse().toString()); } }注:String类本身没有反转类,需要包装成Stringbuiler或者是StringBuffer类。
2.通过自己写循环。
利用String.toCharArray()方法,将String转成一个char型数组,然后用数组遍历的方式从后向前遍历。
public String reverse(String s){ char ch[] = s.toCharArray(); int start = 0, end = ch.length-1; char temp; while(start<end){ temp = ch[start]; ch[start] = ch[end]; ch[end] = temp; start++; end--; } String s1 = String.copyValueOf(ch); return s1; }或者是这样
public static String reverse2(String s) { int length = s.length(); String reverse = ""; for (int i = 0; i < length; i++) reverse = s.charAt(i) + reverse; return reverse; }
10.String s = new String("xyz");创建了几个字符串对象。
两个对象,要理解这个,就要知道string类的工作原理。
public class StringTest { public static void main(String[] args){ String s1="Hello"; String s2="Hello"; String s3=new String("Hello"); System.out.println("s1和s2 引用地址是否相同:"+(s1 == s2)); System.out.println("s1和s2 值是否相同:"+s1.equals(s2)); System.out.println("s1和s3 引用地址是否相同:"+(s1 == s3)); System.out.println("s1和s3 值是否相同:"+s1.equals(s3)); } }输出结果:
s1和s2 引用地址是否相同:true
s1和s2 值是否相同:true
s1和s3 引用地址是否相同:false
s1和s3 值是否相同:true
其他面试题:
Java实习生常规技术面试题每日十题Java基础(三)的更多相关文章
- Java实习生常规技术面试题每日十题Java基础(八)
目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...
- Java实习生常规技术面试题每日十题Java基础(七)
目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...
- Java实习生常规技术面试题每日十题Java基础(六)
目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...
- Java实习生常规技术面试题每日十题Java基础(五)
目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...
- Java实习生常规技术面试题每日十题Java基础(四)
目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...
- Java实习生常规技术面试题每日十题Java基础(二)
目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...
- Java实习生常规技术面试题每日十题Java基础(一)
目录 1.Java 的 "一次编写,处处运行"如何实现? 2.描述JVM运行原理. 3.为什么Java没有全局变量? 4.说明一下public static void main(S ...
- Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor
Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...
- java开发师笔试面试每日12题(3)
1.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序的Java虚拟机.它同时也包含了执行applet需要的浏览器插件.Java开发工具包(JDK)是完整的Java软件开 ...
随机推荐
- redis入门到精通系列(四):Jedis--使用java操作redis详解
(一)前言 如果不把数据库和后端语言联系起来,就起不到数据库应该要起到的作用.Java语言通过JDBC操作mysql,用Jedis操作redis.当然了,java操作redis的方式不止jedis一种 ...
- entfrm-boot开发平台功能介绍【entfrm开源模块化无代码开发平台】
简介 entfrm开发平台,是一个以模块化为核心的无代码开发平台,是一个集PC和APP快速开发.系统管理.运维监控.开发工具.OAuth2授权.可视化数据源管理与数据构建.API动态生成与统计.工作流 ...
- 【力扣】973. 最接近原点的 K 个点
我们有一个由平面上的点组成的列表 points.需要从中找出 K 个距离原点 (0, 0) 最近的点. (这里,平面上两点之间的距离是欧几里德距离.) 你可以按任何顺序返回答案.除了点坐标的顺序之外, ...
- 可恶的Math.random()
生成随机数1-10 (包含1和10) 结果是这样的:Math.floor(Math.random()*10+1) 那么问题又来了 Math.floor(Math.random()*10)生成的只 ...
- Linux_ShellCode总结
在寄存器都是非理想值情况下(shellcode可根据环境具体触发时寄存器的值做长度调整),我本着最优通用的原则,整理了Linux下32位和64位最短通用shellcode的编写. 32位 有" ...
- ciscn_2019_s_3 一道收获很多的题(进步大只能说明基础差)
32位与64位 系统调用的区别: 1. 传参方式不同 2. 系统调用号 不同 3. 调用方式 不同 32位: 传参方式:首先将系统调用号 传入 eax,然后将参数 从左到右 依次存入 ebx,ecx, ...
- 使用CCS10新建TMS320F28335工程并闪烁LED(流水灯)程序
学习TMS320F28335使用Code Composer Studio 10.4.0下载和安装本文不再叙述. 1. 新建工程 1.1选择目录新建工作区 1.2打开软件界面如下图所示: 1.3选择新建 ...
- 显示大纲数字(Project)
<Project2016 企业项目管理实践>张会斌 董方好 编著 话说摘要任务,给人的感觉,就像Word里的大纲级别,可我也知道,好多同学不习惯用大纲级别,而是偏爱用编号级别,最常见的也就 ...
- C# 将PDF转为线性化PDF
线性化PDF文件是PDF文件的一种特殊格式,可以通过Internet更快地进行查看.线性化的PDF,在页面数量很多的情况下,更能突出表现出快速浏览的优势.下面是通过后端.NET程序实现将PDF文件转为 ...
- linux安装软件系列之yum安装
自动搜索最快镜像插件: yum install yum-fastestmirror 安装yum图形窗口插件: yum install yumex 1.安装 yum install 全部安装 yum i ...