Java常用类

一、字符串相关类
1. String类
①java.lang.String类代表不可变的字符序列。
②“xxxxx”为该类的一个对象。
③String类的常见构造方法:

  • String(String original):创建一个String对象为original的拷贝。
  • String(char[] value):用一个字符数组创建一个String对象。
  • String(char[] value, int offset, int count):用一个字符数组从offset项开始的count个字符序列创建一个String对象。

2. StringBuffer类
①java.lang.StringBuffer类代表可变的字符序列。
②StringBuffer和String类似,但StringBuffer可以对其字符串进行改变。
③StringBuffer类的常见构造方法:

  • StringBuffer():创建一个不包含字符序列的“空”的StringBuffer对象。
  • StringBuffer(String str):创建一个StringBuffer对象,包含与String对象str相同的字符序列。

二、基本数据类型包装类
1. 包装类(如:Integer,Double等)封装了一个相应的基本数据类型数值,并为其提供了一系列操作。
2. 以java.lang.Integer类为例,构造方法:

  • Integer(int value)
  • Integer(String s)
继续阅读“Java常用类”

Java数组

一、数组概述
1. 数组可以看成是多个相同类型数据组合,对这些数据的统一管理。
2. 数组变量属引用类型,数组也可以看成是对象,数组中的每个元素相当于该对象的成员变量。
3. 数组中的元素可以是任何数据类型,包括基本类型和引用类型。

二、一维数组
1. 一维数组的声明

type[] var; 

* type var[ ];也可以,但Java中推荐type[ ] var;
* Java语言中声名数组时不能指定其长度(数组中元素的个数),如int a[5];是非法的。
2. 数组对象的创建
Java中使用关键字new创建数组对象,格式为:
数组名 = new 数组元素的类型[数组元素的个数];
* 例如:

public class Test {
public static void main(String[] args) {
int[] s;
s = new int[5];
}
}

* 注意:元素为引用数据类型的数组中的每一个元素都需要实例化。

继续阅读“Java数组”

Java异常处理

一、Java异常的概念
1. Java异常是Java提供的用于处理程序中错误的一种机制。
2. 所谓错误是指在程序运行的过程中发生的一些异常事件(如:除0溢出,数组下标越界,所要读取的文件不存在)。
3. 设计良好的程序应该在异常发生时提供处理这些错误的方法,使得程序不会因为异常的发生而阻断或产生不可预见的结果。
4. Java程序的执行过程中如出现异常事件,可以生成一个异常类对象,该异常对象封装了异常事件的信息并将被提交给Java运行时系统,这个过程称为抛出(throw)异常。
5. 当Java运行时系统接收到异常对象时,会寻找能处理这一异常的代码并把当前异常对象交给其处理,这一过程称为捕获(catch)异常。

二、Java异常的分类

Java中定义了很多异常类,这些类对应了各种各样可能出现的异常事件。
  • Error:称为错误,由Java虚拟机生成并抛出,包括动态链接失败、虚拟机错误等,程序对其不做处理。
  • Exception:所有异常类的父类,其子类对应了各种各样可能出现的异常事件,一般需要用户显式的声明或捕获。
  • Runtime Exception:一类特殊的异常,如被0除、数组下标超范围等,其产生比较频繁,处理麻烦,如果显式的声明或捕获将会对程序可读性和运行效率影响很大。因此由系统自动检测并将它们交给缺省的异常处理程序(用户可不必对其处理)。
继续阅读“Java异常处理”

Java容器

一、容器的概念
Java API所提供的一系列类的实例,用于在程序中存放对象。位于java.util包内。

二、容器框架图
Java 集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection 接口又有 3 种子类型,List、Set 和 Queue,再下面是一些抽象类,最后是具体实现类,常用的有 ArrayList、LinkedList、HashSet、LinkedHashSet、HashMap、LinkedHashMap 等等。

继续阅读“Java容器”

Java面向对象

一、引用
1. Java语言中除基本类型之外的变量类型都称之为引用类型。
2. Java中的对象是通过引用对其操作的。
* A a = new A( ); 中,a是对象的引用,位于栈内存,指向位于堆内存的对象的实体,也就是
new A( )。

二、构造方法
1. 构造方法与类同名且没有返回值。
2. 当没有指定构造方法时,编译器为类自动添加形如 类名( ) { } 的构造方法。

三、方法的重载
1. 方法的重载是指一个类中可以定义有相同的名字,但参数不同的多个方法。调用时,会根据不同的参数表选择对应的方法。
2. 构造方法也可以重载。

四、类的继承
1. Java中使用extends关键字实现类的继承机制。
2. 通过继承,子类自动拥有了基类(superclass)的所有成员(成员变量和方法)。
3. Java只支持单继承,不允许多继承。
* 一个子类只能有一个基类,一个基类可以派生出多个子类。

继续阅读“Java面向对象”

Java特殊关键字

一、this

1. 在类的方法定义中使用的this关键字代表使用该方法的对象的引用。

2. 当必须指出当前使用方法的对象是谁时要使用this。

3. 有时使用this可以处理方法中成员变量和参数重名的情况。

4. this可以看作是一个变量,它的值是当前对象的引用。


二、super

1. 在Java类中使用super来引用基类的成分。


三、static

1. 在类中,用static声明的成员变量为静态成员变量,它为该类的公用变量,在第一次使用时被初始化,对于该类的所有对象来说,static成员变量只有一份。

2. 用static声明的方法为静态方法,在调用该方法时,不会将对象的引用传递给它,所以在static方法中不可访问非static的成员。
* 静态方法不再是针对于某个对象调用,所以不能访问非静态成员。

3. 可以通过对象引用或类名(不需要实例化)访问静态成员。


四、final

根据修饰位置的不同作用也不相同,针对三种情况:

1、修饰变量,被final修饰的变量必须要初始化,赋初值后不能再重新赋值。

被final修饰的变量必须初始化,初始化可以以三种方式:①定义时初始化,②在构造器中设置值,③在非静态块中为final实例变量设置值。

final修饰的变量被初始化后便不可改变,这里不可改变的意思对基本类型来说是其值不可变,而对于对象变量来说其引用不可变,即不能再指向其他的对象,但是对象的值是可以更改的。

2、修饰方法,被final修饰的方法代表不能重写。

3、修饰类,被final修饰的类,不能够被继承。

final修饰的类,类中的所有成员方法都被隐式地指定为final方法。


五、abstract

1. 用abstract关键字来修饰一个类时,这个类叫做抽象类;用abstract关键字来修饰一个方法时,这个方法叫做抽象方法。

2. 含有抽象方法的类必须被声明为抽象类,抽象类必须被继承,抽象方法必须被重写。

3. 抽象类不能被实例化。

4. 抽象方法只需声明,而不需实现。

Java内存解析

一、内存分区
Java的内存分为三个区,分别为:
1. 堆空间(heap)不连续的空间,用于存放new出的对象,或者说是类的实例
2. 栈空间(stack)连续的存储空间,遵循后进先出的原则,用于存放局部变量
3. 方法区(method):方法区存在于堆中,用于存放代码静态变量字符串常量

二、相关概念
1. Java中除了基本数据类型,其他的均是引用类型,包括类、数组等等。
2. 数据类型的默认值
基本数据类型默认值:
数值型:0
浮点型:0.0
布尔型:false
字符型:\u0000
引用类型:null
3. 变量初始化
成员变量可不初始化,系统会自动初始化;
局部变量必须由程序员显式初始化,系统不会自动初始化。

三、解析过程
待更新。

Head First设计模式

一、策略模式
1. 模式:定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户 。
2. 原则:
①找出程序中会变化的方面,然后将其和固定不变的方面相分离。
②针对接口编程,不针对实现编程。
③多用组合,少用继承。
3. 链接:策略模式

二、观察者模式
1. 模式:在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖他的对象都会收到通知,并自动更新。
2. 原则:
④为交互对象之间的松耦合设计而努力。

三、装饰者模式
1. 模式:动态地将责任附加到对象上。想要拓展功能,装饰者提供有别于继承的另一种选择。
2. 原则:
⑤开放-关闭原则:类应该对扩展开放,对修改关闭。

四、工厂模式:

2018考研复习计划

1.目标:政治70+,英语85+,数学135+,专业课120+
成绩:政治54,英语83,数学107,专业课111

2.参考资料:
政治:肖秀荣精讲精练、肖秀荣1000题、风中劲草、肖秀荣八套卷、肖秀荣四套卷、肖秀荣微博/微信、肖秀荣时政
英语:张剑历年真题黄皮书、新东方作文书、长难句解析、阅读书(可选)
数学:课本、张宇高数十八讲、张宇线代九讲、张宇强化班、张宇1000题、张宇真题、模拟卷(可选)
专业课:课本、真题

3.计划:
政治:暑假开始对照精讲精练做1000题,1000题要做两遍,第二遍在风中劲草中做笔记;九月份大纲出来后,肖秀荣微博会有考点变更提醒;背风中劲草;肖秀荣八套卷、四套卷出版后做选择题,背大题,肖秀荣押题很准;背时政

英语:背核心单词;做阅读书保持语感;做真题,研究真题;背几篇作文模板,形成自己的模板;时间多的话可以买本长难句解析看看。英语的阅读和作文是重点,建议考试时先写作文,做完阅读后做完型

数学:看张宇十八讲和九讲,不会的知识点看张宇基础班视频;做1000题;看张宇强化班视频做笔记;时间多的可以做模拟卷,但是模拟卷与真题还是有很大差距的,所以真题吃透了再做模拟卷;复习充分之后,按考试时间做真题,记录错题;看错题

专业课:根据历年的真题确定考试范围,有很多知识点从没考过;吃透课本,做例题和课后习题,考试可能会出现原题;研究真题

通过Java向Oracle数据库添加10W条数据

public void add() throws SQLException {
	Connection conn = DBUtil.getConnection();
	conn.setAutoCommit(false);  //关闭自动提交
	String sql = "" +
		 " insert into pf_bookinfo " +
		 " (bookname,author,publisher,language,genre,ISBN,floor,room,shelf,islent) " +
		 " values( " +
		 " ?,?,?,'中文','小说',?,2,'02','B','可借') ";

	PreparedStatement pstmt = conn.prepareStatement(sql);

	for(int i=1; i<=100000; i++) {
		pstmt.setString(1, Integer.toString(i));
		pstmt.setString(2, Integer.toString(i));
		pstmt.setString(3, Integer.toString(i));
		pstmt.setString(4, Integer.toString(i));
		pstmt.addBatch();  //把一条数据存入batch中

		if(i%5000==0){
			pstmt.executeBatch();
			conn.commit();  //batch中每满5000条数据提交一次
			pstmt.clearBatch();
		}
	}

	pstmt.executeBatch();
	conn.commit();  //提交最后不满5000条的数据
	pstmt.clearBatch();

	pstmt.close();
	conn.close();
}