目录

1.是否可以从一个static方法内部发出对非static方法的调用?

2.Integer与int的区别?

3.Overload和Override的区别。参数列表相同,返回值不同的方法,是否是重载方法?

4.接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)?

5.面向对象有哪三大特性?

6.abstract class和interface有什么区别?

7.如何理解Java中的Serialization和Deserialization。

8.String是最基本的数据类型吗?

9.如何实现字符串的反转及替换。

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、基本数据类型包括byteintcharlongfloatdoublebooleanshort

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基础(七)

Java实习生常规技术面试题每日十题Java基础(六)

Java实习生常规技术面试题每日十题Java基础(五)

Java实习生常规技术面试题每日十题Java基础(四)

Java实习生常规技术面试题每日十题Java基础(三)

Java实习生常规技术面试题每日十题Java基础(二)

Java实习生常规技术面试题每日十题Java基础(一)

Java实习生常规技术面试题每日十题Java基础(三)的更多相关文章

  1. Java实习生常规技术面试题每日十题Java基础(八)

    目录 1.解释内存中的栈(stack).堆(heap)和静态区(static area)的用法. 2.怎样将GB2312编码的字符串转换为ISO-8859-1编码的字符串? 3.运行时异常与受检异常有 ...

  2. Java实习生常规技术面试题每日十题Java基础(七)

    目录 1. Java设计模式有哪些? 2.GC是什么?为什么要有GC? 3. Java中是如何支持正则表达式. 4.比较一下Java和JavaSciprt. 5.Math.round(11.5) 等于 ...

  3. Java实习生常规技术面试题每日十题Java基础(六)

    目录 1.在Java语言,怎么理解goto. 2.请描述一下Java 5有哪些新特性? 3.Java 6新特性有哪些. 4.Java 7 新特性有哪些. 5.Java 8 新特性有哪些. 6.描述Ja ...

  4. Java实习生常规技术面试题每日十题Java基础(五)

    目录 1.启动一个线程是用run()还是start()? . 2.线程的基本状态以及状态之间的关系. 3.Set和List的区别,List和Map的区别? 4.同步方法.同步代码块区别? 5.描述Ja ...

  5. Java实习生常规技术面试题每日十题Java基础(四)

    目录 1.String 和StringBuffer的区别. 2.数组有没有length()这个方法? String有没有length()这个方法? 3.final, finally, finalize ...

  6. Java实习生常规技术面试题每日十题Java基础(二)

    目录 1. JAVA 的反射机制的原理. 2.静态嵌套类(Static Nested Class)和内部类(Inner Class)的不同? 3.如何将String类型转化成Number类型. 4.什 ...

  7. Java实习生常规技术面试题每日十题Java基础(一)

    目录 1.Java 的 "一次编写,处处运行"如何实现? 2.描述JVM运行原理. 3.为什么Java没有全局变量? 4.说明一下public static void main(S ...

  8. Java Spring Boot VS .NetCore (十) Java Interceptor vs .NetCore Interceptor

    Java Spring Boot VS .NetCore (一)来一个简单的 Hello World Java Spring Boot VS .NetCore (二)实现一个过滤器Filter Jav ...

  9. java开发师笔试面试每日12题(3)

    1.JDK和JRE的区别是什么? Java运行时环境(JRE)是将要执行Java程序的Java虚拟机.它同时也包含了执行applet需要的浏览器插件.Java开发工具包(JDK)是完整的Java软件开 ...

随机推荐

  1. android studio 编译NDK android studio 生成.so文件

    详细配置使用请移步:https://www.jianshu.com/p/4c7d9a10933b android studio NDK 编译 第一步: app/build.gradle下面 添加代码: ...

  2. js处理title超长问题

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/ ...

  3. Spring Cloud 和dubbo

    一.SpringCloud微服务技术简介 Spring Cloud 作为Java 语言的微服务框架,它依赖于Spring Boot,有快速开发.持续交付和容易部署等特点.Spring Cloud 的组 ...

  4. ERROR: Command errored out with exit status 1:安装pip3 install --user pyecharts==0.5.11失败问题总结

    一.前言:最近在学习pyecharts学习到Grid时候发现代码无法运行了,经过在网上查找资料说是pyecharts版本不适配了,之前的版本是 pip install pyecharts==0.1.9 ...

  5. hbuilder打包app基本流程

    声明:本文可能用到一些工具和第三方网站,都是为了达到目的而使用的工具,绝不含有广告成分 1.下载.最新的Hbuilder X貌似不能直接创建移动app了(自己不会用),建议旧版.可去腾某讯软件中心下载 ...

  6. [BUUCTF]PWN——jarvisoj_level1

    jarvisoj_level1 附件 步骤: 例行检查,32位程序,没有开任何保护 本地运行一下程序,看看大概的情况,可以看到输出了一个地址 32位ida载入,习惯性的检索程序里的字符串,没有发现可以 ...

  7. ORALE 误删表 Flashback 恢复表

    昨天因为种种原因误删了很多表(160多个),一下炸了锅. 我知道影响很大,第一时间想到使用 Flashback 恢复过来.Flashback 听过很久,但是没真正上手过,恢复之后发现使用起来也很简单. ...

  8. HTTP强缓存和协商缓存

    一.浏览器缓存 Web 缓存能够减少延迟与网络阻塞,进而减少显示某个资源所用的时间.借助 HTTP 缓存,Web 站点变得更具有响应性. (一).缓存优点: 减少不必要的数据传输,节省带宽 减少服务器 ...

  9. JeeSite Spring Cloud安装搭建

    引言 JeeSite Cloud 具备 JeeSite 4.x 的所有功能,是在 JeeSite 4.x 基础之上,完成的 Spring Cloud 分布式系统套件的整合.它利用 JeeSite 4. ...

  10. 通过idea创建Maven项目整合Spring+spring mvc+mybatis

    创建项目 File→new→project             然后就不断next直到项目面板出来 设置文件夹         注意:这里我个人习惯,在java下还建了ssm文件夹,然后再cont ...