java基础的简单整理

关于一些java基础的知识点,网上一搜一大把,只是稍微整理了一下,后面慢慢补充,后续我会把工作中用到的微信支付,支付宝支付,学习过的集合,多线程,线程池,以及框架我会整理出来的,加油奋斗吧,同学。

一.关于equals与==的区别与理解

==如果比较的是基本数据类型的变量,就是对比他们的值是否相同。

如果比较的是引用类型的变量,比较的就是所指向对象的地址。

equals不能用于基本数据类型的比较

如果没有对equals进行重写的话,就相当于==,进行重写的话,比较的是对象的内容

(对象的地址)简单说明:就是系统自动为你定义的变量或者常量开辟的一段内存空间地址。对系统来说是有固定的值。

(基本数据类型)简单说明:如下

基本数据类型分为了整数类型,浮点类型,字符型和布尔型
整数类型有byte,short,int,long
浮点类型有float与double
字符型有char
布尔型有boolean
用取值范围进行排序大小double > float > long > int > short > byte

二。String,StingBuffer,StringBuilder

String:他是不可变的字符序列,线程安全的。不可变的原因是因为被final关键字所修饰的

(关于final关键字后续会说明)

StringBuffer:他是可变字符序列,效率比较低,是线程安全的(因为里面的方法都被synchronized加锁了)

效率比较低且是安全的可以这样理解,因为每个方法都进行synchronized加锁,它能够保证同一时刻最多一个执行,这样保证数据不会出现问题(安全),你可以理解为串行运行(就是依次执行完)所以效率教慢

StringBuffer():默认初始容量为16

StringBuffer(int size):构造指定容量的字符串缓冲区

StringBuffer(String str):将内容初始化为指定字符串内容

StringBuilder:跟StringBuffer大致相同,他也是可变字符序列,但效率最高,是线程不安全的

使用场景:

1、如果字符串中存在大量的修改操作而且在单线程的情况下,使用StringBuilder。

2、如果字符串中存在大量的修改操作而且在多线程的情况下,使用StringBuffer。

3、如果字符串修改很少、被多个对象引用,使用String。这个在配置信息的时候应用广泛。

三。关于final关键字的含义及用法

  1. final关键字表示最终的,不可变的

  1. final还可以修饰变量,方法,还有类

  1. final修饰的类无法被继承,无法被重写

一般用于修饰的变量称为“常量”,常量名建议大写,每个单词间用下划线衔接。

四。String常用的方法

1.常见String类的获取功能

a.length:获取字符串长度

b.split:通过符号对字符串的剪切

c.subString(int start):从指定位置开始截取字符串,默认到末尾

d.subString(int start,int end)从指定位置开始截取到指定为值结束

2.常见String类的判断功能

  1. equals(Object obj):比较字符串的内容是否相同,区分大小写

  1. contains(String str):判断字符串中是否包含传递进来的字符串

  1. startsWith(String str):判断字符串是否以传递进来的字符串开头

  1. endsWith(String str):判断字符串是否以传递进来的字符串结尾

  1. isEmpty();判断字符串是否为空串“”

3.常见String类的转换功能

a.getBytes():把字符串转换为字节数组

b.toCharArray():把字符串转换为字符数组

c.valueOf():把字符数组转为字符串

d.toLowerCase(): 把字符串转成小写

e.toUpperCase(): 把字符串转成大写;

五。关于普通类,接口,抽象类的区别

我大致总结了一点

  1. 普通类可以实例化,接口都不能被实例化(没有构造方法),抽象类如果要实例化,直接重写自己的抽象方法

  1. 抽象类要被子类继承,接口要被子类实现

  1. 抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类的抽象方法,那么该子类只能是抽象类。子类实现接口的时候,如果不能全部实现接口方法,那么该类只能是抽象类。

  1. 抽象类里可以没有抽象方法。

  1. 接口可以继承接口,并可多继承接口,但类只能单继承。

  1. 抽象类是通过abstract修饰的,接口是通过interface修饰的

六。java的IO流

1、按流划分,可以分为输入流和输出流;

2、按单位划分,可以分为字节流和字符流;

字节流:inputStream、outputStream;

字符流:reader、writer;

七。java反射的理解

程序运行中,可以构造任意一个类的对象,可以知道一个类的成员变量和方法,可以调用任意一个对象的属性和方法

实现反射的三种方式有

  1. 调用某个对象的getClass方法以获取该类的Class对象

  1. 调用某个类的Class属性以获取该类对应的Class对象

  1. 调用Class类中的forName静态方法获取该类对象,这是最安全也是性能最好的方法

八。为什么要使用克隆?深拷贝与浅拷贝的区别?

  1. 为什么使用克隆?

想对一个对象进行复制,又想保留原有的对象进行接下来的操作,这个时候就需要克隆了。

  1. 深拷贝与浅拷贝的区别?

浅拷贝:仅仅克隆基本类型变量,不克隆引用类型变量;

深克隆:既克隆基本类型变量,又克隆引用类型变量;

九throw与throws的区别

throw作用在方法内,表示抛出具体异常,由方法体内的语句处理,一定抛出异常。由技术人员进行封装和捕获。

throws作用在方法的声明上,表示抛出异常,由调用者来进行异常处理,可能会出现异常,也可能不会

十。final,finally,finalize有什么区别

final可以修饰类,变量,方法,修饰的类不能被继承,修饰的变量不能重新赋值,修饰的方法不能被重写

finally用于抛异常,finally代码块内语句无论是否发生异常,都会在执行finally,常用于一些流的关闭以及lock锁的手动释放

finalize方法用于垃圾回收。

十一java中的引用类型的理解

  1. 强引用

java中默认声明的就是强引用,如

只要强引用存在(o=null),垃圾回收器将永远不会回收被引用的对象

  1. 软引用

在内存足够的时候,软引用对象不会被回收,只有在内存不足时,系统则会回收软引用对象,如果回收了软引用对象之后仍然没有足够的内存,才会抛出内存溢出异常

  1. 弱引用

无论内存是否足够,只要 JVM 开始进行垃圾回收,那些被弱引用关联的对象都会被回收

  1. 虚引用

如果一个对象仅持有虚引用,那么它就和没有任何引用一样,它随时可能会被回收,虚引用必须要和 ReferenceQueue 引用队列一起使用.

十二关于static关键字

静态变量:声明变量的时候使用了static关键字,静态变量只在类加载的时候获取一次内存空间

静态方法:在一个方法上加上static关键。

  • 静态方法属于这个类而不是这个类的对象;

  • 调用静态方法的时候不需要创建这个类的对象;

  • 静态方法可以访问静态变量。静态方法不能访问非静态变量和调用非静态方法

为什么不允许从静态方法中访问非静态变量?

静态变量属于类本身,在类加载的时候就会分配内存,可以通过类名直接访问;

非静态变量属于类的对象,只有在类的对象产生时,才会分配内存,通过类的实例去访问;

静态方法也属于类本身,但是此时没有类的实例,内存中没有非静态变量,所以无法调用。

十三java的重写与重载?什么时候用重写和重载?

重载是多态的集中体现,同类中要有相同的方法名,参数个数不一致。返回类型不一定要相同。

重载的使用(在类中,要以统一的方式处理不同类型数据的时候,可以用重载。)

重写是建立在继承关系上,重写的返回类型,方法名和参数列表相同,

重写的使用(增加新的功能,可以用重写)

十四实例化对象的方式

  1. 用 new的方式

  1. 通过反射的方式获取Class.forName("类的路径")

  1. 通过clone();

  1. 序列化与反序列化

十五关于工作中的理解break,return

  1. switch中return和break的作用是不一样的。

break是直接退出switch语句,如果循环里面有switch语句,这时候break只是跳出switch语句,作用不到循环体,return是退出该函数,也就是switch连后面的语句也不执行了。

  1. 使用break和return结束循环

break用于结束一个循环,即跳出循环体,执行循环体之后的代码。但是只能结束最靠近的那一层循环。

return关键字不是专门用于结束循环,return的功能是结束一个方法。当一个方法遇到return语句时,这个方法将被结束。方法结束 ,执行权回到方法调用处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

~渊

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值