资源描述
Java 技术大全
Java开发工具包
1. javac编译器用于将java源代码文件编译成字节码
2. java解释器用于执行java字节码
3. javadoc用于从程序源代码中抽取类、方法等注释形成一个源代码配套的API文档
开发Java程序的步骤
1. 装载:创建java源程序
2. 校验:编译源程序成class字节码(bytecode)文件
3. 执行:运行class(字节码)文件
Java的特点
1. 简单
2. 面向对象
3. 健壮性
4. 安全性
5. 分布式
6. 多线程
数据类型
1. 原始数据类型
2. 引用数据类型
数组、类、接口
运算符的优先级次序
次 序
运 算 符
1
括号,如()和[]
2
一元运算符,如+、-、++、--、~和!
3
算术运算符和位移运算符,如*、/、%、+、-、>>和<<
4
关系运算符,如>、>=、<、<=、==和!=
5
逻辑运算符和位运算符,如&、^、|、&&和||
6
条件运算符和赋值运算符,如和? :、=、*=、/=、+=和-=
Break:只应用于在某种特殊情况发生时终止循环
Continue:继续循环,不停止处理其程序体中的其余代码
类:具有相同属性和共同行为的一组对象的集合
1. 类的属性:对象的特征在类中表示为成员变量
2. 类的方法:对象执行操作的一种规范
定义:方法的名称、返回值的数据类型、参数列表、方法体
封装:隐藏属性、方法或实现的详细信息的处理方式
将属性私有化,提供公有的方法访问私有属性
构造方法:负责对象成员的初始化工作,为实例变量赋予合适的初始值
语法规则:方法名与类名相同;没有返回类型
1. 参数化构造方法
2. 隐式/默认构造方法
继承:代码的可重用性,父类和子类需要满足is-a的关系
多态性:是各种对象以不同的方式对相同的消息作出响应的能力
同一个实现接口,使用不同的实例而执行不同的操作
减少编码的工作量,也能大大提高程序的可维护性及可扩展性
Super:调用父类中的默认构造方法或带参数的构造方法
创建对象时,先创建父类对象,再创建子类对象,如果没有显式调用父类的构造方法,将自动调用父类的无参构造方法
方法重载:如果两个方法名称相同,但参数项不相同,那么认为一个方法是另一个方法的重载方法
方法重写:如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中的某个方法的名称、返回类型及参数列表相匹配,则认为子类的方法重写了父类的方法
访问修饰符
Public(公有):可以被该类的成员和非该类的成员访问
Private(私有):只能被该类的成员访问
Protected(保护):可以被该类的成员以及其子类的成员访问
Friendly(友好):只有类本身和在同一个包中的类访问
位 置
private
default
protected
Public
同一个类
是
是
是
是
同一个包内的类
否
是
是
是
不同包内的子类
否
否
是
是
不同包并且不是子类
否
否
否
是
方法修饰符
1. Staic修饰符
只能调用其他静态方法
必须只访问表态数据
不能使用关键字this或super
2. final修饰符
应用于类、方法和变量,final变量的内容不能更改,因此,必须将其初始化
当应用于方法时,它意味着方法不能被重写,如对象已声明为final,对该对象的引用则不能更改,但它的值可以更改
3. abstract修饰符
父类中的某些方法不包含任何逻辑,并且需要由子类重写,在这种情况下,应使用abstract来声明父类中的方法。子类提供abstract方法的实现细节,而父类仅提供此方法的名称和声明,没有方法体
接口:就是某个事物对外提供的一些功能的声明,是一些方法特征的集合,但没有方法体
接口中的所有方法必须是public类型或默认类型
方法仅仅是声明或定义,而不要求去实现
接口可通过使用extends继承其其他接口
valueOf()方法用于将相应的原始值转换为其相应的包装类
Character类的方法
方 法
说 明
isDigit()
确定字符是否为0至9之间的数字
isLetter()
确定字符是否是字母
isLowerCase()
确定字符是否为小写形式
isUpperCase()
确定字符是否为大写形式
isWhiteSpace()
确定字符是否为空格或换行符
isUnicodeIdentifierStart()
确定给定的字符是否为Unicode标符的第一个有效字符
String类
方 法
说 明
Length()
字符串的长度
==操作符
检查所使用的两个操作数是否指向同一个对象
Equals()
检查构成两个操作数的内容是否相同
Boolean equalsIgnoreCase(String value)
比较两个字符串,忽略大小写形式
Int compareTo(String vale)
按字母顺序比较两个字符串
Boolean startsWith(String value)
判断字符串是否以另一个字符串开始
Boolean endsWith(String value)
判断字符串是否以另一个字符串结束
Int indexOf(int ch/String value)
搜索第一个出现的字符ch或字符串值
Int lastIndexOf(int ch/String value)
搜索搜索最后一个出现的字符ch或字符串值
Char charAt(int index)
从指定位置提取单个字符
String substring(int index)
用于提取从位置索引开始的字符串部分
String substring(int beginindex,int endindex)
用于提取beginindex和endindex位置之间的字符串部分
String concat(String str)
连接两个字符串
Replace(char old,char new)
使用另一个字符串替换调用字符串中一个字符的每一处
String trim()
批回一个前后不含任何空格的调用字符串的副本
String toUpperCase()
大写形式
String toLowerCase()
小写形式
StringBuffer类
方 法
说 明
StringBuffer insert(int offset,String s)
在指定位置插入布尔值的字符串表示
Int length()
确定StringBuffer对象的长度
Void setCharAt(int pos,char ch)
使用ch指定的新值设置pos指定的位置上的字符
String toString()
转换为String形式
StringBuffer reverse()
StringBuffer对象中的字符序列倒排序
StringBiffer delete(int start,int end)
删除调用对象中从start指定的位置开始直到end指定的位置结束
StringBuffer deleteCharAt(int pos)
删除pos指定的索引处的字符
StringBuffer replace(int start,int end,String s)
使用一组字符替换另一组字符
Math类
方 法
说 明
Static double sin(double numvalue)
计算角numvalue的正弦值
Static double cos(double numvalue)
计算角numvalue的余弦值
Static double pow(double a,double b)
计算a的b次方
Static double sqrt(double numvalue)
计算numvalue的平方根
Static int abs(double numvalue)
计算int类型值numvalue的绝对值
Static double ceil(double numvalue)
返回大于或等于numvalue的最小整数值
Static double floor(double numvalue)
返回小于或等于numvalue的最大整数值
Static int max(int a,int b)
返回a和b之间的较大值
Static int min(int a,int b)
返回a和b之间的较小值
Static int round(float numvalue)
返回指定数字的取整值
Calendar类:根据给定的Date对象,Calendar类可以整型的形式检索信息。它是抽象类,无法实例化
方 法
说 明
Void add(int originvalue,int value)
将value添加到originvalue指定的时间或日期部分
Int get(int calFields)
返回调用对象中calField指定部分的值
Calendar getInstance()
返回默认地区和时区的Calendar对象
Date getTime()
返回与调用对象具有相同时间的Date对象
Void set(int which,int val)
将在val中指定的值设置为调用对象的which所指定的时间或日期部分
Boolen after(Object c)
如果calendar的当前时间在c之后,返回true,否则返回false
Boolen before(Object c)
如果calendar的当前时间在c之前,返回true,否则返回false
Void clear()
清除当前Calendar实例中的所有时间组成部分
Object clone()
返回调用对象的副本
Boolean equals(Object c)
如果当前日历实例表示的Calendar实例与对象c相同,则返回true
集合类:Collections
1. ArrayList类:用于创建动态数组,它扩展AbstractList并实现List接口
2. LinnkedList类:用于创建链表数据结构对象,它扩展AbstractSequentialList并实现List接口
方 法
说 明
Void addFirst(Object o)
将给定对象的实例添加到链表的开始处
Void addLast(Object o)
将给定对象的实例添加到链表的结尾处
Object getFirst()
检索链表中的第一个元素
Object getLast()
检索链表中的最后一个元素
Object removeFirst()
删除链表中的第一个元素
Object removeLast()
删除链表中的最后一个元素
3. HashMapod类:实现Map接口
4. Vector类:具有一个与数组类似的数据结构,此结构是动态的,可存储对象引用
方 法
说 明
Void addElement(Object o)
将指定的元素插入Vector对象的末尾处
Int capacity()
返回Vector对象的元素数或容量
Boolean contains(Object o)
如果Vector对象包含指定对象,返回true
Void copyInto(Object[] arr)
将Vector的元素复制到指定数组中
Object elementAt(int index)
检索位于指定索引处的元素
Object firstElement()
返回Vector中的第一个元素
Int indexOf(Object obj)
搜索Vector对象并返回第一个匹配对象的索引
Object lastElement()
返回Vector中的最后一个元素
Void removeallElements()
从Vector对象中删除所有元素
Void setelementAt(Object obj,int index)
使用指定对象替换位于指定索引处的对象
Void insertElementAt(Object obj,int index)
将元素添加到Vector对象中index指定的位置
String toString()
返回表示Vector内容的格式化字符串
Void setSize(int size)
根据size的值设置Vector对象的大小
操作文件或目录的属性
Exists():判断文件或目录是否存在
isFilse():判断是否是文件
isDirectory():判断是否是目录
getName():获取文件或目录的名字
getPath():获取文件或目录的路径
getAbsolutePath():获取文件或目录的绝对路径
lastModified():获取文件或目录的最后修改日期
length():获取文件或目录的大小,单位为字节
利用字节流类FileInputStream读文本文件
InputStream is = new FileInputStream("c:\\test.txt");
int size;
System.out.println("可读取的字节:" + (size = is.available()));
System.out.println("文件内容如下:");
char[] text = new char[200];
for (int count = 0; count < size; count++) {
text[count] = (char) (is.read());
System.out.print(text[count]);
}
is.close();
利用字节流类FileOutputStream写文本文件
String str = "好好学习Java";
byte[] words = str.getBytes();
OutputStream os = new FileOutputStream("c:\\test.txt");
os.write(words, 0, words.length);
System.out.println("文件已更新!");
os.close();
利用字符流类BufferedReader和FileReader读文本文件
FileReader fr = new FileReader("c:\\test.txt");
BufferedReader br = new BufferedReader(fr);
String line = br.readLine();
while (line != null) {
System.out.println(line);
line = br.readLine();
}
br.close();
fr.close();
利用字符流类BufferedWriter和FileWriter写文本文件
FileWriter fw = new FileWriter("c:\\test.txt");
BufferedWriter bw = new BufferedWriter(fw);
bw.write("大家好");
bw.newLine(); //空一行
bw.write("我正在学习BufferedWriter。");
bw.flush();
fw.close();
二进制文件的读写
FileInputStream fis = new FileInputStream("c:\\test.txt");
DataInputStream dis = new DataInputStream(fis);
FileOutputStream fos = new FileOutputStream("c:\\txt.txt");
DataOutputStream dos = new DataOutputStream(fos);
int temp;
while ((temp = dis.read()) != -1) {
dos.write(temp);
}
fis.close();
dos.close();
Swing中常用的顶层容器
1. JFrame
2. JPanel
3. JScrollPane
布局管理器
1. BorderLayout:窗口、框架和对话框类型的对象的默认布局管理器。使用此布局时,可将组件指定到容器的上、下、左、右或中间位置(NORTH、SOUTH、WEST、EAST和CENTER)
2. FlowLayout:面板的默认布局管理器。此布局根据组件的首选大小,在一行中对组件进行排列。组件从左上角右下角依次排列。组件数量大时,组件从左到右按行排列
3. GridLayout:指定网格中的行数和列数,便可创建网格布局
JDBC驱动程序类型
1. JDBC-ODBC桥驱动程序
2. 本地API部分Java驱动程序
3. JDBC网络纯Java驱动程序
4. 纯Java驱动程序
结果集的3种类型:
TYPE_FORWARD_ONLY:游标仅向前移动
TYPE_SCROLL_INSENSITIVE:游标可前后移动,也可移动至当前位置相关的某一行
TYPE_SCORLL_SENSITIVE:与上一类型相同,区别在于如果对数据库做了任何更改,则新值是可见的
程序调试
▼ 设置断点:在想设置断点的代码行左侧栏处双击,就出现一个圆形的断点标记,再次双击,断点就取消了。也可以右键单击代码行左侧,通过在弹出的下拉菜单选择″切换断点″来设置或取消断点
▼ 启动调试,单步执行:设好断点后,打开调试图(可通过″窗口″—>″显示视图″à″调试″打开),就可以单击按钮,启动调试了
▼ 启动调试后,程序会自动在设置断点的地方停下来,这时候我们可以在调试视图单击按钮逐条语句运行程序(又称为单步执行)。代码运行到哪一行,左侧边栏就会有一个蓝色的小箭头指示,同时该行代码的背景色变成淡绿色。单步运行过程中,可以在变量视图(可通过″窗口″—>″显示视图″à″变量″打开)中观察变量的值。特别是变量的值发生改变时,变量和变量的值所在的行的背景色变为黄色,提醒大家注意
封装:将属性私有化,提供公有的方法访问私有属性。通过封装,可以实现对属性的数据访问限制,同时增强了程序的可维护性
this:是在对象内部指代自身的引用。用它来解决可能在实例变量和局部变量之间发生的任何同名的冲突
构造方法:负责对象成员的初始化工作,为实例变量赋予合适的初始值
构造方法必须满足以下语法规则:
♂ 方法名与类名相同
♂ 没有返回类型
使用new关键字实例化对象的过程实际上就是调用构造方法的过程
在使用带参数的构造方法实例化对象时,传递的值和构造方法的参数应当在个数、次序和数据类型上互相匹配
方法重载:在Java中,如果两个方法名称相同,但参数项不相同,那么认为一个方法是另一个方法的重载方法。构造方法重载是方法重载的一个典型特例,可以通过重载构造方法来表达对象的多种初始化行为
继承:在继承关系中,父类和子类需要满足is-a的关系。父类更通用,子类更具体。可以有效实现代码复用
在继承关系中,父类具有更一般的特征和行为,而子类除了具有父类的特征和行为,还具有一些自己特殊的特征和行为
方法重写:如果在子类中定义的一个方法,其名称、返回类型及参数列表正好与父类中某个方法的名称、返回类型及参数列表相匹配,那么可以说,子类的方法重写了父类的方法
在子类的构造方法中,通过super关键字调用父类的构造方法
在Java中,所有的Java类都直接或间接地继承了java.lang.Object类。Object类是所有Java类的祖先。假如在定义一个类时,没有使用extends关键字,那么这个类直接继承Object类
多态:同一个实现接口,使用不同的实例而执行不同的操作。是具有表现多种形态的能力的特征。实现步骤:
⊕ 子类重写父类的方法
⊕ 把父类类型作为参数类型,该父类及其子类对象作为参数传入
⊕ 运行时,根据实际创建的对象类型动态决定使用哪个方法
使用多态的好处:不仅能减少编码的工作量,也能大大提高程序的可维护性及可扩展性
接口:是一些方法特征的集合,但没有方法的实现。Java接口中定义的方法在不同的地方被实现,可以具有完全不同的行为。面向接口的编程就意味着:开发系统时,主体构架使用接口,接口构成系统的骨架。这样就可以通过更换实现接口的类更换系统的实现
在使用Java接口时,有以下3点需要特别注意:
(1) Java接口不能被实例化
(2) Java接口中声明的成员自动设置为public,因此Java接口中不能声明私有的成员
(3) Java接口中不能出现方法体实现
(4) 实现某个Java接口,就必须实现其中定义的所有方法
常量:是一种标识符,它的值在运行期间恒定不变。在程序中只能被引用,而不能被重新赋值。由于Java接口中声明的变量在编译时会自动加上public static final的修饰符,也就是说,自动声明为常量。因而Java接口通常是存放常量的最佳地点
Java中常量的定义规则:
(1) 在Java中,在变量声明中加入final关键字代表常量,加入static关键字代表类变量。一般情况下,把static与final结合起来声明一个常量
(2) 尽量使用含义直观的常量来表示那些将在程序中多次出现的数字或字符串
异常:在程序的运行过程中所发生的不正常的事件,它会中断正在运行的程序
Try:当某段代码在运行时可能产生异常的话,应该把这段代码放到try语句块中去
Catch:在catch语句块中捕获异常。catch语句块的参数类似于方法的声明,包含一个异常类型和一个异常对象。异常类型一般是java.lang.Exception类或者它的子类
Finally:无论是否产生异常,finally所指定的代码都要被执行。通常在finally语句块中可以进行资源的清除工作,如关闭打开的文件等
Throws:总是出现在方法的声明中,用来标明该方法可能抛出的各种异常
Throw:总是出现在方法体中,用来抛出一个异常
常见的异常类型
异 常
说 明
ArithmeticException
算术错误情形,如以零作除数
ArrayIndexOutOfBoundsException
数组小于或大于实际的数组大小
ClassNotFoundException
不能加载所需要的类
Exception
异常层次结构的根类
NullPointerException
尝试访问null对象成员
IllegalAccessException
方法接收到非法参数
InputMismatchException
欲得到的数据类型与实际输入的类型不匹配
反射
instanceof操作符:instanceof操作符的左边是具体对象的标识符,右边是类的标识符,返回的类型为布尔值。类的对象与类做instanceof操作时,结果为true;子类对象与父类做instanceof操作,结果为true;其他情况下instanceof操作都返回false
新的for循环
格式:for(x:y) y的类型是数组、List或Set等,x的类型是y中的元素类型,能顺序地将y中的元素赋给经,修改x的值不会影响y。y中的元素是按顺序、依次赋给x,不能跳着遍历
泛型编程
泛型编程主要包括两种方式:第一种是在方法参数中使用通配符,第二种是在方法的参数类型和返回类型中使用通用类型
关键技术点如下:
1. 通配符问号(?)表示任意类型。如List<?>表示可以存放任意对象类型的List
2. 通配符后面可以接extends和super,表示有限制的通配符。如List<? extends Parent>声明的List能且仅能存放Parent及其子类的对象,而List;List<? super Child>声明的List能且仅能存放Child及其父类的对象
3. 通用类型是指不指定参数或返回值的类型,常用一个大写的字母代表类型,它能代表任何类型,需要在方法声明的返回值前用<>声明通用类型。如public <T> String getName(T data)的方法声明中,String前用<T>表示T是通用类型,它的data参数的类型是T,表示能接收任意类型的参数;方法的返回值为String类型
展开阅读全文