学期总结:
1、环境的搭建,运行:
2、输出格式:输出后自动换行System.out.println()
和取消自动换行System.out.print()
3、基本的运算符号:
算数: +,-,,/,%,++,--
关系: ==,!=,>,<,>=,<=
位: &,|,^,~,<<,>>,>>>
逻辑: &&,||,!
赋值: =,+=,-+,=,/=,(%)=,<<=,>>=,&=,^=,|=
条件: x?a:b(如果满足条件x,则取a,否则取b)
4、函数的使用需求格式:import.java.函数所属的包名.类名
5、基本语法:
编写 Java 程序时,应注意以下几点:
①大小写敏感:Java 是大小写敏感的,这就意味着标识符 Hello 与 hello 是不同的。
②类名:对于所有的类来说,类名的首字母应该大写。如果类名由若干单词组成,那么每个单词的首字母应该大写,例如 MyFirstJavaClass 。
③方法名:所有的方法名都应该以小写字母开头。如果方法名含有若干单词,则后面的每个单词首字母大写。
④源文件名:源文件名必须和类名相同。当保存文件的时候,你应该使用类名作为文件名保存(切记 Java 是大小写敏感的),文件名的后缀为 .java。(如果文件名和类名不相同则会导致编译错误)。
⑤主方法入口:所有的 Java 程序由 public static void main(String []args) 方法开始执行。
⑥标识符:Java 所有的组成部分都需要名字。类名、变量名以及方法名都被称为标识符。
注意:所有的标识符都应该以字母(A-Z 或者 a-z),美元符($)、或者下划线()开始首字符之后可以是字母(A-Z 或者 a-z),美元符($)、下划线()或数字的任何字符组合关键字不能用作标识符标识符是大小写敏感的
⑦Java修饰符:像其他语言一样,Java可以使用修饰符来修饰类中方法和属性。主要有两类修饰符:
访问控制修饰符 : default, public , protected, private
非访问控制修饰符 : final, abstract, static, synchronized
访问控制:
修饰符 当前类 同一包内 子孙类(同一包) 子孙类(不同包) 其他包
public Y Y Y Y Y
protected Y Y Y Y/N(说明) N
default Y Y Y N N
private Y N N N N
⑧Java 变量:Java 中主要有如下几种类型的变量----局部变量 类变量(静态变量) 和 成员变量(非静态变量)
⑨Java 数组:数组是储存在堆上的对象,可以保存多个同类型变量。在后面的章节中,我们将会学到如何声明、构造以及初始化一个数组。
6、语句:
循环语句,条件语句,判断语句与c语言类似,不做详细说明了,注意的是条件语句的break用法和default用法。
7、java中的对象概念:
对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。
类:类是一个模板,它描述一类对象的行为和状态。
方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。
1、继承是多态的前提;子类可以继承父类的非私人的内容;
继承格式:public class 子类名称 extends 父类名称{}
2、重载:方法名称相同,参数列表不同
覆盖:方法名称和参数列表都相同
判断方法是否覆盖的一个方法是在定义方法前加上@Override即可,如果报错则没有覆盖,反之则覆盖。
实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。
构造方法:每个类都有构造方法。如果没有显式地为类定义构造方法,Java编译器将会为该类提供一个默认构造方法。在创建一个对象的时候,至少要调用一个构造方法。构造方法的名称必须与类同名,一个类可以有多个构造方法。
public class Puppy{
public Puppy(){
}
public Puppy(String name){
// 这个构造器仅有一个参数:name
}
}
创建对象:对象是根据类创建的。在Java中,使用关键字new来创建一个新的对象。创建对象需要以下三步:
声明:声明一个对象,包括对象名称和对象类型。
实例化:使用关键字new来创建一个对象。
初始化:使用new创建对象时,会调用构造方法初始化对象。
public class Puppy{
public Puppy(String name){
//这个构造器仅有一个参数:name
System.out.println("小狗的名字是 : " + name );
}
public static void main(String[] args){
// 下面的语句将创建一个Puppy对象
Puppy myPuppy = new Puppy( "tommy" );
}
}
访问实例变量和方法:
/* 实例化对象 */
Object referenceVariable = new Constructor();
/* 访问类中的变量 */
referenceVariable.variableName;
/* 访问类中的方法 */
referenceVariable.methodName();
** this与super区别:**
8、源文件的声明规则:
①一个源文件中只能有一个public类
②一个源文件可以有多个非public类
③源文件的名称应该和public类的类名保持一致。例如:源文件中public类的类名是Employee,那么源文件应该命名为Employee.java。
④如果一个类定义在某个包中,那么package语句应该在源文件的首行。
⑤如果源文件包含import语句,那么应该放在package语句和类定义之间。如果没有package语句,那么import语句应该在源文件中最前面。
⑥import语句和package语句对源文件中定义的所有类都有效。在同一源文件中,不能给不同的类不同的包声明。
9、String类:
创建字符串:String greeting
连接字符串:string1.concat(string2);
或用" "+" "。
String 常用方法:
1char charAt(int index)
返回指定索引处的 char 值。
2int compareTo(Object o)
把这个字符串和另一个对象比较。
3String concat(String str)
将指定字符串连接到此字符串的结尾。
4boolean endsWith(String suffix)
测试此字符串是否以指定的后缀结束。
5boolean equals(Object anObject)
将此字符串与指定的对象比较。
6boolean equalsIgnoreCase(String anotherString)
将此 String 与另一个 String 比较,不考虑大小写。
7void getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)
将字符从此字符串复制到目标字符数组。
8int indexOf(int ch)
返回指定字符在此字符串中第一次出现处的索引。
9int indexOf(int ch, int fromIndex)
返回在此字符串中第一次出现指定字符处的索引,从指定的索引开始搜索。
10int length()
返回此字符串的长度。
11boolean regionMatches(boolean ignoreCase, int toffset, String other, int ooffset, int len)
测试两个字符串区域是否相等。
12String replace(char oldChar, char newChar)
返回一个新的字符串,它是通过用 newChar 替换此字符串中出现的所有 oldChar 得到的。
13String[] split(String regex)
根据给定正则表达式的匹配拆分此字符串。
14String[] split(String regex, int limit)
根据匹配给定的正则表达式来拆分此字符串。
15boolean startsWith(String prefix)
测试此字符串是否以指定的前缀开始。
16boolean startsWith(String prefix, int toffset)
测试此字符串从指定索引开始的子字符串是否以指定前缀开始。
17CharSequence subSequence(int beginIndex, int endIndex)
返回一个新的字符序列,它是此序列的一个子序列。
18String substring(int beginIndex)
返回一个新的字符串,它是此字符串的一个子字符串。
19String substring(int beginIndex, int endIndex)
返回一个新字符串,它是此字符串的一个子字符串。
20char[] toCharArray()
将此字符串转换为一个新的字符数组。
21String toString()
返回此对象本身(它已经是一个字符串!)。
22String trim()
返回字符串的副本,忽略前导空白和尾部空白。
10、Arrays类:
格式:arrayRefVar = new dataType[arraySize];
String str[][] = new String[3][4];
给数组赋值:通过 fill 方法。
对数组排序:通过 sort 方法,按升序。
比较数组:通过 equals 方法比较数组中元素值是否相等。
查找数组元素:通过 binarySearch 方法能对排序好的数组进行二分查找法操作。
11、方法:
方法的定义
一般情况下,定义一个方法包含以下语法:
修饰符 返回值类型 方法名(参数类型 参数名){
...
方法体
...
return 返回值;
}
方法包含一个方法头和一个方法体。下面是一个方法的所有部分:
修饰符:修饰符,这是可选的,告诉编译器如何调用该方法。定义了该方法的访问类型。
返回值类型 :方法可能会返回值。returnValueType 是方法返回值的数据类型。有些方法执行所需的操作,但没有返回值。在这种情况下,returnValueType 是关键字void。
方法名:是方法的实际名称。方法名和参数表共同构成方法签名。
参数类型:参数像是一个占位符。当方法被调用时,传递值给参数。这个值被称为实参或变量。参数列表是指方法的参数类型、顺序和参数的个数。参数是可选的,方法可以不包含任何参数。
方法体:方法体包含具体的语句,定义该方法的功能。
格式:static float interest(float principal, int year){...}
12、Java 流(Stream)、文件(File)和IO:
Java.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。
Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。
一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。
Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传输和网络编程中。
BufferedReader:
下面是创建 BufferedReader 的基本语法:
BufferedReader br = new BufferedReader(new
InputStreamReader(System.in));
BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。
从 BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:
int read( ) throws IOException
每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。
从控制台读取字符串
从标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法。
它的一般格式是:
String readLine( ) throws IOException
控制台输出:
PrintStream 定义 write() 的最简单格式如下所示:
void write(int byteval)
FileInputStream:
该流用于从文件读取数据,它的对象可以用关键字 new 来创建。
有多种构造方法可用来创建对象。
可以使用字符串类型的文件名来创建一个输入流对象来读取文件:
InputStream f = new FileInputStream("C:/java/hello");
也可以使用一个文件对象来创建一个输入流对象来读取文件。我们首先得使用 File() 方法来创建一个文件对象:
File f = new File("C:/java/hello");
InputStream out = new FileInputStream(f);
操作方法:
1 public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。
2 protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。
3 public int read(int r)throws IOException{}
这个方法从 InputStream 对象读取指定字节的数据。返回为整数值。返回下一字节数据,如果已经到结尾则返回-1。
4 public int read(byte[] r) throws IOException{}
这个方法从输入流读取r.length长度的字节。返回读取的字节数。如果是文件结尾则返回-1。
5 public int available() throws IOException{}
FileOutputStream:
该类用来创建一个文件并向文件中写数据。
如果该流在打开文件进行输出前,目标文件不存在,那么该流会创建该文件。
有两个构造方法可以用来创建 FileOutputStream 对象。
使用字符串类型的文件名来创建一个输出流对象:
OutputStream f = new FileOutputStream("C:/java/hello")
也可以使用一个文件对象来创建一个输出流来写文件。我们首先得使用File()方法来创建一个文件对象:
File f = new File("C:/java/hello");
OutputStream f = new FileOutputStream(f);
返回下一次对此输入流调用的方法可以不受阻塞地从此输入流读取的字节数。返回一个整数值。
操作方法:
1 public void close() throws IOException{}
关闭此文件输入流并释放与此流有关的所有系统资源。抛出IOException异常。
2 protected void finalize()throws IOException {}
这个方法清除与该文件的连接。确保在不再引用文件输入流时调用其 close 方法。抛出IOException异常。
3 public void write(int w)throws IOException{}
这个方法把指定的字节写到输出流中。
4 public void write(byte[] w)
把指定数组中w.length长度的字节写到OutputStream中。
Scanner 类:通过 Scanner 类来获取用户的输入,通过 Scanner 类的 next() 与 nextLine() 方法获取输入的字符串
下面是创建 Scanner 对象的基本语法:
Scanner s = new Scanner(System.in);
next() 与 nextLine() 区别:
next():
1、一定要读取到有效字符后才可以结束输入。
2、对输入有效字符之前遇到的空白,next() 方法会自动将其去掉。
3、只有输入有效字符后才将其后面输入的空白作为分隔符或者结束符。
next() 不能得到带有空格的字符串。
nextLine():
1、以Enter为结束符,也就是说 nextLine()方法返回的是输入回车之前的所有字符。
2、可以获得空白。
13、抽象类:
1、抽象类一定要用关键词abstract修饰
2、含有抽象方法的类一定要是抽象类
3、抽象方法没有方法体,所以一定要实例化子类对象才能实现抽象方法
4、抽象类的定义格式:
abstract class 抽象类名称{
属性;
访问权限 abstract 返回值类型 方法名称(参数); //抽象方法
}
5、接口的定义格式:
interface 接口名称{
全局变量;
抽象方法;
}
6、类继承接口一定要用implements,而且一个类可以继承多个接口,而抽象类却只能继承一个
class 子类 implements 接口{ 所有抽象方法; }
7、接口也需要实例化对象才能实现
8、接口实际上可以理解为一个特殊的抽象类,接口内部的方法没有方法体,但是抽象类可以有方法体的方法。
14、异常处理:
1、异常类型:
异常方法:
2、捕获异常格式:
try
{
// 程序代码
}catch(ExceptionName e1)
{
//Catch 块
}
finally{
//finally块(无论如何都会输出)
}
3、如果一个方法没有捕获到一个检查性异常,那么该方法必须使用 throws 关键字来声明。throws 关键字放在方法签名的尾部。也可以使用 throw 关键字抛出一个异常,无论它是新实例化的还是刚捕获到的
void checkBag(Goods goods) throws DangerException{}
if (goods.isDanger){ throw new DangerException(); }
4、一个方法可以声明抛出多个异常,多个异常之间用逗号隔开。
5、声明自定义:
所有异常都必须是 Throwable 的子类。
如果希望写一个检查性异常类,则需要继承 Exception 类。
如果你想写一个运行时异常类,那么需要继承 RuntimeException 类
格式:class MyException extends Exception{ }
不同的异常需要继承不同的异常类。
15、监听器:
键盘事件监听处理:
java.awt.event
接口KeyListener
addKeyListener
public void addKeyListener(KeyListener l)
添加指定的按键侦听器,以接收发自此组件的按键事件。如果 l 为 null,则不会抛出异常并且不执行动作。
java.awt.event
接口 KeyListener
用于接收键盘事件(击键)的侦听器接口。旨在处理键盘事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象 KeyAdapter 类(仅重写有用的方法)。
然后使用组件的 addKeyListener 方法将从该类所创建的侦听器对象向该组件注册。按下、释放或键入键时生成键盘事件。然后调用侦听器对象中的相关方法并将该 KeyEvent 传递给它。
方法摘要
void keyPressed(KeyEvent e)
----按下某个键时调用此方法。
void keyReleased(KeyEvent e)
---释放某个键时调用此方法。
void keyTyped(KeyEvent e)
------键入某个键时调用此方法。
鼠标事件监听处理:
addMouseListener
java.awt.event
接口 MouseListener
addMouseListener
public void addMouseListener(MouseListener l)
添加指定的鼠标侦听器,以接收发自此组件的鼠标事件。如果侦听器 l 为 null,则不会抛出异常并且不执行动作。
java.awt.event
接口 MouseListener
用于接收组件上“感兴趣”的鼠标事件(按下、释放、单击、进入或离开)的侦听器接口。(要跟踪鼠标移动和鼠标拖动,请使用 MouseMotionListener。)
旨在处理鼠标事件的类要么实现此接口(及其包含的所有方法),要么扩展抽象类 MouseAdapter(仅重写所需的方法)。
然后使用组件的 addMouseListener 方法将从该类所创建的侦听器对象向该组件注册。当按下、释放或单击(按下并释放)鼠标时会生成鼠标事件。鼠标光标进入或离开组件时也会生成鼠标事件。发生鼠标事件时,将调用该侦听器对象中的相应方法,并将 MouseEvent 传递给该方法。
void mouseClicked(MouseEvent e)
-----鼠标按键在组件上单击(按下并释放)时调用。
void mouseEntered(MouseEvent e)
-----鼠标进入到组件上时调用。
void mouseExited(MouseEvent e)
------鼠标离开组件时调用。
void mousePressed(MouseEvent e)
-----鼠标按键在组件上按下时调用。
void mouseReleased(MouseEvent e)
----鼠标按钮在组件上释放时调用。
鼠标拖拽事件监听处理:
在Swing中拖动一个组件或者图片,拖动图片和拖动组件是相同的道理,如果您打算拖动一个组件,只要给组件增加两个监听器就可以了。一个是addMouseListener(MouseListener l),
另一个是:addMouseMotionListener(MouseMotionListener l) ;
由于MouseListener和MouseMotionListener都继承同一个父类EventListener,所以我们给组件增加监听器时,只要增加同一个监听器就可以了。即:
DragPicListener listener = new DragPicListener();
component.addMouseListener(listener);
component.addMouseMotionListener(listener);
对于监听器DragPicListener,我们只要实现鼠标按下时的触发事件public void mousePressed(MouseEvent e)
;和鼠标拖动时的触发事件:public void mouseDragged(MouseEvent e)
,就可以完成组件的拖动了。当鼠标按下时我们记录下鼠标的位置;当鼠标移动时,获得鼠标当前的位置,并把组件移动到当前位置。
单选按钮就是在给定的多个选择项中选择一个,并且只能选择一个。在Swing中可以使用JRadioButton完成一组单选按钮的操作,JRadioButton的常用方法如下表:
1 public JRadioButton(Icon icon)
创建一个单选按钮,并设定图片
2 public JRadioButton(Icon icon, boolean selected)
创建一个单选按钮,设定图片,并设定是否选中
3 public JRadioButton(String text)
创建一个单选按钮,制定按钮文本,默认不选中
4 public JRadioButton(String text, boolean selected)
创建一个具有指定文本和选择状态的单选按钮。
5 public JRadioButton(String text, Icon icon, boolean selected)
创建一个具有指定的文本、图像和选择状态的单选按钮。
6 public void setSelected(boolean b)
设置按钮是否被选中,从类 javax.swing.AbstractButton 继承
7 public boolean isSelected()
返回该按钮是否被选中,如果选定了按钮,则返回 true,否则返回 false。从类 javax.swing.AbstractButton 继承
8 public void setText(String text)
设置按钮的显示文本。从类 javax.swing.AbstractButton 继承
9 public void setIcon(Icon defaultIcon)
设置按钮的默认图标。
JRadioButton事件处理
在单选按钮操作中,可以使用ItemListener接口进行事件的监听。此接口定义了如下表所示的方法:
1 void itemStateChanged(ItemEvent e)
在用户已选定或取消选定某项时调用。
此方法中存在ItemEvent事件,此事件的常用方法及常量如下表所示。
1 public static int SELECTED
选项被选中
2 public static int DESELECTED
选项取消选中
1 public Object getItem()
返回受事件影响的选项。
2 public int getStateChange()
返回状态更改的类型
16、jdbc:
JDBC驱动程序共分四种类型:
类型1
JDBC-ODBC桥
这种类型的驱动把所有JDBC的调用传递给ODBC,再让后者调用数据库本地驱动代码(也就是数据库厂商提供的数据库操作二进制代码库,例如Oracle中的oci.dll)。
类型2
本地API驱动
这种类型的驱动通过客户端加载数据库厂商提供的本地代码库(C/C++等)来访问数据库,而在驱动程序中则包含了Java代码。
类型3
网络协议驱动
这种类型的驱动给客户端提供了一个网络API,客户端上的JDBC驱动程序使用套接字(Socket)来调用服务器上的中间件程序,后者在将其请求转化为所需的具体API调用。
类型4
本地协议驱动
这种类型的驱动使用Socket,直接在客户端和数据库间通信。