Java_基础总结
基础知识总结。
一、运行环境
jdk:开发工具包,包括了jre、jvm。
jre:运行时环境,包括了jvm。
jvm:虚拟机,Java实现跨平台的核心。
编译:
使用javac,将.java源文件编译为.class文件。
运行:
使用java,运行.class文件。
二、标识符
标识符用来给类、变量、方法起名字,可以使用字母数字下划线、美元符号。
字符不止是英文字母。
不能以数字开头。
三、类
类是对现实世界具体事务的抽象。
格式:
修饰符 class 类名{ //变量 修饰符 变量名; //构造器 修饰符 类名(){ } //方法 修饰符 返回值类型 方法名(参数){ } }
修饰符:
1、访问修饰符:
public,公开的,所有类可以访问。
protected,受保护的,子类可以访问。
default,默认修饰符,同一包下的子类可以访问。
private,私有的,只有当前类可以访问。
2、非访问修饰符:
package,包声明:
在源文件中非注释的第一行,说明此类属于哪个包。
import,导入:引入外部的类。
import static,导入类的静态属性。
static,静态修饰符,修饰的变量和方法存在方法区中:
修饰变量时,变量为静态变量,从属于类,不依赖对象存在,可直接使用,局部变量不能被修饰为静态变量。
修饰方法时,方法为静态方法,从属于类,不依赖对象存在,可直接使用,静态方法不能使用类的非静态变量。
final,最终的:
修饰变量时,变量不可修改,为常量,要求变量名全大写,字母以下划线分开。
修饰方法时,方法不可被重写。
修饰类时,类不可被继承。
abstract ,抽象的:
修饰类时,类为抽象类,不能实例化对象。
修饰方法时,规定方法的返回值类型和参数类型,待子类来实现。
synchronized,同步的:
修饰方法时,为同步方法,此方法同一时间只能被一个线程访问。
修饰语句块时,为同步块,此语句块同一时间只能被一个线程访问。
构造器:
- 无返回类型(返回类型为类的实例)。
- 通过new调用。
- 手动定义后,不会自动生成无参构造器。
- 构造方法执行时,会先执行super()调用父类构造器。
四、数据类型
1、基本数据类型:
数字类型:
整型:byte(1字节)、shot(2字节)、int(4字节,默认)、long(8字节)
浮点型:float(4字节)、double(8字节,默认)
字符类型:char(2字节)
布尔类型:boolean(1位)
2、引用数据类型(4字节):
数组、对象、接口。
3、类型自动转换:
byte、short、char-------->int
表达式中有long,结果为long。
表达式中有double,结果为double
五、变量类型
1、局部变量:
从属于方法或语句块,不会自动初始化。
2、成员变量:
从属于对象,会自动初始化:0、0.0、false、\u0000、null。
3、静态变量:
从属于类,会自动初始化。
六、运算符
赋值:=
算术:+、-、*、/、%
关系:>、<、>=、<=、==、!=
逻辑:&&(短路)、||(短路)、!、&(不短路)、|(不短路)
位运算:&、|、<<、>>。(左移一位:乘以2;右移一位:除以2。)简单取反操作
扩展:++、--、+=、-=、*=、/=
三目运算:表达式?返回值1:返回值2;
七、控制语句
1、顺序,正常代码由上往下执行。
2、选择:
if
if....else
if....if else....if else .....else
switch(int或者枚举){
case 值1:
...
case 值2:
...
default:
...
}
注意:byte、short、char可以自动转为int,jkd1.7之后支持String类型
3、循环
while
do while
for
4、结束
continue,结束本次循环。
break,结束循环语句。
八、封装、继承、多态
方法重载(overload):
两同:同一个类,同一个方法名。
三不同:(参数列表)不同类型、个数、顺序。
方法重写(override):
子类重写父类的方法。
要求:
方法名一致
子类访问修饰符权限大于等于父类的
子类返回值小于等于父类的
子类异常声明类型小于等于父类的。
1、封装(Encapsulation):
使用访问修饰对属性方法进行封装。要求“高内聚、低耦合”。
2、继承(extends):
代码重用。
对现实世界更加准确的建模。
所有类都是Object类的子类。
3、多态(polymorphic):
存在多个子类继承。
存在方法的重写。
父类引用指向子类对象。
九、抽象类、接口
抽象类:
使用abstract声明的类,存在待实现的抽象方法(待子类重写的方法)。
接口:
1、一个类可以实现多个接口。
2、接口可以继承多个接口。
常用接口:
可序列化:Serializable
可克隆:Cloneable
多线程:Runnable
排序规则:Comparable
十、内存机制
1、栈:
存放局部变量。
储存空间空间连续,快。
不可被多个线程共享。
2、堆:
存放对象。
储存空间不连续、灵活。
可被多个线程共享。
3、方法区:
存放类的信息:代码、静态变量、常量...
储存空间不连续、灵活。
可被多个线程共享。
十一、垃圾回收
Java是自动回收垃圾的。
可以通过System.gc()方法向系统建议回收垃圾。
可以通过finalize()方法释放非Java 资源。如打开的文件资源、数据库连接,或是调用非Java方法(native方法)时分配的内存(比如C语言的malloc()系列函数)。
十二、异常机制
1、捕获异常:try catch finally
2、抛出异常:thows
3、手动抛出异常:throw
4、自定义异常:extends Exception
十三、数组
概念:
长度固定。
元素类型一致。
通过下标引用。
数组也是对象,元素的初始化与成员变量一致。
多维数组:元素是数组。
初始化:
动态初始化:先定义,然后一个一个赋值。
静态初始化:例子:int[] a={1,2,3,4,5};
默认初始化:int[] a = new int[5];
工具类:
Arrays,包括了对数组的常用操作,排序、查找。
十四、容器
十五、常用类
包装类:
Boolean、Character、Byte、Short、Integer、Long、Float、Double
实现基本数据类型与引用数据类型的转换。
自动装箱、自动拆箱。
缓存机制:
给包装类对象直接赋值的时候,若值在缓存区内,则会指向缓存区内的值。(则使用==进行比较会获得true)
1、Boolean,全部缓存。
2、Character、Byte、Short、Integer、Long,缓存范围:-128 ~ 127
3、Float、Double,无缓存。
字符串类:
String,不可变字符串。
StringBuilder,可变字符串,线程不安全。
StringBuffer,可变字符串,线程安全。
时间类:
Date,使用时间戳来抽象时间。
DataFormat,字符串与Date对象互转。
Calendar,日期进行计算。
文件类:
File,抽象一个文件或文件夹。
数学类:
Math,常用的数学计算的函数。
枚举类:
常用来定义一组常数,避免使用其高级特性(使用普通类即可)。
十六、IO流
十七、多线程
创建:
状态:
1、new
2、就绪
3、运行
4、阻塞:
sleep,不释放锁。
join,等待另一个线程结束。
wait,会释放锁。
synchronized,等锁。
5、终止:建议使用boolean变量来使线程正常终止。
优先级:
1-10,默认5。
死锁:
不要同时持有多个对象的锁。
十八、网络编程
基于socket编程。
URL:
网络资源定位符。
通过openStream可以获得数据流。
TCP:
面向连接的,安全稳定。
UDP:
不面向连接的,高效的。