课程总结

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不能同用

区别点 this super
属性访问 访问本类中的属性,如果本类没有此属性则从父类中继续查找 访问父亲中的属性
方法 访问本类中的方法,如果本类中没有此方法,则从父类中继续查找 直接访问父类中的方法
通用构造 调用本类构造,必须放在构造方法的首行 调用父亲构造,必须放在子类构造方法首行
特殊 表示当前对象 无此概念

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类常用方法

字节流输入:InputStream 一般在程序中用其扩展子类FileInputStream

public FileInputStream(File file)throws FileNotFoundException

InputStream类常用方法

字符流输出:Writer 一般在程序中用其扩展子类FileWriter

public FileWriter(File file)throws IOException;

Writer类的常用方法

字符流输入:Reader 一般在程序中用其扩展子类FileReader

public FileReader(File file)throws FileNotFoundxception;

Reader类常用方法

字节流与字符流区别

字符流无缓存,使用字符流不需要关闭执行,字符只有在内存中才会形成,而所有文件在硬盘存储或者在传输的时候都是以字节形式进行的,包括图片都是以字节方式存储的,字节流更为广泛。

转换流

OutputStreamWriter:是Writer的子类,将输出的字符流变为字节流,即将一个字符流的输出对象变为字节流输出对象

InputStreamReader:是Rider 的子类,将输入的字节流变为字符流,即将一个字节流的输入对象变为字符流的输入对象

内存操作流

字节内存流:ByteArrayInputStream(内存字节输入流)、ByteArrayOutputStream(内存字节输出流)

字符内存流:CharArrayReader(内存字符输入流)、CharArrayWriter(内存字符输出流)

打印流

在IO包中,打印流是输出信息最方便的类,主要包含字节打印流(PrintStream)和字符打印流(printer Writer)

管道流

管道流作用主要是可以进行两个线程之间的通信,分为管道输出流(Piped OutputStream)、管道输入流(PipedInputStream)

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类构造方法

JButton类的常用方法

布局管理器

五种常见布局管理器: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)

容器

常见的五种容器JSplitPane、JPanel、JTabbedPane、JScrollPane、JDesktopPane、JInternalFrame、

JPanel

JPanel是常用到的容器之一、JPanel可完成各种复杂的界面显示,在JPanel中可加入任意组件,然后直接将JPanel容器加到JFrame容器中显示

JSplitPane

JSplitPane主要功能为分割面板,将一个窗口分割成两个子窗口

JSplitPane类操作方法

JTabbedPane

JTabbedPane是在一个面板上设置多个选项卡供用户选择

JTabbedPane类操作方法

JScrollPane

JScrollPane是用来加滚动条的容器

JScrollPane类操作方法

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访问的一个很实用的解决方法。

菜单组件

JMenu与JMenubrar

在Java中实现菜单必须使用JMenu组件,使用了JMenu组件首先要了解JMenuBar组件,JMenuBar组件是用来摆放JMenu组件的,JMenuBar组件是将JMenu组件加入到窗口中

原文地址:https://www.cnblogs.com/1793979463hyx/p/12035661.html