这些Java知识来源于很早以前的看书总结(应该属于大学基础知识部分),现在从简书上移动到CDSN上,写的不好,有些知识还很陈旧,会存在许多问题,只是把它作为知识的记录过程,后来学习的JAVA知识会紧随更新。
1.JAVA数据类型总结
Java基本数据类型:
整型:byte short int long
浮点型:float double
字符型:char
布尔型:boolean
类型转换:
自动转换
byte-short-int-long-float-double
char-int
强制转换
(targetType)value
基本类型 字符串型 null型
运算符 :算术 赋值 比较 逻辑 位 类型
运算符优先级别
2.JAVA集合
Java集合分为三类:
List Map Set
collection和Iterator接口
collection是List和Set的父接口
Iterator对象被称为迭代器
foreach遍历集合元素
set分为 hashset treeset enumset Llinkedhashset SortedSet
hashset特点:
1.不保证元素排序
2.线程不同步,如果多条线程访问,需要代码保证线程安全。
3.集合元素可以为NULL
Hashcode
List分为ArrayList和Vector,LinkedList
Vector线程安全,内部数组实现
ArrayList线程不安全,内部数组实现
LinkedList内部链表实现,插入,删除,迭代操作,最优。
map
常用hashmap 和hashtable,hashmap子类Linkedhashmap,sortedmap及其子类实现Treemap
hashmap 和hashtable区别:
Hashtable是线程安全,hashmap是线程不安全。
hashmap可以用NULL作为key和value值。
3.JAVA面向对象
类和对象关系:
类是对象的抽象。
对象是类的具体实现。
具体格式;
[修饰符] class类名
{
构造器
属性(字段filed)
方法
}
修饰符:final public 或者省略
1.构造器:构造器是创建类的根本途径,如果没有构造器系统会创建默认构造器。
[构造器] 构造器名 (形参列表)
{
}
public protect private
构造器名必须与类名相同
2.[修饰符] 属性类型属性名[=属性值]
public protect private
static final
3.定义方法:
[修饰符] 方法返回值类型方法名(形参列表)
{
}
public protected private 三选一
final abstract
static
方法的值传递为形参传递,将实际参数的副本传入方法类,参数本身不受影响。
4.JAVA流程控制
顺序结构:指程序总是从上到下执行。
分支结构:
if和swich结构
if结构:需要把小范围放在前面。
swich结构:数据类型BYTE SHORT CHAR INT类型
CASE后面需要添加break
循环结构:由4部分构成:初始化条件循环条件循环体迭代语句
while:
[init_ statements]
while(test_expression)
{
statement;
[iteration_statement]
}
do{
statement;
[iteration_statement]
}while(test_expression)
for([init_statement];[test_expresssion];[ statement;
[iteration_statement]]){
}
嵌套循环:
循环控制结构:
break 结束循环
continue 跳过循环
break和continue可以添加标签来指定结束或者跳过循环。
return:结束方法
数组:
数组初始化:
1.静态初始化指在定义数组时同时为初始化值。 type
[] ARRAYNAME=NEW TYPE{ “”,""}
2.动态初始化指在定义数组时指定数组长度。 type [] ARRAYNAME=NEW TYPE
FOREACH循环:
for(type arrayname:array|collection)
{
}
数组由两部分构成:数组变量和实际数组,数组变量存在栈内存中,实际数组存在堆内存中,使用数组时实际上是数组的引用变量访问数组,当堆内存中的数组没用变量引用时,将变成垃圾。
多维数组
本质上还是一维数组,因为栈和堆的分部和一维数组一样,只是在堆中扩展了数组。
5.JAVA接口
接口概念:公共的行为规范。
定义:
[修饰符] interface 接口名 extends 父接口1,父接口2
{
零到多个常量定义
零到多个抽象方法定义
}
注意:
修饰符可以为public和省略,省略为包访问权限。
接口名遵守类命名规则
接口可以多继承接口,不能继承类
接口里无论变量是否用public static final修饰,系统默认总是public static final修饰
方法无论是否用public abstract修饰,系统默认总是public abstract修饰
内部类和枚举是否用public static修饰,系统默认总是public static修饰
接口使用:
一个类继承一个接口或者多个接口,必须实现接口内所有的方法,否则盖类为抽象类。
接口和抽象类区别:
主要在用途上,接口是一种规范,抽象类是一种模板。
接口里只能有抽象方法,抽象类可以存在普通方法。
接口不能定义静态方法,抽象类可以定义静态方法。
接口定义静态常量属性,不能定义普通属性。
抽象类可以定义静态常量属性,也可以定义普通属性。
接口不含构造器和初始化块。
6.JAVA数组
数组:
数组初始化:
1.静态初始化指在定义数组时同时为初始化值。 type
[] ARRAYNAME=NEW TYPE{ “”,""}
2.动态初始化指在定义数组时指定数组长度。 type [] ARRAYNAME=NEW TYPE
FOREACH循环:
for(type arrayname:array|collection)
{
}
数组由两部分构成:数组变量和实际数组,数组变量存在栈内存中,实际数组存在堆内存中,使用数组时实际上是数组的引用变量访问数组,当堆内存中的数组没用变量引用时,将变成垃圾。
多维数组
本质上还是一维数组,因为栈和堆的分部和一维数组一样,只是在堆中扩展了数组。
7.类的加载连接初始化
根类加载器
扩展类加载器
系统类加载器
连接:类的二进制数据加载到JRE环境中,分为验证,准备和 解析三个阶段。
初始化:类的初始化,虚拟机负责对类的静态属性惊醒初始化。
反射作用:
当程序主动需要某个类的时候,该类需要加载,连接,初始化过程,
Java程序可以加载一个运行时才得知名称的class,获悉其完整构造(但不包括methods定义),并生成其对象实体、或对其fields设值、或唤起其methods。
获得CLASS对象
JAVA获取类的三种方式:
类的forname()静态方法,传入字符串参数,该参数是某个类的全限定类名
调用某个类的CLASS属性来获取对应类的CLASS对象,ex:Person.class将返回对应的CLASS对象
调用某个对象的getclass()方法,返回该对象的所属的CLASS对象,所有对象
8.JAVA垃圾回收
垃圾回收:
当这块内存不再被任何引用变量引用时,这块内存变成垃圾,等待垃圾回收机制回收。
对象存在状态;
激活状态
去活状态
死亡状态
强制垃圾回收:
System.gc()
Runtime.getRuntime().gc()