JAVA复习
--------------------------------------------------------------------
变量类型 变量 = 初始化值; ----定义变量
final 变量类型 变量(大写) = 赋值; ----自定义常量(常量只能赋值一次,变量名一般大写)
System.out.println(a+"b"); ----拼接字符串,当b时空字符时,表示将变量a转换成字符串类型
int b = 100;
Short a = (Short)b; ----强制类型转换
基本数据类型
----基本类型声明之后无论是否赋值都已经分配了内存,修改数据直接对应变量所在内存修改
引用数据类型
----引用数据类型声明以后只在栈内分配了内存,初始化在堆或方法区里分配内存,new出来的放在堆里,程序运行常量放在方法区里,
修改数据时只是修改变量所在内存的地址,将原来的地址改为新数据的地址,原来的数据并没有被修改
static ----static声明的变量所有对象调用的都一样,可以直接通过类访问
static ----static声明的静态方法是无法访问非静态变量的,如果要访问,可以指定对象
--------------------------------------------------------------------
?:语法
max = a > b ? a : b; ----a和b比较,当a>b为true时max=a,否则max=b;
--------------------------------------------------------------------
{} ----语句块,执行到时从上到下执行,内部定义的变量外部无法访问
--------------------------------------------------------------------
数组
int[] 数组名 = {1,2,3,4};
int[] 数组名 = new int[50]; ----初始默认值为50个0
String[] 数组名 = new String[3]; ----初始默认值为null,null,null
boolean[] 数组名 = new boolean[3]; ----初始默认值为false,false,false
int[][] 数组名 = {
{0,0},{0,0},{0,0}}; ----定义多维数组
--------------------------------------------------------------------
循环
while(循环条件){
...
} ----while循环
do{
...
}while(循环条件) ----do while循环
for(int i=0;i<10;i++){
...
} ----for循环
continue ----跳过当前继续下一个(如if(a==4){continue;)这种就是跳过4到5继续运行)
break ----跳出当前循环或者跳出case
return ----结束当前方法
--------------------------------------------------------------------类
类名 对象名 = new 类名(); ----声明对象
对象名.方法(); ----对象调用方法
对象名.属性; ----对象属性
this. ----this指当前对象调用
--------------------------------------------------------------------
构造方法
class 类名{
public 类名(){
...
};
public 类名(数据类型 变量名){
...
}
} ----在new对象的时候会自动调用方法,带有参数就调用第二个方法,没带就第一个
--------------------------------------------------------------------
声明关键字 | public | protect | defailt | private |
同一个类 | 可以 | 可以 | 可以 | 可以 |
同一个包 | 可以 | 可以 | 可以 | 不行 |
子父类 | 可以 | 可以 | 不行 | 不行 |
不同包 | 可以 | 不行 | 不行 | 不行 |
--------------------------------------------------------------------
内部类
public class Outer{
...
public class Inner{
...
}
}
Outer out = new Outer;
Outer.Inner in = out.new Inner(); ----内部类对象要依附外部类对象才能被创建
--------------------------------------------------------------------
抽象类
abstract class A{
abstract void method(){
...
}
public void method1(){
...
}
} ----abstract声明的抽象类无法被实例化,只能被继承,继承的类中要实现所有父类中的抽象方法,子类也可以调用父类的其他方法
--------------------------------------------------------------------
接口与匿名内部类
interface Demo{
...
}
System.out.println(
new Demo(){
... ----接口方法实现
}.方法调用
); ----通过接口使用匿名内部类
--------------------------------------------------------------------
集合类
Collection(存储单个值)
List ----可重复,有序
ArrayList a1 = new ArrayList();
LinkedList li1 = new LinkedList();
Vector v1 = new Vector();
Set ---不可重复,无序
HashSet h1 = new HashSet();
TreeSet t1 = new TreeSet();
Map(用来储存键值对)
HashMap h2 = new HashMap();
TreeMap t2 = new TreeMap();
HashTable h3 = new HashTable();
--------------------------------------------------------------------字节复制和通过数组复制
int i = -1;
while((i=scoure.read())!=-1){
target.write(i);
} ----一个字节一个字节复制
byte[] cp = new byte[1024];
int length = -1;
while((length=scoure.read(byte)!=-1){
target.write(cp,0,length);
} ----读取一段数组,复制一段数组,再读取再复制
FileInputStream ----字节输入流,不经过缓冲区读取文件,比较耗费性能
FileOutputStream ----字节输出流,不经过缓冲区输出
InputStreamReader ----字符输入流
Filereader
OutputStreamWriter ----字符输出流
FileWriter
缓冲区输出流
BufferedInputStream
BufferedOutputStream ----(字节流)write方法写入的数据会先存放在缓冲区,等缓冲区存放到容量上限后再写入硬盘,也可以提前调用flush方法提前写入,在调用close方法前也会先将缓冲区的数据存入硬盘,要通过FileOutputStream指定文件的写入地址
BufferedWriter ----(字符流)也要要通过FileWrite指定写入的文件地址
BufferedReader
readLine() ----读取一行
--------------------------------------------------------------------
线程
Runnable r = new Runnable(){
public void run(){
Thread.currentThread.method();
...
}
}; ----匿名内部类Runnable的使用
Thread t = new Thread( r,"rename" ); ----通过Runnable实例化线程对象
Thread t = new Thread(){
public void run() {
Thread.currentThread.method();
}
}; ----匿名内部类Thread的使用
线程安全
Object lock = new Object();
public void run(){
...
synchronized(lock){
...
}
} ----利用线程锁保证线程安全运行
--------------------------------------------------------------------
网络编程
UDP
TCP
--------------------------------------------------------------------
枚举
新建枚举
public enum Season{
Spring , Summer , Autumn , Winter ; ----各个值的名字
}
for(Season se : Season.velues()){
System.out.println(se);
} ----遍历枚举的值
--------------------------------------------------------------------
JDBC
Connection con = DriverManager.getConnection(url,user,password); ----连接数据库
PreparedStatement pstmt = con.prepareStatement(sql语句); ----数据库操作
con.setAutoCommit; ----开启事务
con.commit; ----提交事务