java 基本知识回顾1

基本类型介绍:

       java提供了八种基本类型,六种数字类型(四个整数型,两个浮点型),一种字符类型,一种布尔类型。

八大类型:byte,short,int,long,float,double,boolean,char

float,double小数位精度是多少?为什么?

float是7位,double是16位。原因是float的尾数位是23位,float的尾数位是52位,用2的负23次方就得到它的精度,double也是同样的。

变量类型介绍

       所有的变量在使用之前都必须声明,类变量独立于方法之外的,用static修饰;实例变量独立与方法之外,不用static修饰;局部变量,是不可被其他方法访问,当执行完成后就会被销毁;ThreadLocal是线程共享变量。

threadLocal为何要保持remove习惯?

因为是线程共享变量,当A修改了该变量,而没有修改时,那么B再访问进来实际拿到的是A修改后的对象。

引用介绍

       强引用:强引用对象,垃圾回收器不会回收它,当内存不足也不会释放,则会抛出OOM。

       软引用:软引用对象,垃圾回收器会在适当的时候回收它,例如内存空间不足时。

       弱引用:弱引用对象,若是垃圾回机器扫描到就会回收它。

       虚引用:当一个对象仅持有虚引用,那么它就和没有任何引用一样,随时可能被回收。

引用类型 被垃圾回收时间 用途 生命周期
 强引用 不会 对象的一般状态 JVM停止运行时
软引用 当内存不足 对象缓存 内存不足时
弱引用 在垃圾回收时 对象缓存 GC运行后
虚引用 Unknow Unknow Unknow

 

 

 

 

 

 

数据类型传递

数据传递类型一般有两种,引用传递和值传递,java中只存在值传递。

访问修饰符

修饰符 当前类 同一包内 子孙类(同包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N N
default Y Y Y N N
private Y N N N N

 

 

 

 

 

 

非访问修饰符

static:用来修饰类方法和类变量

final:用来修饰类,方法,变量

abstract:用来创建抽象类和抽象方法

Synchronized:关键字声明的方法同一时间只能被一个线程访问

transient:序列化的对象包含被transient修饰的实例变量

volatile:修饰的成员变量在每次被线程访问时,都强制从共享内存中重新读取该成员变量的值

序列化

       序列化的主要用途主要有两个,一个是对象持久化,另一个是跨网络的数据交换、远程过程调用。

       json(JavaScript Object Notation)序列化一种更轻、更友好的用于接口(AJAX、REST等)数据交换的格式。 JSON是结构化数据串行化的文本格式,作为XML的一种替代品,用于表示客户端与服务器间数据交换有效负载的格式。它是从ECMAScript语言标准衍生而来的。JSON的设计目标是使它成为小的、轻便的、文本的,而且是JavaScript的一个子集

       与Serialization比较:

1.长度的比较:serialize在编码后大概是json的两倍

2.速度的比较:serialize的速度在大数据量的情况下比json差了快一个数量级

3.处理对象:json无法处理对象方法等数据

4.使用范围:序列化使用serialize,特别是对象的存储。与对象无关的数据存储可以使用json,如包含大量数字的数组,数据交换时使用JSON           

 

你可能感兴趣的:(java,java,基础知识回顾)