
java笔记
文章平均质量分 60
deargua
学下吧,软件工程师
展开
-
面向对象基础
继承基本类和抽象类用extends关键字,实现接口类的继承用implements关键字extends只支持单继承,implements可以多继承,如下写法是可以的:public class Apple extends Fruit implements A, B{}继承是IS-A关系,可以通过instanceof来判断实例是否是一个类的实例。class A {}class B原创 2014-12-03 21:24:33 · 551 阅读 · 0 评论 -
JDBC笔记-BLOB和获取主键
BLOB是MySQL中的数据类型,在Oracle中类型稍有不同,但是原理一致。MySQL的四种BLOB类型(单位:字节)TinyBlob 最大 255,Blob 最大 65K,MediumBlob 最大16M,LongBlob 最大 4G由于BLOB的数据时无法用字符串拼装的,所以插入BLOB类型的数据必须使用PreparedStatement。本文中举例说明通过J原创 2016-05-02 19:59:33 · 493 阅读 · 0 评论 -
JDBC笔记-效率提升
1.将普通的Statement语句换成用PreparedStatement执行。2.批量处理根据执行批量处理的语句不同,可以提高几十倍的速度不等。PreparedStatement.addBatch(String sql);PreparedStatement.executeBatch();PreparedStatement.clearBatch();//执行完后,需要清空B原创 2016-05-02 23:31:12 · 593 阅读 · 0 评论 -
数据库连接池
数据库连接池操作的是Connection,具体的查询等操作要通过DBUtils或者Hibernate来实现。c3p0与dbcp区别dbcp没有自动回收空闲连接的功能c3p0有自动回收空闲连接功能dbcp是通过配置properties文件来配置连接池信息的,当然也可以不配置直接在java类中写。c3p0既可以通过properties也可以通过xml来配置参数。他们的操作方式类原创 2016-05-14 23:22:02 · 393 阅读 · 0 评论 -
DBUtils
上次学到dbcp或者c3p0可创建连接池,但是Connection创建了,用什么来访问数据呢,答案是:DBUtils进行CRUD操作即可。QueryRunner类顾名思义,该类是用来执行Query语句的。其中构造方法有QueryRunner() //不带事务的话,用这个就可以啦。QueryRunner(DataSource ds) //如果用到事务,则需要带datasource的构原创 2016-05-15 12:46:02 · 825 阅读 · 0 评论 -
Eclipse快捷键总结
Ctrl + F11 运行F11调试运行内容辅助键Alt + / 提示作用。当有些类忘记名字时,可以输入前几个字母,然后Alt+/可以自动提示。变量名起名字时,也可以自动完成。main + alt + / 可以自动输出main函数。syso + alt + / 可以跳出system.out.printCtrl+Shift+F 格式化当前代码注意当文档原创 2015-10-20 22:56:31 · 469 阅读 · 0 评论 -
JDBC笔记-Transaction
1.原子性 多个一系列的动作不可分割。2. 一致性(Consistency)强一致性:读操作可以立即读到提交的更新操作。弱一致性:提交的更新操作,不一定立即会被读操作读到,此种情况会存在一个不一致窗口,指的是读操作可以读到最新值的一段时间。最终一致性:是弱一致性的特例。事务更新一份数据,最终一致性保证在没有其他事务更新同样的值的话,最终所有的事务都会读到之前事务更新的最新值。如原创 2016-05-02 22:54:06 · 476 阅读 · 0 评论 -
设计模式小结
1.工厂模式简单工厂 基本上就是直接new对象的方式工厂方法 判断类的方法参数,根据参数进行判断创建不同的对象抽象工厂 根据创建接口,抽象类创建对象2.单例模式恶汉模式 如果是要线程安全,则只需加上synchronized即可。class Singleton{ private static Singleton instance = null; private S原创 2017-07-29 21:36:59 · 287 阅读 · 0 评论 -
序列化Serializable
简单来说序列化就是一种用来处理对象流的机制。所谓对象流也就是将对象的内容进行流化,流的概念这里不用多说(就是I/O)。我们可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间(注:要想将对象传输于网络必须进行流化)!在对对象流进行读写操作时会引发一些问题,而序列化机制正是用来解决这些问题的!问题的引出:如上所述,读写对象会有什么问题呢?比如:我要转载 2017-07-22 11:06:14 · 328 阅读 · 0 评论 -
PO VO DAO DTO BO TO
ORM:Object Relational Mapping 对象关系映射,对象与关系数据库之间的映射。DAO,PO,VO这三个概念都是基于ORM而产生的概念。DAO:data access object 数据访问对象,最主要是访问数据类,一个DAO对应一个POJO对象。DAO通常和PO结合使用,DAO接口中包含了各种数据库的操作方法。通过它的方法,结合PO对数据库进行相关的操作。夹在业务转载 2016-06-16 21:55:48 · 466 阅读 · 0 评论 -
可变参数和枚举和静态导入
可变参数public class Test{ //用数组的方式,然后通过foreach的方式可以实现可变参数数组 void f(Object[] args) { for (Object o : args) { System.out.println(o); } } //Java自带的方法 void f2(Object ... args) { for (O原创 2015-03-27 13:40:42 · 605 阅读 · 0 评论 -
基础知识笔记
static方法就是没有this的方法。由于不存在this,所以不能通过“向对象发送消息”,即static方法不能调用非static得方法。构造器是一个特殊的static方法,构造函数可以调用非静态函数。将不需要被覆盖的方法定义为final的好处,可以避免被误覆盖。更重要的原因可以关闭动态绑定,这样编译器不需要进行处理动态绑定,可以为final的方法调用生成更有效的代码。原创 2015-04-30 10:33:09 · 493 阅读 · 0 评论 -
匿名类
匿名内部类class Contents{ int data = 1; void func() { System.out.println("data"+data); }}class NoNameClass{ //这里将新建的内部类向上转换成其父类Contents返回 //由此也可以看出,内部类只能重写父类的方法,利用多态的特性可以被调用的。 //但是新增的属性是无法被原创 2015-03-29 11:52:07 · 813 阅读 · 0 评论 -
内部类和嵌套类
内部类.this和.newclass OuterClass{ int data = 3; class InnerClass { void func() { //访问外围类的成员 System.out.println("InnerClass.func "+ "data:" + data); } } InnerClass getInnerClass()原创 2015-03-28 22:20:22 · 765 阅读 · 0 评论 -
协变和抗变
在OO中,协变是指按照继承链正向改变,抗变是指逆向改变.class Grain{ public String toString() { return "Grain"; }}class Wheat extends Grain{ public String toString() { return "Wheat"; }}class Mill{ Grain pr原创 2015-03-28 17:58:52 · 1116 阅读 · 0 评论 -
泛型笔记
数组与其他容器的区别:效率高其他容器通过自动包装也可以包含基本类型,另外泛型不支持基本数据类型。Arrays.asList使用泛型实现的,不支持原型数据。即如果是int[]数组,则asList返回的还是一个地址。而Integer则可以被处理一个列表。public static List asList(T... a)Introspector 内省泛型原创 2016-04-05 17:33:39 · 473 阅读 · 0 评论 -
PECS原则
经常发现有List、Set的声明,是什么意思呢?表示包括T在内的任何T的父类,表示包括T在内的任何T的子类,下面我们详细分析一下两种通配符具体的区别。extendsList foo3的通配符声明,意味着以下的赋值是合法的:1234567891011//转载 2017-07-26 07:52:54 · 6467 阅读 · 1 评论 -
JDBC笔记-Meta类
1.DatabaseMetaDataDatabaseMetaData类中提供了许多方法用于获得数据源的各种信息。getURL() 返回String类型的数据库的URLgetUserName() 返回用户名isReadOnly() 数据库是否为只读数据库getDatabaseProductName()getDatabaseProductVersion()getDriver原创 2016-04-29 22:38:04 · 535 阅读 · 0 评论 -
JDBC笔记-PreparedStatement
1.Statement语句执行sqlString sql = "insert into customers (name, email) values("+ parameterName + "," + parameterEmail+ ")";Statement statement = connection.createStatement(sql);int rslt = state原创 2016-04-30 20:43:15 · 405 阅读 · 0 评论 -
基础知识汇总
1.Java继承中为什么不可以降低父类重写方法的访问权限Liskov替换原则,子类对象可以被当成父类对象使用。如果可以降低子类的访问权限,那就违反了这一原则了。2.String变量的内容是不可以改变的,String的toLowerCase等方法的实现,并不是修改了本身的内容,而是创建一个新的字符串返回的。3.Java中又enum,没有struct和union。4.原创 2014-12-03 22:47:34 · 594 阅读 · 0 评论 -
基础知识super&异常
1.构造函数不可以有返回值类型2.如果定义了显示的构造函数,则默认构造函数就没了。3.子类继承的时候不会继承构造函数,但是如果没有显示调用父类的方法,则会默认在所有构造函数中调用super(),如果父类中定义了又参数的构造函数,而没有定义无参数的构造函数,那么这个默认的调用就会失败,必须手动调用super(...)原创 2014-12-05 21:28:03 · 951 阅读 · 0 评论 -
控制执行流程
foreachpublic class Test{ public static void main(String[] args){ int arr[] = {1,2,3}; for (int i=0;i<3;i++) { System.out.println(arr[i]); } //for each的用法 for (int i:arr) { S原创 2015-03-13 23:40:35 · 536 阅读 · 0 评论 -
类继承
1.如果定义了自定义构造函数,则默认构造函数不会被创建。2.子类的构造函数中必须调用父类的构造函数,如果父类又没有参数的构造函数,或者默认构造函数,则系统会自动调用无参构造函数3.如果父类中没有午餐构造函数,则必须手动调用。4.finalize函数是protected void的5.finalize函数是不可控的,如果想真的析构则用try catch原创 2015-03-28 11:40:51 · 508 阅读 · 0 评论 -
接口相关零碎的东西
接口中得所有成员函数都是public的。接口中可以定义成员变量,但是成员变量默认是static final 的。即只能是静态常量。抽象类中得成员函数以及成员变量则没有此特殊规定。interface extends interfaceclass implements interface非嵌套类和接口只能又public和默认的包访问权限嵌套类本质上来说同成员函数一样,可原创 2015-03-29 23:33:10 · 693 阅读 · 0 评论 -
Java基础语法
1.java虚拟机实例通过调用某个类的main()来运行一个Java程序,而这个main()必须是public static void 并接收一个字符串数组作为参数,任何拥有这样一个main()的类都可以作为java程序的起点。一个文件中可以有多个public static void 的main函数,但是只有唯一的public类的main会被自动调用。2.一个文件有且只能有一个共有类,该类原创 2014-12-02 21:12:37 · 767 阅读 · 0 评论 -
this-gc-初始化-匿名类笔记
1.this有两种用法: Test(String s) { //Test(); 构造函数的调用必须用this this(); System.out.println(s); System.out.println(this.s); //this的第二种用法,代表当前对象原创 2015-10-18 23:50:55 · 464 阅读 · 0 评论 -
类的构造和析构
基本类型重载时会自动将小类型提升到int类型,如下的程序public class Test{public static void main(String args[]){Test t = new Test();t.f1(3); //默认提升为intt.f1((char)3);//进行了显示的转换,所以会调用char的函数}void f1(char x){原创 2015-03-27 08:28:44 · 1723 阅读 · 0 评论 -
容器
Java容器类类库的用途是“保存对象”,容器可以分为两类:1)Collection:List、Set、Queue2)Map※hashtable,Vector是遗留下来的数据结构,不建议使用。ArrayList,LinkedListHashSet,TreeSet,LinkedHashSetHashMap,TreeMap,LinkedHashMap原创 2015-04-30 16:22:32 · 533 阅读 · 0 评论 -
异常
Catch 顶级父类Exception可以捕获所有的异常class MyException extends Exception{void test(){System.out.println("test");}}public class NewTest{public static void main(String[] args) throws Except原创 2015-04-06 21:55:43 · 715 阅读 · 0 评论 -
零碎的考题
short s=1;s = s+1; short s = 1;s+= 1;第一个会报错,因为整数提升,类型不匹配。第二个没有问题,扩展的运算符都隐含了自动强制类型转换。环境变量中classpath的作用,在任意的路径下可以执行在classpath中指定的路径下面的类文件。在java执行.class时,会优先执行classpath下的文件,然后再到当前路径下查原创 2016-01-11 22:40:15 · 436 阅读 · 0 评论 -
AOP笔记
AOP面向切面编程(Aspect oriented Programming)将通用需求功能从不相关的类当中分离出来,能够使得很多类共享一个行为,一旦发生变化,不必修改很多类,而只需要修改这个行为即可。比如在编程时通用的Cache,Error handling,log等功能,这些内容不适合放在某个共通类中,而是统一处理比较好。在面向过程编程中,可能比较容易想到,但是在经历长时间的面向原创 2016-04-05 18:43:10 · 430 阅读 · 0 评论 -
Java新特性
Java5:1、泛型 Generics: 引用泛型之后,允许指定集合里元素的类型,免去了强制类型转换,并且能在编译时刻进行类型检查的好处。 Parameterized Type作为参数和返回值,Generic是vararg、annotation、enumeration、collection的基石。 A、类型安全转载 2016-04-07 00:02:44 · 581 阅读 · 0 评论 -
线程笔记
Java采用的是抢占式调度方式。Thread 和 Runnable区别。1.通常情况使用Thread即可,但是Thread是一个类,如果想线程化的对象已经继承了一个类,则由于单继承的特性。只能通过实现Runnable接口来实现。2.Runnable适合多个相同程序的代码去处理同一个资源,该资源放在实现Runnable接口的类中,传递到不同的线程中即可。比如下面的例子,两个线原创 2016-04-10 12:37:22 · 371 阅读 · 0 评论 -
JDBC笔记-基本操作
JDBC缩写:Java Database ConnectivityJava中对数据库的操作都是面向接口编程的,使用JDBC时,不管底层是Mysql还是Oracle,所有的操作都是一样的。数据库连接使用的是Connection接口,这个结构是定义在JavaSE的SDK中的,而不是JavaEE的SDK中的。可以看到Connection是没有子类实现的,具体的实现是每个数据库厂商提供的。各数据库原创 2016-04-29 16:27:48 · 992 阅读 · 0 评论 -
RTTI&反射笔记
Class.forName("ClassName")等效于 ClassName.class,都是获取ClassName的一个Class实例。但是后者不会将ClassName进行实例化,但是Class.forName()则会实例化ClassName原创 2015-05-14 23:52:34 · 573 阅读 · 0 评论