前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java基础面试题(上)

java基础面试题(上)

作者头像
jiankang666
发布2022-05-12 21:48:37
1870
发布2022-05-12 21:48:37
举报
文章被收录于专栏:java基础笔记java基础笔记

一、static作用

static可以修饰内部类、方法、变量、代码块。

1、staic修饰的类是静态内部类,当声明一个事物是static时,就意味着这个域的方法不会与任何实例对象关联在一起,不用创建实例对象,就可以调用其static方法或者static域

类名.方法

2、static修饰的方法是静态方法,属于当前类,不属于某个对象,不能被重写,可以直接用类名来调用,不能用super或者this关键字。好处:可以在不创建任何对象的前提下调用。

3、修饰的变量是静态变量或者类变量,能够被所有的实例共享,在内存中只有一份,所有的实例对象的变量都指向它。

代码语言:javascript
复制
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方法上加泛型。例如:

代码语言:javascript
复制
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慢一点。

代码语言:javascript
复制
public synchronized int capacity() {
          return value.length;
      }

4、StringBuilder是线程不安全的,底层没有加同步锁。

由于以上的区别,对使用提出以下意见:

(1)如果要操作少量的数据用:String

(2)单线程操作字符串缓冲区 下操作大量数据 :StringBuilder

(3)多线程操作字符串缓冲区 下操作大量数据 :StringBuffer

三、总结

以上就是一些面试题内容,,希望大家学到 ,可以参考一下

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-01-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 java基础笔记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、static作用
  • 二、==和equals的区别
  • 三、List集合的实现类有哪些?
  • 四、泛型的作用?
  • 五、String StringBuffer StringBuilder的区别?
  • 三、总结
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档