开设java课程的作用_Java课程总结

这个学期已经要结束了,Java课程学习中认真听课是很重要的,但是我在学习过程中其实学习态度不好,在老师提醒下我改正学习态度,认真听课,认真学习和复习。

相较于上学期的C语言,面向对象这一特性让我学起来轻松了不少,李津老师讲课逻辑清晰,有条不紊,易懂又不乏味,非常的关心学生的学习情况。

养成添加注释的习惯。

(1)有助于保持一致性

(2)有助于理解

(3)帮助修补程序或快速修复

(4)有助于加快开发过程

(5)有助于提高协作效率

Java的重要知识,需要加深印象

基础知识

1、.java中源文件的扩展名为.java,之后通过编译.java的文件生成一个.class文件,之后才能在Java环境中运行。

2、JVM是在一台计算机上由软件或硬件模拟的计算机,Java中所有程序都在此模拟的计算机上运行。

3、类名称要求每个单词的首字母都要大写。

4、使用了public class声明定义类的话,文件名必须与类名称保持一致;而使用class定义的类,文件名称可以与类名称不同,但是

生成的.class文件的名称就是class定义的类的名称,而且一个Java文件可以产生多个class文件。

5、主方法【main()】是一切程序的起点,把主方法所在的类称为主类,并且主类使必须用public class声明。

6、public static void main (String args[])是程序的主方法,所有的程序都会以此方法为起点并向下运行。

7、System.out.println起输出作用,是直接将“()”里的内容进行输出,当有多个值需要输出时,中间可以使用"+"连接。

8、数据类型的转换由低到高发生自动类型转换,反之,则发生强制类型转换。

9、JAVA中的标识符不能以数字开头,也不能是JAVA中的保留关键字。

10、a%b=c,c的正负与被除数保持一致;a++会先执行整个语句 后再将a的值加1,而++a则先把b的值加1后,再执行整个语句。

11、类:定义出一个基本的模板,代表着一个共性,类是由属性和方法组成的。对象:对每一个体的详细描述。

12、所有的对象名称都在栈内存中保存,而对象的具体内容则保存在对应的堆内存中,必须使用new关键字才能开辟堆内存空间;如果一个对象要被使用,则对象必须被实例化。 实例化对象:对象名称 = new 类名()。

13、程序封装使用private,而被封装了的对象要使用setter和getter去设置和访问。

this关键字

在课堂上说出了他的四种用处,以及它不能和静态属性的方法同时使用。

讲解了静态属性怎么定义,以及可以直接调用类方法的主要用处。

构造方法

对于构造方法:要给予循环方法一个出口,而且强调有参和无参的区别,静态能调用不静态的,非静态不能调用静态方法。

1、String类

实例化String类对象有两种方式

1.直接为string类赋值。

2.调用String类中的构造方法进行实例化。

两种实例化方法的区别

第一种赋值的弊端就是所有的对象共用一个地址,而第二个方法开辟了多个空间

2、等价符号==比较的是对象的地址,

equals()方法比较的则是对象的内容。

3、String类中的字符串内容不可修改。

4、String类中的常用方法

24814224d32a989924664158ade3ceb4.png

继承:1、在Java类中只允许单一继承,即一个子类只可以继承一个父类,且子类将继承父类的非私有属性和方法。

2、父类与子类只能一对一,即一个父类下面只有一个子类,但是那个子类可以作为父类进行下一次的继承。

3、方法的重载与复写:在重载中,方法名称相同,参数的类型或者个数不同,而覆盖都是相同的。覆盖只有发生在父类与子类之间,而重载可以发生在同一类中。

super()方法

(1)super()从子类中调用父类的构造方法,this()在同一类内调用其它方法。

(2)super()和this()均需放在构造方法内第一行,所以super()与this不能同时出现。

接口

接口的应用

使用interface来定义一个接口。接口定义同类的定义类似,也是分为接口的声明和接口体,其中接口体由常量定义和方法定义两部分组成。定义接口的基本格式如下:

[修饰符] interface 接口名 [extends 父接口名列表]{

[public] [static] [final] 常量;

[public] [abstract] 方法;

}

修饰符:可选,用于指定接口的访问权限,可选值为public。如果省略则使用默认的访问权限。

接口名:必选参数,用于指定接口的名称,接口名必须是合法的Java标识符。一般情况下,要求首字母大写。

extends 父接口名列表:可选参数,用于指定要定义的接口继承于哪个父接口;

当使用extends关键字时,父接口名为必选参数。

方法:接口中的方法只有定义而没有被实现;

接口无法被实例化,但是可以被实现。一个实现接口的类,必须实现接口内所描述的所有方法,否则就必须声明为抽象类。另外,在 Java 中,接口类型可用来声明一个变量,他们可以成为一个空指针,或是被绑定在一个以此接口实现的对象。

接口的作用

(1)通过接口可以实现不相关类的相同行为,而不需要了解对象所对应的类。

(2)通过接口可以指明多个类需要实现的方法。

(3)通过接口可以了解对象的交互界面,而不需了解对象所对应的类。

注意的点:

类描述了一个实体,包括实体的状态,也包括实体可能发出的动作。

接口定义了一个实体可能发出的动作。但是只是定义了这些动作的原型,没有实现,也没有任何状态信息。

instanceof关键字

Java中的一个双目运算符,用来测试一个对象是否为一个类的实例,用法为:boolean result = obj instanceof Class;

注意事项:编译器会检查 obj 是否能转换成右边的class类型,如果不能转换则直接报错,如果不能确定类型,则通过编译。

抽象类与接口的关系

9285b626f420f845d1d7262ab409bf90.png

包装类

包装类分为两种类型:

1、对象型(Object的直接子类):Boolean、Character(char);

2、数值型(Number的直接子类): Byte、Double、Short、Long、Integer(int)、Float;

(2)字符串与基本数据类型相互转换

字符串转换为基本数据类型

1.、String变为int 类型(Integer类):

public static int parseInt(String s) throwsNumberFormatException

2、 String变为double类型(Double类):

public static double parseDouble(String s) throwsNumberFormatException

3、String变为Boolean类型(Boolean类):

public static boolean parseBoolean(String

(3)基本数据类型转换为字符串

任何数据类型使用了"+"连接空白字符串就变为了字符串类型。

使用String类中提供的valueOf()方法,此方法不产生垃圾。

异常

所有的异常都是从Throwable继承而来的。

1、运行时异常(unchecked exception):继承自java.lang. RuntimeException类

常见的:

ClassCastException(类型转换异常)

IndexOutOfBoundsException(数组越界)

NullPointerException(空指针)

ArrayStoreException(数据存储异常,操作数组时类型不一致)

IO操作的BufferOverflowException异常

网络上搜索到的!!

2、非运行时异常(checked exception):继承自java.lang.Exception类

常见的:

Java.lang.ClassNotFoundException

Java.lang.NoSuchMetodException

java.io.IOException

网络上搜索到的!!

Exception:

定义方法时必须声明所有可能会抛出的exception; 在调用这个方法时,必须捕获它的checked exception,不然就得把它的exception传递下去;exception是从java.lang.Exception类衍生出来的。例如:IOException,SQLException就属于Exception。

处理(用try ..catch..finally)异常类名不会的话可以用API。

而RuntimeExcepetion处理可以随意。其他的Excepetion必须处理。

多线程

多线程是实现并发机制的一种有效手段。

Java中实现多线程有两种方式,一种是继承Thread类,一种是实现Runnable接口,1.5之后还有一个Callable接口

一个类继承Thread类就称这个类为多线程类,在其中必须覆写run()方法。这个方法为线程的主体。

要正确的启动线程,是不能直接调用run()方法,应该调用从Thread类继承而来的start()方法。

虽然调用的是start()方法,但实际调用的是run()方法的主体。

并且只能调用一次start()方法。

Runnable接口中只提供一个run()方法。

线程操作我们可以通过Thread类和Runnable类来实现

Thread类实现了Runnable接口。

在Thread类中,有一些比较关键的属性,比如name是表示Thread的名字,可以通过Thread类的构造器中的参数来指定线程名字,priority表示线程的优先级(最大值为10,最小值为1,默认值为5),daemon表示线程是否是守护线程,target表示要执行的任务。

线程运行状态的几个方法:

1)start方法

start()用来启动一个线程,当调用start方法后,系统才会开启一个新的线程来执行用户定义的子任务,在这个过程中,会为相应的线程分配需要的资源。

2)run方法

run()方法是不需要用户来调用的,当通过start方法启动一个线程之后,当线程获得了CPU执行时间,便进入run方法体去执行具体的任务。注意,继承Thread类必须重写run方法,在run方法中定义具体要执行的任务。

3)sleep方法

sleep方法有两个重载版本!!!

(4)线程的礼让(Thread.yield())方法

线程的同步方法:在方法声明上加上synchronized

public synchronized void method(){

可能会产生线程安全问题的代码

}

同步方法中的锁对象是 this(即调用者对象)

静态同步方法: 在方法声明上加上static synchronized

public static synchronized void method(){

可能会产生线程安全问题的代码

}

静态同步方法中的锁对象是 类名.class(因为在加载类文件的时候,静态同步方法由于是静态的也被加载进内存了,类名.class的加载优先级高于静态方法)

同步代码块:在需要同步的代码外面包上一个synchronized

(Object o){

可能会产生线程安全问题的代码

}

同步代码块中的所对象可以是任意对象!!!

线程的死锁

同步锁使用的弊端:当线程任务中出现了多个同步(多个锁)时,如果同步中嵌套了其他的同步。这时容易引发一种现象:程序出现无限等待,这种现象我们称为死锁。这种情况能避免就避免掉。

file类

file类的构造方法:

public Flie(String pathname) -->实例化Flie类的时候,必须设置好路径。

如:Flie f = new Flie("d:\\test.txt");

(1)Windows中使用反斜杠表示目录的分隔符。

(2) Linux中使用正斜杠表示目录的分隔符。

Flie类主要方法:

f3492bfa67341304f25c2c315e2aca39.png

字节流与字符流

Java IO的操作流程:

(1)使用Flle类打开一个文件。

(2)通过字节流和字符流的子类指定输出的位置。

(3)进行读和写的操作。

(4)关闭输入和输出。

字节流

字节输出流:OUtputStream

OutputStream是一个抽象类,因此需要通过子类FileOutputStream实例化对象,才能够使用它。

常用方法:

public void write(int b) throws IOException:

一次写一个字节 b- 要写入的字节。

public void write(byte[] b) throws IOException:

一次写一个字节数组

public void write(byte[] b, int off,int len) throws IOException:

一次写一部分字节数组

public void close()throws IOException

关闭此文件输出流并释放与此流有关的所有系统资源。此文件输出流不能再用于写入字节。

字节输入流:

它与OutputStream一样,需要通过子类FlieInputStream实例化对象。

常用方法:

e11825b8426bde2b77cf9bcac2e61eef.png

字符流

字符输出流:Writer

它也是一个抽象类,需要通过子类FlieWriter实例化对象。

常用方法:

b89dc944a96be318390be2c4235ef7f6.png

字符输入流:Reader

同样是一个抽象类,需要通过子类FlieReader实例化对象。

常用方法:

public int read() throws IOException

读取单个字符。

作为一个整数(其范围从 0 到 65535 (0x00-0xffff))读入的字符,如果已到达流末尾,则返回 -1

public int read(char[] cbuf) throws IOException

一次读取一个字节数组

cbuf - 目标缓冲区

读取的字符数,如果已到达流的末尾,则返回 -1

public void close() throws IOException

关闭该流并释放与之关联的所有资源。

public String readLine() throws IOException

读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。

包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null

容器

(1)JPanel:使用JPanel完成各种复杂的界面显示,在其中可以加入任意的组件。

JPanel:(在JPanel中可以加入任意的组件,然后直接将JPanel容器加入到JFrame容器中)。

JFrame frame = new JFrame("")

JPanel pan = new JPanel();

pan.add(new JLabel(" "));

frame.add(pan);

(2)JSplitPane :主要功能是分割面板,可以将一个窗体分为两个子窗体,可以水平排列也可以是垂直排列。

JSplitPane(分割面板,将一个窗体分割为两个子窗体)。

public static final int HORIZONTAL_SPLIT //水平分割

public static final int VERTICAL_SPLIT //垂直分割

public JSplitPane(int newOrientation) //创建对象,并指明分割方式

publci void setDividerSize(int newSize) //设置分割条大小

(3)JTabbedPane:在一个面板上设置多个选项卡用户选择。

JTabbedPane(选项卡,一个面板设置多个选项卡)。

static final int TOP 、BOTTOM 、LEFT 、RIGHT //表示指示框位置,即顶部、底部、左部、右部

public JTabbedPane(int tabPlacement) //创建对象,并指定选项卡布局

public void addTab(String title,Icon icon,Component component,String tip) //添加一个有标题,有图标,有提示信息的组件。(可以减少参数来适应你的需求)

(4)JScrollPane:Swing中JScrollPane的主要功能就是为显示的内容加上水平滚动条。

JScrollPane(添加滚动条)。

static final int HORIZONTAL/VERTICAL_SCROLLBAR_ALWAYS //始终显示水平/垂直滚动条

static final int HORIZONTAL/VERTICAL_SCROLLBAR_NEVER //任何情况下都不显示水平/垂直滚动条

static final int HORIZONTAL/VERTICAL_SCROLLBAR_AS_NEEDED //根据自身需要显示水平/垂直滚动条

(5)JDesktopPane与JInternaIFrame:JDesktopPane规定了一个父窗体的基本形式,而JInternaIFrame规定了各个子窗体,JInternaIFrame需要加入到JDesktopPane中。

事件处理与事件监听器

(1)事件和监听器

事件监听器机制是观察者模式的一种,通过把事件源和事件处理流程以监听器的方法隔离开来,减小了主流程与被触发事件的执行流程间的耦合,便于代码的维护和对事件处理流程的扩展。

在事件监听机制中,涉及到三个角色:事件、发布者和监听器

事件:在事件源和事件监听器之间传递信息的对象实体。

发布者:在事件发生后,负责把事件发布到监听者的对象。

监听者:监听事件,并进行事件处理或转发的对象。

Java中提供了事件监听器实现的框架,使用Java中的事件监听器,需要熟悉以下几个类或接口:

1. EventObject:事件的基类,在Java中自定义事件时需要继承的基类,其定义了事件源——Object类型的属性,可以把发生事件所在的类实例的引用传递过来,以便于在事件处理流程中使用(如果有使用要求的话)。在自定义的事件中,还可以定义自己应用所需的其他属性。

2. EventListener:自定义事件监听器必须实现的接口,没有具体方法,只起到标识作用

(2)窗体事件(WindowListener)

void windowActivated/windowDeactivated(WindowEvent e) //将窗口变为活动/不活动窗口时触发

void windowClosed/Closing/Iconified(WindoowEvent e) //当窗口被关闭时/正在关闭/最小化时触发

viod windowDeiconified(WindowEvent e) //窗口从最小化恢复到正常状态时触发

viod windowOpened(WindowEvent e) //窗口打开时触发

(3)监听适配器Adapter:用户继承该类后就可以根据自己的需要来覆写方法,不会占用更多无用的空间。

动作事件及监听处理ActionListener:

处理按钮的动作事件,让按钮变得更加有意义。

void actionPerFormed(ActionEvent e) //发生操作时调用

菜单组件

JMenu与JMenuBar

JMenuBar常用方法

7e7172927ccdc3ca24e7071dfd1ed679.png

JMenu常用方法

85822503588bd5106321d1851401bc9c.png

JMenuItem类的常用方法

fd529aad02319c0bef5601ebf3c5d90c.png

JMenuItem继承AbstractButton类,因此JMenuItem也可以理解为一种特殊的JButton组件,事件处理就可以使用Actionevent事件的监听。

在使用记事本或者Word时,可以通过文件选择框选择要打开或保存的文件,在Swing中可以使用JFileChooser组件实现此功能。

JFileChooser类常用方法

90c63960549cfc162aa38530fe137edc.png

文件选择框的三种返回状态

public static final int APPROVE_OPTION //选择确定后返回该值

public static final int CANCEL_OPTION //选择取消后返回该值

public static final int ERROR_OPTION //发生错误后返回该值

JDBC

JDBC的操作上课的时候由于要讲的太多,不能详细的说明

在https://www.cnblogs.com/erbing/p/5805727.html此链接的博客上学习。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值