Java学期总结
学期总结
学习Java已经是学期尾声了,总结一下自己在学习的时候,虽然上课是听的认真的,但是课后没有练习。导致知识点有很多盲区。
虽然学期接近尾声,但是我们队Java的学习才刚刚进入。我们要坚持,耐得住寂寞。
面向对象的基本概念
(1)对于面向对象的程序设计有三个主要特征:封装性,继承性,多态性。
封装性
为属性封装:private 属性类型 属性名称;
为方法封装:private 方法返回值 方法名称(参数列表){}
构造方法
1.构造方法的名称必须与类名称一致
2.构造方法的声明处不能有任何返回值类型的声明
3.不能再构造方法中使用return返回一个值
构造方法定义格式
class 类名称
{
访问权限 类名称 (类型1 参数 1,类型2 参数 2, ......)
{
程序语句;
........ //构造方法没有返回值
}
}
(2)类与对象的关系
类:定义出一个基本的模板,代表着一个共性。对象:每一个具体的人,根据不同给予不同的姓名,代表一个个性。定义一个类,要声明成员变量(属性),然后定义方法的内容。当定义了一个类后,要使用这个类,则需要通过对象。一定要记住如果一个对象要被使用,则对象需要被实例化。在开发中,每个类可以产生多个实例化对象,只要在实例化对象时使用了关键字new,那么就表示开辟新的堆内存空间,而每一个实例化对象都将会占据自己的堆,栈内存。
(3)当我们创建一个类后,这一类中就会有多个对象,对象在可以被使用之前必须要被正确地实例化。
实例化作用:
1.检查类是否加载
2.分配父类型空间, 按照属性分配空间, 属性自动初始化为"零"
这两个作用是我所知道的,当然我说的可能不全面,希望以后能补充完整
(4)为什么私有属性要使用set跟get方法设置和访问?
将数据与行为进行分离,体现了对象的封装性,封装就是将属性私有化,提供公有的方法访问私有的属性。我个人理解就是每个人都有特定的名字跟特定的性格,不能随意修改,只有通过特定的方法才能修改,所以我们将成员变量声明为private,再通过 public的方法来对这个变量进行访问
(5)我放过一个经常的错误就是,前面定义类属性的类型的时候一定要保证后面调用这个类的属性,类型一定要保证跟前面保证一致
举个例子:
private double math;
public float getMath()
{
return math;
}
这样是不行的,前面用double,后面用float,这种数据类型的转换是不被认可的。
三.java中String类中常用的方法
(1)字符串与字符数组的转换
用toCharArray()方法将字符串变为字符数组
String str = "abcdef"; char c[] = str.tocharArray();
(2)从字符串中取出指定位置的字符
String str = "abcdef" System.out.println(str.charAt(x)); //x为第几个字符
(3)字符串与byte数组的转换
String str = "abcdef";
byte c[] = str.getBytes();
(4)取得一个字符串的长度
Srting str = "abcdef"; System.out.print(str.length);
(5)查找一个字符串是否存在
String str = "abcdef"; System.out.print(str.indexOf("i")); //i为字符,即查到指定字符位置
String str = "abcdef";
if(str.contains("i"))
{
System.out.print("存在这个字符");
}
(6)去掉左右空格
String str = " abcdef "; System.out.print(str.tirm());
(7)字符串截取
String str = "abcdef"; System.out.print(str.substring(i)); //i表示从那个位置开始截取,为数字 System.out.print(str.substring(0,5)); //表示从0-5截取
(8)按照指定的字符串拆分字符串
String str = "abcdef"; String c[] = str.split("i"); //i表示要拆分的内容 for(int i=0;i<c.length;i++) //输出拆分的内容 { System.out.println(c[i]); }
(9)字符串大小写转换
”要转换的内容“.toUpperCase; 小写转换大写
”要转换的内容“.toLowerCase; 大写转换小写
(10)判断是否以指定的字符串开头或者结尾
if(str.startsWith("i")) //i为指定的内容 { System.out.println("以i结尾") } if(str.endsWith("i")) { System.out.println("以i开头"); }
(11)不区分大小写进行字符串比较
equals //这个比较是区分大小写的 equalslgnoreCase //这个比较是不区分大小写的
(12)将一个指定的字符串,替换成其他的字符串
String str = "abcdef"; String newstr = str.replaceAll("c","d"); //将所有的c换成d System.out.println(newstr);
四.继承
(1)类的继承格式
class 父类{} //定义父类 class 子类 extends 父类{} //使用extends关键字实现继承
通过子类继承父类
只准多层继承不能多重继承,在java中只准单继承,不能使用多重继承,即:一个子类只能继承一个父类。
继承注意事项
子类是不能直接访问父类的私有成员的,但是子类可以调用父类中的非私有方法,但是不能直接调用父类中的私有成员。子类直接访问父类的私有属性受限制,而要通过setter()或者getter()调用,就可以访问了
(2)继承的进一步研究
序号 | 区别点 | 重载 | 覆写 |
1 | 单词 | Overloading | Overriding |
2 | 定义 |
方法名称相同,参数的类型 或个数不同 对权限没有要求 |
方法名称,参数的类型,返回值类型全部相同 被覆写的方法不能拥有更严格的权限 |
3 | 范围 | 发生在一个类中 | 发生在继承类中 |
序号 | 区别点 | this | super |
1 | 属性访问 | 访问本类中的属性,如果本类中没有此属性则中父类中继续查找 | 访问父类中的属性 |
2 | 方法 | 访问本类中的方法,如果本类中没有此方法,则从父类中查找 | 直接访问父类的方法 |
3 | 调用参数 | 调用本类的构造,必须放在构造方法的首行 | 调用父类构造,必须放在子类构造方法的首行 |
4 | 特殊 | 表示当前对象 | 无此概念 |
(3)final关键词
使用final声明的类不能又子类
使用final声明的方法不能被子类调用
使用final声明的变量即成为常量,常量不可以修改
(4)抽象类的基本概念
包含一个抽象方法的类必须是抽象类
抽象类和抽象方法都要使用abstract关键声明:
抽象方法只需要声明而不需要实现
抽象类必须被子类继承,子类(如果不是抽象类)必须覆写抽象类中全部的抽象方法
五.
(一)在Java中可以使用instanceof来判断一个对象到底属于哪个类,对象instanceof类返回boolean类型
(二)接口可以理解为一种特殊的类,里面全部是由全局变量和公共的抽象方法所组成;与抽象类一样,接口要使用也必须通过子类,
(三)一个子类可以同时继承抽象类和实现接口。
(四)对象向上转型: 父类 子类对象 = 子类实例; 对象向下转型: 子类 子类对象 = (子类)父类实例;
(五)允许一个抽象类实现多个接口。一个接口是不允许继承抽象类的。允许一个接口继承多个接口。一个接口不能继承一个抽象类,但是可以通过extends关键字同时继承多个接口,实现接口的多继承。
六.
1.抽象类和接口都不能直接实例化,如果要实例化,抽象类变量必须指向实现所有抽象方法的子类对象,接口变量必须指向实现所有接口方法的类对象。
2.抽象类要被子类继承,接口要被类实现。
3.接口只能做方法申明,抽象类中可以做方法申明,也可以做方法实现
4.接口里定义的变量只能是公共的静态的常量,抽象类中的变量是普通变量。
5.抽象类里的抽象方法必须全部被子类所实现,如果子类不能全部实现父类抽象方法,那么该子类只能是抽象类。同样,一个实现接口的时候,如不能全部实现接口方法,那么该类也只能为抽象类。
6.抽象方法只能申明,不能实现。abstract void abc();不能写成abstract void abc(){}。
7.抽象类里可以没有抽象方法
8.如果一个类里有抽象方法,那么这个类只能是抽象类
9.抽象方法要被实现,所以不能是静态的,也不能是私有的。
10.接口可继承接口,并可多继承接口,但类只能单根继承。
区别点 | 抽象类 | j接口 |
定义 | 包含一个抽象方法的类 | 抽象方法和全局变量 |
组成 | 构造方法,抽象方法普通方法,常量,变量 | 常量,抽象方法 |
使用 | 子类继承抽象类 | 子类实现接口 |
关系 | 抽象类可以实现多个接口 | 接口不能继承抽象类,但可以继承多个接口 |
常见设计模式 | 模板设计 | 工厂设计,代理设计 |
对象 | 都通过对象的多态性产生实例化 | |
局限 | 抽象类有单继承的局限 | 接口没有单继承的局限 |
实际 | 作为一个模板 | 是作为一个标准或是表达一种能力 |
选择 | 如果抽象类和接口都可以使用,有限使用接口,避免单继承的局限 | |
特殊 | 一个抽象类中可以包含多个接口,一个接口中可以包含多个抽象类 |
一、键盘事件及监听处理:
1.在Swing的事件处理中可以对键盘的操作进行监听,直接使用KeyListener接口。
KeyListener接口的常用方法
KeyEvent事件的常用方法
二、鼠标事件及监听处理:
1.MouseListener接口方法:
MouseEvent事件的常用方法:
鼠标拖拽事件及监听处理:
在Swing的事件处理中可以使用MouseMotionListener接口完成鼠标的拖拽操作。
三、单选钮:JRadioButton
1.在swing中可以使用JRadioButton完成一组单选钮的操作。
常用方法:
四、菜单组件
1.JMenu与JMenuBar
JMenu组件可以实现菜单类,JMenuBar组件的功能是用来摆放JMenu组件。
JMenuBar类的常用方法:
JMenu类的常用方法:
2.JMenuItem
JMenuItem继承AbstractButton类,
JMenuItem的常用方法:
数据库总结:
JDBC是Java提供的一套数据库操作的标准,不同的数据库生产商要按照标准生产数据库驱动,我们开发者只需要掌握核心的接口与类就可以通过SQL实现任意的数据库操作。
JDBC的主要操作类及接口:
Java.sql.CallableStatement:用于执行SQL存储过程
Java.sql.Types:定义了表示SQL类型的常量
java.sql.DriverManager :用于管理jdbc驱动程序
Java.sql.Connection :用于建立与特定数据库的连接
Java.sql.Statement 一个Statement的对象用于执行静态sql语句,并获得语句执行后产生的后果
Java.sql.PreparedStatement 创建一个可以编译的sql语句对象,该对象可以多次被运行,以提高执行效率,是Statement的子接口
Java.sql.ResultSet 用于创建表示sql语句检索结果的结果集,用户通过结果集完成对数据库的访问
Java.sql.CallableStatement:用于执行SQL存储过程
Java.sql.Types:定义了表示SQL类型的常量
在JDBC中基本操作中最常用的类和接口就是DriverManger、Connection、Statement、Result、PrepaerdStatement。
2.MySQL数据库:
MySQL的官方网站是:www.mysql.com
MySQL的安装及配置:端口设置默认值是3360.