小白一定要懂的Java知识

面向对象的特性

https://blog.csdn.net/qq_43037478/article/details/114319125

Java中访问修饰符访问范围


String跟StringBuffer跟StringBulider区别?

String是不可变的,每次修改都会分配一块内存空间

StringBuffer是线程安全的,长度可变

StringBuilder是非线程安全的,长度可变

JDK和CGLib的区别

  • JDK动态代理只能对实现了接口的类生成代理,而不能针对类
  • CGLib是针对类实现代理,主要是对指定的类生成一个子类(使用字节码技术生成代理类),覆盖其中的方法(继承)

Spring在选择用JDK还是CGLib的依据

  • 当Bean实现接口时,Spring就会用JDK的动态代理
  • 当Bean没有实现接口时,Spring使用CGLib来实现

抽象类跟接口的区别?

1.抽象类可以有构造方法,接口中不能有构造方法。

2.抽象类中可以有普通成员变量,接口中没有普通成员变量

3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。

4. 抽象类中的抽象方法的访问类型可以是public,protected和(默认类型,虽然

eclipse下不报错,但应该也不行),但接口中的抽象方法只能是public类型的,并且默认即为public abstract类型。

5. 抽象类中可以包含静态方法,接口中不能包含静态方法

6. 抽象类和接口中都可以包含静态成员变量,抽象类中的静态成员变量的访问类型可以任意,但接口中定义的变量只能是public static final类型,并且默认即为public static final类型。

7. 一个类可以实现多个接口,但只能继承一个抽象类。

普通类和抽象类有哪些区别?

普通类:不能有抽象方法,可以直接实例化

抽象类:可以有抽象方法,不能直接实例化

枚举类跟常量类的区别?

1、枚举常量更简单,枚举只需要定义每个枚举项,不需要定义枚举值,而接口常量(或类常量)则必须定义值(还需要修饰符public static final),否则编译通不过

2、枚举具有内置方法,因为每个枚举都是java.lang.Enum的子类,该类提供了如排序值ordinal,compareTo比较方法,简化了常量访问。

如:for(枚举类 s: 枚举类.values()){
             system.out.print(s);
        }

3、枚举常量稳定:不用校验已经限定了XX枚举,如果想要输入一个int类型是不通过的,这也是我们最看重枚举的地方:在编译期限定类型

4、枚举常量的缺点:不可继承,无法扩展,但是一般常量在构件时就定义完毕了,不需要扩展。

JAVA三大内置注解

@Override 注解:方法重写

@Suppresswarnings 注解:可以达到抑制编译器编译时产生警告的目的

@Deprecated 注解:被@Deprecated修饰的类、方法、变量等表示不建议使用的,可能会出现错误的

HashCode相同,对象一定相同吗?

回答:HashCode相同,对象不一定相同,因为通过对象计算HashCode的时候可能发生Hash碰撞,导致不同对象为相同的Hash值,而对象相同的话,HashCode一定相同。

Java类的加载过程?(比较重要,面试问的多的,同时也是考察你对内存分配的了解)

1、类加载

查找并加载类的二进制数据

2、链接

字节码校验器校验生成的字节码是否正确

分配内存并初始化默认的静态变量

内存引用被方法区的原始引用取代

3、初始化

类加载的最后阶段,为所有静态变量赋予初始值,并执行静态块代码

具体加载过程看这里:https://blog.csdn.net/weixin_37766296/article/details/80545283?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control

Set,List,Map的区别?

详细区别传送门:https://blog.csdn.net/qq_43037478/article/details/112439992

get 和 post 请求有哪些区别?

GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。

GET请求在URL中传送的参数是有长度限制的,而POST么有。

GET请求会被浏览器主动cache,而POST不会,除非手动设置。

GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。

GET参数通过URL传递,POST放在Request body中。

深拷贝和浅拷贝区别是什么?

浅复制:仅仅是指向被复制的内存地址,如果原地址发生改变,那么浅复制出来的对象也会相应的改变。

深复制:在计算机中开辟一块新的内存地址用于存放复制的对象。

== 和 equals 的区别是什么?

一、对象类型不同

1、equals():是超类Object中的方法。

2、==:是操作符。

二、比较的对象不同

1、equals():用来检测两个对象是否相等,即两个对象的内容是否相等。

2、==:用于比较引用和比较基本数据类型时具有不同的功能。

调用第三方接口有几种方式?

远程rpc,pom文件依赖,直接jar包导入

猜你喜欢

转载自blog.csdn.net/qq_43037478/article/details/114699313