jre和jdk的区别
- jre全称Java Runtime Environment,顾明思义既是java运行环境,包括java虚拟机(jvm),java核心类库和支持文件,若你只想运行java程序,有jre就够了
- jdk全称Java Development Kit,java开发工具,它包含了jre。还包括了编译器(javac)、调试器(jdb)还有其他工具,这是给开发人员使用的
sdk和ndk的区别
- sdk全称Software Development Dit,软件开发工具,所以一般都会在前面说明XXX的sdk,因为本人是学android的,android的sdk包括:提供在各种系统平台上开发app的开发组件,各种工具集(模拟器,调试,打包,adt)
- ndk,同样是开发Android应用的软件开发包,不同的是它是用C语言编写的,一般适合用于开发手机驱动或底层应用等,效率高。
java数据类型及占用字节及对应包装类
数据类型 | 包装类 | 占用字节 | 数据类型 | 包装类 | 占用字节 |
---|---|---|---|---|---|
byte | Byte | 1 | boolean | Boolean | 1 |
char | Character | 2 | short | Short | 2 |
int | Integer | 4 | float | Float | 4 |
double | Double | 8 | long | Long | 8 |
注:内存运算过程中,占用字节少的数据运行速度会更快
java四种应用
- 强引用,用的最多的一种引用,可能你不知不觉就使用了它,例如Person p = new Person()
,java垃圾回收器工作时宁愿抛出OOM也不愿意去回收强引用的对象。 - 软引用,用来描述有用但不必须要的对象,当内存即将溢出的时候就会回收对象,使用弱引用是防止内存泄漏的一个手段
- 弱引用,一个被弱引用关联的对象,在jvm进行垃圾回收时无论内存是否充足都必定会去回收它,但要注意,在开发中肯定会存在一个对象被强引用,同时又被弱引用 ,这时候GC不会回收该对象,软引用也一样,此时应该把强引用的对象置空,可能有人会问,既然都把强引用对象置空了还要弱引用干嘛,这样做是为了防止内存泄漏。
- 虚引用,一个被虚引用关联的对象,随时都有可能被回收。
String、StringBuffer、StringBuilder
- String:字符串常量,被final修饰,线程安全,每次更改它的值都会在堆里new出一个对象,注意:String new对象时会有两步:1.在堆里生成一个String对象;2.在常量池寻找String指向的值,没有则创建这个值在常量池。
- StringBuffer:字符串变量,每次对StringBuffer对象进行操作时,就是对本身自己操作,不会产生新的对象,StringBuffer的方法被synchronized修饰,为了防止多线程下的访问冲突。
- StringBuilder:字符串变量,与StringBuffer相似,StringBuilder没有synchronized修饰,在单线程下效率比StringBuffer高
- 对于三者使用的总结:1.如果要操作少量的数据用 String
2.单线程操作在字符串缓冲区下操作大量数据用 StringBuilder
3.多线程操作在字符串缓冲区下操作大量数据用 StringBuffer