Java课程总结
什么是java?
Java是sum公司开发的一套编程语言,后被Oracle收购了,然后经历了一系列的发展过程
Java具有简洁有效,可移植性,面向对象,解释型,适合分布式计算,有良好性能,健壮,防患于未然·多线程处理能力,具有较高安全性,动态语言,中性结构,无平台性等特点。
笔记
10%3=1
-10%3=-1
10%3=1
-10%-3=-1
类名首字母大写
低精度到高精度自动类型转换,高精度到低精度强制类型转换
&& 短路与 因为只要当前项为假,它就不往后判断了,直接认为表达式为假
| | 逻辑或 也叫做短路或 因为只要当前项为真,它也不往后判断了,直接认为表达式为真
a++先执行整个语句后再将a的值加一,++a先把a的值加一在执行整个语句
面向对象的基本概念
面向对象有三个特征封装性,继承性,多态性
类包含状态,行为
对象是具体的
类是抽象的
类实际上是表示一个客观世界某类群体的一些基本特征抽象
类名 对象名称 =null;//声明对象
对象名称 = new 类名()//实例化对象,只要有关键字new就表示开辟新的堆内存空间
栈中存放的是堆空间的地址
对象使用前必须实例化
构造方法
类名称 对象名称=new 类名称 ()
构造方法的名称必须与类名称一致;
构造方法的声明处不能有任何返回值类型的声明;
不能在构造方法中使用return 返回一个值。
this调用本类构造方法必须放在首行,不能循环
this+成员变量有四个作用
1.强调调用本类方法
2.表示类的成员属性
3.调用构造方法
4.表示当前对象
当前对象指的是正在调用的对象
static声明属性,将静态属性共享为公共属性
java中常用的内存区域
1.栈内存空间:保留所有的对象名称(准确说是保留了堆内存空间的地址)
2.堆内存空间:保留每个对象的具体属性内容
3.全局数据区:保留static的属性
4.全局代码区:保留所有方法定义
static方法定义的说明
1.本类没有提供有普通属性,这样产生实例化对象没有意义;
2.本类无法直接进行对象实例化,只能够利用static操作;
说明:非static声明的方法可以去调用static声明的属性或方法,但static声明的方法不能调用非static类型声明的属性或方法。
static类型的方法在对象未被实例化时就可以被类名所调用。
所学知识点
1.==是用来进行地址值比较的
2.equals 只比较内容
if(strings[i].endsWith("ng"))
cont++;。
3.如果 strings[i] 数据域中有以“ng”结尾则count++
4.s=new s.concat("E");才能被string类型调用
int n=0;
StringTokenizer st =new StringTokenizer("I wonder should I go,or should I stay");
while(st.hasMoreTokens()){
n++;
String ss=st.nextToken();
}
5.该程序执行了十次循环,循环判断条件为(n<上面那句话的空格数?)
6.String类常用操作方法
大佬链接 https://www.cnblogs.com/cham88/p/6044623.html
https://www.w3school.com.cn/jsref/jsref_obj_string.asp
数组知识点
数据类型 数组名称=null;
数组名称=new 数据类型[长度]
数据类型[]数组名称=null
在java中想开辟新的堆内存则必须使用new关键字
数据类型 数组名[]=new 数据类型[个数]
int score[] =new int [10] //声明一个元素个数为10的整形数组score,同时一块内存空间供其使用
数组的赋值
数据类型 数组名[] ={初值1,2,……n}
二维数组声明格式
1.数据类型=new 数据类型 [行的个数][列的个数]
2.数据类型 数组名[][]=new 数据类型[行的个数][列的个数]
包
1.包的作用是分门别类管理,避免同名文件
2.包是为了迎合多人开发而开发出的一个工具
继承包括:方式重载,方法覆写
笔记:
1.当子类实例化时首先父亲得有构造方
2.只允许多层继承不能多重继承
3.子类可以直接用super()调用父亲中的无参构造
单词 |
overloading |
overriding |
定义 |
方法名称相同,参数的类型或个数不同.对权限没要求。 |
方法名称,参数的类型,返回值类型全部相同.被覆写的方法不能拥有更严格的权限 |
范围 |
发生在一个类中 |
发生在继承类中 |
super关键字的运用
知识注意点:super,this不能同用
属性访问 |
访问本类中的属性,如果本类没有此属性则从父类中继续查找 |
访问父亲中的属性 |
方法 |
访问本类中的方法,如果本类中没有此方法,则从父类中继续查找 |
直接访问父类中的方法 |
通用构造 |
调用本类构造,必须放在构造方法的首行 |
调用父亲构造,必须放在子类构造方法首行 |
特殊 |
表示当前对象 |
无此概念 |
final关键字
1.使用final声明的类不能有子类
2.使用final声明的方法不能被子类覆写
3.使用final声明的变量即成为常量,常量不可修改
抽象类的基本概念
1.包含一个抽象方法的类必须是抽象类(还有可能是接口)
2.抽象类和抽象方法都要使用abstract关键字声明
3.抽象方法只需要声明而不需要实现
4.抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中的全部抽象方法
5.抽象类的定义其实就是比普通类多了一些抽象方法而已,其他地方与普通类的组成基本上都是一样的
对象的多态性
向上类型:子类对象->父类对象(自动类型转换)
向下类型:父类对象->子类对象(强制类型转换)
父类到子类的强制类型转换要验证,要安全性验证。
用到instanceof关键字
对象多态性
在一个方法中使用对象的多态性,可接受任何子类对象,不论子类的增加,方法依旧在那,子类一旦发生向上转型关系后,调用方法肯定是被子类覆写过的方法
有关抽象类的一些知识
抽象类不能使用final关键字声明
抽象方法不能使用private声明(抽象方法必须被子类覆写)
抽象类中允许存在构造方法,且子类在实例化前必须先对父类进行实例化
笔记
π=Math*PI
覆盖只有发生在父类和子类之间,而重载可以发生在同一个类中
子类只继承父类的非私有属性和方法
java内存回收程序负责释放无用内存
java类中只允许单一继承
覆盖只发生在父类与子类之间,重载只发生在同一个类中
构造函数在创建对象时被调用
创建输入/输出流对象的import命令——import java.io.*;
接口相关知识
接口里全部由全局变量和公共抽象方法组成
一个抽象类可实现多个接口
子类可同时继承抽象类和实现接口
接口可被多继承
接口的方法永远是public
抽象类与接口的应用
在java中可以通过对象的多态性为抽象类和接口实例化,这样再使用抽象类和接口时可以调用子类中所覆写的方法
笔记
object类是所有类的父类,最根本的类
子类通过implement关键字实现接口
class 子类 implements 接口A,接口B
{
}
接口的继承
interface 子接口 extends 父接口A,父接口B
{
}
抽象类与接口之间的关系
定义 |
包含一个抽象方法的类 |
抽象方法和全局变量的集合 |
组成 |
构造方法、抽象方法、普通方法、变量、常量 |
常量、抽象方法 |
使用 |
子类继承抽象类(extends) |
’子类实现接口(implements) |
关系 |
抽象类可以实现多个接口 |
接口不能继承抽象类,但允许继承多个接口 |
常见设计模式 |
模板设计 |
工厂设计,代理设计 |
对象 |
通过对象的多态性产生实例化对象 |
通过对象的多态性产生实例化对象 |
局限 |
抽象类单继承的局限 |
接口没有单继承局限 |
实际 |
模板 |
标准或能力 |
如果抽象类和接口都可以使用的话优先使用接口,可以避免单继承的局限。
一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类。
异常的捕获及处理
1.出现异常程序可以有三种处理方法 1、完全不处理 2、立即处理 3、延迟处理
2.异常的概念:异常是导致程序中断运行的一种指令流,如果不对异常进行正确处理,则可能导致程序的中断执行
3.exception 处理所有异常
4.异常处理格式
try
{ 可能异常语句
}catch(异常类 异常对象)
{
编写异常处理语句
}finally{
一定会运行到的程序代码
}
throws关键字
1.用于方法定义位置,延迟方法处理
2.throw关键字用法
class Math{
public int div(int i,int j)throws Exception{
int temp=i/j;
return temp;
}
}
throw关键字
1.中断,抛出异常,抛出时直接抛出异常的实例化对象
2.throw关键字用法
public class ThrowDemo01{
public static void main (string args[]){
try{
throw new Exception ("自己抛出异常!")
}catch(Exception e) {
System.out.println(e);
}
}
}
exception类与runtimeexception类
前者必须使用try-catch后者不使用try-catch处理异常产生由JVM虚拟机处理
自定义异常类
class myException extends Exception{
public MyException(String msg){
super(msg)
}
}
public class DefaultException
public static void main(String[] args) {
try{
throw new MyException("自定义异常。");
}catch(Exception e);
{
System.out.println(e);
}
}
}
笔记
字符串包装为整形
int x=Integer.porseInt(arg[0])
object的子类不是包含是扩展,子类功能更加丰富
exception处理所有异常
throws最多只能把异常抛到main方法那里
throw不会单独使用
remove 减少元素
System.err.println 红色输出
多线程:实现多线程代码有两种方式一种是继承Thread类;一种是实现runable接口
继承Thread类
class 类名称 extends Thread{
属性……;
方法……;
}
public void run()
{
线程主体;
}
}
用继承Thread类实现多线程时要注意正确地启动线程,是不能直接调用run()方法的,而是应该调用从Thread类中继承而来的start()方法
实现Runnable接口
class 类名称 implements Runnable{
属性……
方法……
public void run(){
线程主体;
}
}
无论使用哪种方法,最终都必须要用Thread类才能启动多线程
线程的状态
1.创建状态
2.就绪状态
3.运行状态
4.堵塞状态
5.死亡状态
线程操作的相关方法
取得和设置线程名称
在Thread类中,可以通过getName()方法取得线程的名称,通过setName()方法设置线程的名称。
另外如果出现没有为线程指定名称,则系统会自动的为线程分配一个名称
判断线程是否启动
通过Thread类之中的start()方法通知CPU这个线程已经准备好启动,之后就等待分配CPU资源,用isAlive()方法来测试线程是否已经启动,而且仍在启动
线程强制运行
在线程操作中,可以使用joio()方法让一个程序强制运行,线程强制运行期间,其他程序无法运行,必须等待此程序完成之后才能继续执行
线程的休眠
在程序中用Thread.sleep()方法使程序短暂休眠
程序的中断
interrupt()方法,中断程序运行状态
程序的优先级
线程的礼让
在线程操作中,也可以用yield()方法将一个线程的操作暂时让给其他线程执行
笔记
继承Thread类不共享资源,Runnable接口共享资源
java IO
创建新文件
package hello.java;
import java.io.File;
import java.io.IOException;
public class Chreate {
public static void main(String args[]) {
File f=new File("D:\\test");
try
{
f.createNewFile();
}catch(IOException e)
{
e.printStackTrace();
}
}
}
JFrame类的常用操作方法
RandomAccessFile类常用操作方法
java再IO操作中相应步骤
1.使用File类打开一个文件
2.通过字节流或字符流的子类指定输出的位置
3.进行读/写操作
4.关闭输入/输出
字节流与字符流基本操作
字节流输出:OutputStream 一般在程序中用其扩展子类 FileOutputStream
piblic FileOutputStream(File file)throws FileNotFoundException
OutStream类常用方法
public FileInputStream(File file)throws FileNotFoundException
字符流输出:Writer 一般在程序中用其扩展子类FileWriter
public FileWriter(File file)throws IOException;
Writer类的常用方法
字符流输入:Reader 一般在程序中用其扩展子类FileReader
public FileReader(File file)throws FileNotFoundxception;
Reader类常用方法
字节流与字符流区别
字符流无缓存,使用字符流不需要关闭执行,字符只有在内存中才会形成,而所有文件在硬盘存储或者在传输的时候都是以字节形式进行的,包括图片都是以字节方式存储的,字节流更为广泛。
转换流
OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象
内存操作流
字符内存流:CharArrayReader(内存字符输入流)、CharArrayWriter(内存字符输出流)
打印流
在IO包中,打印流是输出信息最方便的类,主要包含字节打印流(PrintStream)和字符打印流(printer Writer)
Print Stream类常用方法
管道流
public void connect(PipedlnputStream snk)throws IOException
图形界面
AWT:抽象窗口工具包,java提供的用来建立和设置java图形用户界面的基本工具
AWT中包含的工具类:组件——Component 容器——Container 布局管理器——LayoutManager
JFrame类操作方法
Dimension类常用操作方法
point类常用操作方法
标签组件JLabel
JLabel组件表示的是一个标签,本身用于显示信息的,一般情况下是不能直接改变显示内容的。
JLabel类的常用方法和常量
更改JLabel文字样式
public void setFont(Font f)
Font类常用操作方法及常量
lmagelcon类构造方法
布局管理器
五种常见布局管理器:FlowLayout、BorderLayout、GridLayout、CardLayout、绝对定位
FlowLayout
流式布局管理器
FlowLayout类常用方法及常量
BorderLayout
BorderLayout是将一个窗口版面划分为东、西、南、北、中五个区域
BorderLayout类常用方法及常量
GridLayout
GridLayout布局管理器是以表格形式进行管理
GridLayout类常用方法及常量
CardLayout
CardLayout就是将一组组件彼此重叠进行布局
CardLayout类常用方法及常量
绝对定位
绝对定位是通过设置绝对坐标的方式完成布局
public void setBounds(int x,int y,int width,int height)
容器
JPanel
JPanel是常用到的容器之一、JPanel可完成各种复杂的界面显示,在JPanel中可加入任意组件,然后直接将JPanel容器加到JFrame容器中显示
JSplitPane
JSplitPane主要功能为分割面板,将一个窗口分割成两个子窗口
JSplitPane类操作方法
JTabbedPane
JTabbedPane是在一个面板上设置多个选项卡供用户选择
JTabbedPane类操作方法
JDesktopPane
JDesktopPane是规定父窗口基本形式
JDesktopPane类操作方法
JInternalFrame
JInternalFrame是用来规定各个子窗体,且JInternalFrame需加到JDesktopPane中
JInternalFrame类操作方法
文本输入框
单行文本输入框:JtextField
密码文本输入框:JpasswordField
多行文本输入框:JtextArea
事件处理
在Swing编程中,依然使用了最早的AWT的事件处理方式,所有事件类都是EventObject的子类
窗体事件
WindowListener是专门处理窗口事件的监听接口
监听适配器
适配器类,出于简化的目的,每个还有多个方法的的监听器接口都配有一个适配器类,这个类实现了接口中的所有方法,但是每个方法没有做任何事情,就是继承适配器类,重写其中的需要使用的方法,不必重写全部的方法,简单方便。
动作事件及监听处理
用ActionListener接口处理按钮,使按钮变得有意义
void actionPerformed(ActionEvent e) |
普通 |
发生操作时调用 |
键盘事件及监听处理
用KeyListtener接口对键盘操作进行监听
java数据库编程
JDBC简介
JDBC用于对各个数据库的连接与操作,而且可以方便的向数据库中发送各种SQL命令
JDBC驱动分类
1.JDBC-ODBC桥驱动
运用Sun提供的一个标准JDBC操作,直接利用微软的ODBC进行数据库的连续操作,但操作性能低,通常不推荐使用这种方式
2.JDBC本地驱动
直接使用各个数据库生产商提供JDBC驱动程序,但只能给特点的数据库,丧失了程序可移植性,操作的性能高
3.JDBC网络驱动
最灵活的JDBC驱动程序,此驱动可将JDBC转化成与DBMS无关的网络协议,然后被某个服务器装换成一种DBMS协议,可用于纯Java客机连接到多种不同数据库上。
4.本地协议纯JDBC驱动
将JDBC直接转换DBMS所使用的网络协议,这将允许从客户机机器上直接调用DBMS服务器,是Intranet访问的一个很实用的解决方法。
菜单组件