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运行后
虚引用UnknowUnknowUnknow

 

 

 

 

 

 

数据类型传递

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

访问修饰符

修饰符当前类同一包内子孙类(同包)子孙类(不同包)其他包
publicYYYYY
protectedYYYY/NN
defaultYYYNN
privateYNNNN

 

 

 

 

 

 

非访问修饰符

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           

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值