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软件开 ...
随机推荐
- 手淘lib-flexible布局适配方案
前置知识:什么是rem CSS3新增的一个相对单位rem(root em,根em).rem是相对于根节点(或者是html节点).如果根节点设置了font-size:10px;那么font-size:1 ...
- eclipse上安装 windowBuilder方法
最近因为需要用java Swing做一些组件设计,但想想以前在大学时候为了布局组件和位置设计花了很多时间.所以再网上查了一些带有可视化的设计插件用来提高工作效率. 其中一个是 windowBuilde ...
- oracle 拆分字符串
WITH t AS (SELECT '1-2-3-4' a FROM dual)SELECT Regexp_Substr(a, '[^-]+', 1, LEVEL) i FROM tCONNECT B ...
- How exactly does Google AdWords work?
The key to how Google AdWords works is the Quality Score. Quality Score is generally how well an ad ...
- implicit declaration of function 'NSFileTypeForHFSTypeCode' is invalid in c99
问题:implicit declaration of function 'NSFileTypeForHFSTypeCode' is invalid in c99 解决办法: 在出现该问题的函数前后加上 ...
- Linux:find命令中
默认情况下, find 每输出一个文件名, 后面都会接着输出一个换行符 ('\n'), 因此我们看到的 find 的输出都是一行一行的: ls -l total 0 -rw-r--r-- 1 root ...
- Oracle学习笔记(1)
折腾了好久 终于把oracle安装成功了.小兴奋下. 创建了一个数据库 dabook. run--> Services.msc查看服务: 可以看到DABOOK的服务已启动. 1,sys用户 在c ...
- 莫烦python教程学习笔记——learn_curve曲线用于过拟合问题
# View more python learning tutorial on my Youtube and Youku channel!!! # Youtube video tutorial: ht ...
- 【JAVA今法修真】 第一章 今法有万象 百家欲争鸣
大家好,我是南橘,因为这段时间很忙,忙着家里的事情,忙着工作的事情,忙着考试的事情,很多时候没有那么多经历去写新的东西,同时,也是看了网上一些比较新颖的文章输出方式,自己也就在想,我是不是也可以这样写 ...
- 让你用Markdown的方式来做PPT
也许你是以为代码高手,Markdown写作高手,但你是PPT高手吗? 你的成绩有没有被PPT高手抢走过呢? 不会作精美PPT是不是很头疼呢? 今天就给大家介绍了一款PPT制作利器:Slidev~ 说S ...