首页 / 面试 / java常见面试题(上)
java常见面试题(上)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java常见面试题(上),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2904字,纯文字阅读大概需要5分钟。
内容图文
![java常见面试题(上)](/upload/InfoBanner/zyjiaocheng/834/178b91b7f826431a824174392fada548.jpg)
一、static作用
static可以修饰内部类、方法、变量、代码块。
1、staic修饰的类是静态内部类,当声明一个事物是static时,就意味着这个域的方法不会与任何实例对象关联在一起,不用创建实例对象,就可以调用其static方法或者static域
类名.方法
2、static修饰的方法是静态方法,属于当前类,不属于某个对象,不能被重写,可以直接用类名来调用,不能用super或者this关键字。好处:可以在不创建任何对象的前提下调用。
3、修饰的变量是静态变量或者类变量,能够被所有的实例共享,在内存中只有一份,所有的实例对象的变量都指向它。
package demo;
public class aa {
public static class aaa{
static int a=0;
}
public static void main(String[] args) {
System.out.println(aaa.a);
}
}
4、修饰的代码块叫静态代码块,整个类加载的过程中只会执行一次。可以优化程序。
二、==和equals的区别
1、==:比较的是变量(栈)内存中存放的对象的(堆)内存地址,用来判断两个对象的地址是否相同,即是否是指相同一个对象。比较的是真正意义上的指针操作。
2、equals:比较两个对象的内容是否相等。
三、List集合的实现类有哪些?
主要有LinkedList、ArrayList、Vector。
1、ArrayList:底层依赖数组,查询效率高,做插入、删除效率低,线程不安全。
2、LinkedList:底层采用双向循环链表,增删效率高,查询效率低,线程不安全。
3、Vector:底层依赖数组,查询效率高(比ArrayList低,LinkedList高),增删效率低,线程安全。
三者的元素都是有序,可重复,允许null值的。
四、泛型的作用?
泛型的本质是参数化类型,所操作的数据类型作为一个参数,用在类、接口、方法的创建中。这些泛型类,泛型接口、泛型方法可以看作用指定类型作占位符,从而指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性。这带来的好处:
1、类型安全:编译器可以在编译时验证类型。不符合参数类型的不能编译通过。
2、消除强制类型转换:消除源代码中的许多强制类型转换。增加了可读性。
另外补充一点:泛型方法使得方法能够独立于类而产生变化。通过使用泛型方法取代将整个类泛型化。对于一个static方法,在需要给它泛型化时,我们肯定不能通过给类加泛型实现,因为该静态方法是无法访问泛型类的类型参数,只能在该static方法上加泛型。例如:
public class aa {
public static <T> void f(T x) {
System.out.println(x.getClass().getName());
}
public static void main(String[] args) {
aa aa=new aa();
aa.f("11");//结果:java.lang.String
aa.f(11);//结果:java.lang.Integer
aa.f(111.1f);//结果:java.lang.Float
aa.f(111.1);//结果:java.lang.Double
}
}
五、String、StringBuffer、StringBuilder的区别:
1、String对象是不可变的,具有只读特性,指向他的任何引用都不可能改变他的值。任何一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,线程安全。
2、StringBuffer对象和StringBuilder对象是可变的,底层用字符数组保存字符变量,每次结果都会对对象本身进行操作,在改变对象引用(无新的对象生成)。
3、后两者有区别,StringBuffer是线程安全的,加了同步锁。部分代码如下:处理数据比StringBuilder慢一点。
public synchronized int capacity() {
return value.length;
}
4、StringBuilder是线程不安全的,底层没有加同步锁。
由于以上的区别,对使用提出以下意见:
如果要操作少量的数据用: String
2.单线程操作字符串缓冲区 下操作大量数据 :StringBuilder
3.多线程操作字符串缓冲区 下操作大量数据 : StringBuffer
内容总结
以上是互联网集市为您收集整理的java常见面试题(上)全部内容,希望文章能够帮你解决java常见面试题(上)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。