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

    继承: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类型,如果不能转换则直接报错,如果不能确定类型,则通过编译。

    抽象类与接口的关系

    包装类

     包装类分为两种类型:
    

    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)基本数据类型转换为字符串

    1. 任何数据类型使用了"+"连接空白字符串就变为了字符串类型。
    2. 使用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类主要方法:

    字节流与字符流

    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实例化对象。
    常用方法:

    字符流

    字符输出流:Writer
    它也是一个抽象类,需要通过子类FlieWriter实例化对象。
    常用方法:

    字符输入流: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
    读取一个文本行。通过下列字符之一即可认为某行已终止:换行 (' ')、回车 (' ') 或回车后直接跟着换行。
    包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 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常用方法

    JMenu常用方法

    JMenuItem类的常用方法

    JMenuItem继承AbstractButton类,因此JMenuItem也可以理解为一种特殊的JButton组件,事件处理就可以使用Actionevent事件的监听。
    在使用记事本或者Word时,可以通过文件选择框选择要打开或保存的文件,在Swing中可以使用JFileChooser组件实现此功能。
    JFileChooser类常用方法

    文件选择框的三种返回状态
    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此链接的博客上学习。

  • 相关阅读:
    poj 1655 Balancing Act 树的重心
    poj 1985 Cow Marathon 树的直径
    hdu 4607 Park Visit 求树的直径
    hdu 1548 A strange lift 宽搜bfs+优先队列
    poj 2711 Leapin' Lizards && BZOJ 1066: [SCOI2007]蜥蜴 最大流
    poj 2449 Remmarguts' Date K短路+A*
    hdu 1285 确定比赛名次 拓扑排序
    hdu 3061 Battle 最大权闭合图
    hdu 3879 Base Station 最大权闭合图
    poj 2987 Firing 最大权闭合图
  • 原文地址:https://www.cnblogs.com/songzhihaoT1/p/12034595.html
Copyright © 2020-2023  润新知