3.1.java基础

基本数据类型

a.8种基本数据类型:byte、short、int、long、float、double、char、boolean;

byte,short,int,long都是有符号的二进制补码表示的,第一位为符号位,‘0’表示正,‘1’表示负;正数的补码为本身;负数的补码为将除符号位以外的所有位取反后加1,符号位不变;0的补码为本身;

float为单精度的浮点数,32位分为3段,1位符号位,8位指数位,23位尾数位。

指数位范围0~255,格式2^E-127,即范围为-127-128,但由于指数全0或者全1,为非正规形式,所以范围为-126-127。

float为双精度的浮点数,64位分为3段,1位符号位,11位指数位,52位尾数位。

Java float和double精度范围大小_double范围值的大小_tianmd_Eric的博客-CSDN博客

b.java基本类型:

byte (Byte) 1字节 -2^7--2^7-1

short (Short) 2字节 -2^15--2^15-1

int (Integer) 4字节 -2^31--2^31-1

long (Long) 8字节 -2^63--2^63-1

float (Float) 4字节

double (Double) 8字节

char (Character) 2字节 16位Unicode字符

boolean (Boolean) 1位 true/false

运算符(按功能分类)

a.算术运算符

~(按位取反),-(负号运算符)

b.位运算符

&(位与):运算时把运算数转化为二进制,相同位上均为1结果为1,否则为0。

~(位非):取反,0变1,1变0。

|(或):当两边存在1时,结果为1,否则为0。

^(异或):两边结果相同为0,不同为1。

>>(带符号右移):正数右移,左边补0;负数右移,左边补1。

>>>(无符号右移):正负数右移,左边均补0。

由于无符号左移和带符号左移意义相同,所以Java不存在无符号左移。

异常

1.博客:

详解Java中的异常(Error与Exception):

Java:详解Java中的异常(Error与Exception)_王小二(海阔天空)的博客-CSDN博客:

2.分类:

a.Exception可分为运行时异常与编译时异常

运行时异常:是RuntimeException类及其子类异常,表示“JVM常用操作”引发的异常。可根据需求自定义运行时异常。

常见:IndexOutOfBoundException、NullPointerException、ArithmeticException(算数异常)...

编译时异常:是继承Exception类的除RuntimeException以外的异常,从程序角度讲是必须处理的异常,否则,程序编译不通过。一般情况下不自定义编译时异常。

常见:IOException、SQLExceptiom、InterruptedException...

b.Throwable分为可查异常(checked exception)和不可查异常(unchecked exception):

可查异常(编译器要求必须处理的异常):范围与编译时异常相同

不可查异常(编译器不要求强制处理的异常):包括运行时异常和错误(Error)。

3.关系:

Throwable—————— Exception————————RuntimeException

|___________ Error |_____________编译时异常(e.g.)

4.异常处理:

抛出异常:方法中使用throw抛出异常,声明方法时必须使用throws抛出异常,多种异常","隔开。

捕获异常:try-catch捕获异常,多个catch字句应尽量将详细异常放在前面,相对高层的异常放在后面,避免详细的异常catch被屏蔽。

5.finally

a.finally的执行顺序早于finally包含的程序块外的return执行,但外面的return结果不会受finally程序块而影响,

try {

int a = 10;

return a;

} finally {

a = 20;

};返回值依然为10。

b.发生以下情况是,finally的程序块不一定被执行:

在finally语句块中发生异常;

finally代码块之前执行了System.exit()退出程序;

程序所在线程死亡;

关闭CPU。

Java关键字

博客

java中volatile关键字详解:

https://www.cnblogs.com/zhengbin/p/5654805.html

让你彻底理解volatile:

让你彻底理解volatile - 简书

彻底理解valatile关键字:

https://www.cnblogs.com/wangwudi/p/12303772.html

violatile怎么保证可见性的从 volatile 说起,可见性和有序性是什么_alinshen的博客-CSDN博客

1.volatile

volatile修饰的变量保证对所有线程的可见性;vilotile修饰的变量禁止指令重排序优化。

2.native

使用native关键字说明这个方法是原生函数,也就是这个方法使用C/C++语言实现的,并且被编译成DLL,由Java去调用,这些函数的实现体是在DLL中,JDK的源代码不包含,故无法看到。native就是在Java和其他语言协作时使用的,即native后的函数实现不是Java写的。

native的关键字的函数都是操作系统实现的,因为Java是跨平台的,所以就牺牲了对底层的控制,而Java需要对底层实现控制时,就需要其他语言的帮助了,这就是native的作用。

Java跨平台

1.Java跨平台原理:

https://www.cnblogs.com/roger-yu/p/5827452.html

2.java面试必问,ThreadLocal终极篇:

Java面试必问:ThreadLocal终极篇 淦!

引用

强引用:最普遍的引用方式,只要垃圾回收时存在强引用,则不会被回收。

软引用:用于描述还有用但非必须的对象,如果内存足够,不回收,如果内存不足则回收。

弱引用:弱引用与软引用大致相同,区别在于:只具有弱引用的对象拥有更短暂的生命周期。在垃圾回收器扫描他所管辖的内存区域时,一旦发现只具有软引用的对象,不管当前内存是否充足,都会回收它的内存。

虚引用:形同虚设,与其他几种引用方式不同,虚引用并不会决定对象的生命周期,如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可以被垃圾回收期回收。虚引用主要用于追踪对象被垃圾回收器回收的活动。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值