Category: Java

JAVA JDBC 报错一则!

Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

MYSQL在高版本的连接中需要指定SSL开启状态

String url = "jdbc:mysql://localhost:3306/bbc?"	+ "user=root&password=privacy&useUnicode=true&characterEncoding=UTF8&useSSL=false";

 

Java常用API

java.io.BufferedReader

用于从文件中读入一段字符,所属套件:java.io

构造函数BufferedReader(java.io.FileReader FileReader变量)
说明:新建一个BufferReader对象。

  •  close方法 void close()
    说明:关闭BufferReader对象。
  • readLine方法 java.lang.string readLine()
    说明:从文件中读取一行字符。若为NULL,代表读取至文件结尾。

java.io.BufferedWriter

向文件写入一段字符,所属套件:java.io

构造函数:BufferedWriter(java.io.FileWrite FileWrite变量)
说明:新建一个BufferWriter对象。

  • close方法:void close()
    说明:关闭BufferedWriter对象。
  • newLine方法:java.lang.string newLine()——
    说明:向文件写入分行符。
  • write方法:void write(char字符);void write(char[]字符数组);void write(string 字符串);void write(char[]字符数组,int数组中起始位置,int输出长度) 说明:将数据写入文件。

Java.io.File

File用于管理文件或目录; 所属套件:java.io

构造函数:File(java.lang.string路径,java.lang.string文件名)
说明:建立代表文件或目录的File对象。

  • canRead方法:(boolean canRead())判断是否可读取
  •  canWrite方法:(boolean canWrite)判断是否可以写入
  • createNewFile方法:(boolean createNewFile())说明:创建文件,成功返回TRUE,否则返回false
  • delete方法:(boolean delete())说明:删除文件或目录,成功返回TRUE,否则返回FALSE。
  • exist方法:(boolean exist()) 说明:检查文件或目录是否存在。
  • getName方法:(java.lang.string getName()) 说明:取得文件或目录的名称。
  •  lastModified方法:(long lastModified()) 取出最后一次修改的时间。
  • length方法:(int length())说明:取得文件的长度
  •  listfiles方法:(File[] listFiles()) 说明:取出该目录下的所有文件。
  •  isDirectory方法:(boolean isDirectory())说明:判断是否为文件。
  •  isFile方法:(boolean isFile) 说明:判断是否为文件。
  • isHidden 方法:( Boolean isHidden()) 说明:判断是否为隐藏文件。
  • mk dir方法:(boolean mkdir)说明:创建目录,成功返回TRUE,否则返回FALSE

java.io.FileReader

FileReader 用于从文件中读取字符 ;所属套件:java.io

构造函数(FileReader (Java.lang.strig文件路径和名称) 说明:为要读取的文件建立一个FileReader对象)

  • read方法:(1)(int read())说明:从文件读取一个字符,返回值为一整数,为读取得字符串的字符码,若返回值为-1,则代表已经读到文件的结尾。(2) int read(char[] chararray,int startpos,int length)说明:将从startpos开始,读取length字符,保存到chararray数组中,返回值是读取到的字数,如果返回-1,则代表已经读到文件的结尾。
  •  skip方法:(long skip(int 要略过的字符数) 说明:直接将文件读取指针向后移动数个字符,从而略过字符不读取);

java.io.FileWrite类

  • 用于向文件中写入读取字符;所属套件java.io
    FileWrite(java.lang.string文件路径与名称) Filwrite(java.lang.string文件路径与名称,Boolean append) 说明:为要写入的文件建立一个FileReader对象,参数append表示是否在原文件后添加。
  • Write方法:(void write(char字符),char[]字符数组,string字符串,char[]字符数组、int数组中起始位置,int输出长度)说明:将数据写入文件。

java.lang.string类

string类用于处理字符串这种数据类型;所属套件:java.lang

charAt方法。(语法:char charAt(int index) 说明:返回指定位置的字符

  •  equals方法:(语法:boolean equals(object anobject) 说明:判断字符串是否与指定的对象相等)事例:if (str.equals(“abc”)){out.print(“str的值为abc”);}
  •  index of方法:(语法:int indexOf(char ch);int indexOf(string str) 说明:返回要查找的字符或子串第一次出现在字符串中的位置,如果找不到该字符/子字符串,将返回-1)。
  • lastindexOf方法(语法:int lastindexOf(char ch);int lastindexOf(string ch) 说明:返回要查找的字符或子串最后一次出现在字符中的位置。如果找不到该字符/子字符串,将返回-1)
  • replace方法:(语法:string replace(char oldChar,char newChar) 说明:替换字符串中的某个字符,返回值为替换后的结果。)
  • substring方法:(方法:string substring(int beginIndex);string substring(int beginIndex,int endIndex) 说明:取得字符串中的子串。示例: string a=”AABB”;b=a.substring(1) 最后结果是“ABB”c=a,subsirng(1,2);最后结果是“AB”
  • 大小写转换的方法(语法:string toLowerCase();string toUpperCase() 说明:对字符串进行大小写转换,返回值为转换后的结果)
  • valueOf方法(语法:string valueOf(Object obj) 说明:将对象转换为字符串,返回值为转换后的结果)

java.net.URL Encoder

说明:URLEncoder类用于URL的编码。所属套件:JAVA .net

  • encode方法(语法:java.lang.string encode(java.lang.sring要编码的字符串) 说明:返回编码后的字符串。)

java.text.simpleDateFormat

说明:simpleDateFormat类用于处理Date数据的格式化输出和输入。所属套件:java.text)

构造函数:(语法:simpleDateFormat(java.lang.strng格式化字符串)
说明:根据指定格式化字符串,产生simpleDateFormat对象)

  •  format方法:(语法:java.lang.string format(java.util.Date日期数据) 说明:将Date数据转化为指定格式的字符串。)
  • parse方法:(语法:java.util.Date parse(java.lang.sring 字符串) 说明:将字符串转化为Date 数据。如果格式错误,将会产生异常。

java.spl.DriverManager

说明:当数据库驱动程序加载到内存中后,系统将会自动利用DriverManager类注册加载的驱动程序,使其状态为可使用(available)所属套件:java.spl

  • getConnection方法:(语法:getConnection(string数据源名称,string用户名称,string用户密码) 说明:打开数据库链接。)

java.sql.connection

说明:Connection类用于处理一条与数据库的链接。所属套件:Java.sql

  • createStatement方法:(语法:java.spl.statement createStatement(int 指针类型参,int数据一致性参数) 说明:建立Statement对象。

java.sql.ResultSetMetaData

说明:ResultSetMetaData类用于获取记录集字段的信息。所属套件:java.sql.

  • getColumnCount方法:(语法:int getColumnCount() 说明:取得记录集中的字段数目)
  •  getColumnName方法:(语法:java.lang.String getColumnName(int column) 说明:取得字段的字称。其中字段索引值是记录集中字段的索引值,第一字段的索引值1,最后一个字段的索引值即为总字段数。

java.sql.Statement

说明:Statement 类可以执行SQL动作和查询语句,实现对数据库的操作。所属套件:java.sql

  •  execute方法:(语法:boolean execute(string sql) 说明:执行SQL动作语句,如插入、删除、修改等。)示例:st.execute(“delect from table”) //从表table中删除数据。
  • executeQuery方法:(语法:java.sql.ResultSet executeQuery(string sql) 说明:执行SQL查询语句,得到相应的记录集。)示例:rs=st.execute(“select * from table”) //从表中取出数据。

java.sql.ResultSet

说明:ResultSet类用于处理一个记录集。所属套件:java.sql

  • absolute方法(语法:boolean absolute(int row) 说明:设置记录指针指向记录的位置。)
  • afterLast 方法:(语法:void afterLast() 说明:将指针移动到最后一条记录之后。)
  •  beforeFirst()方法:(语法:void beforeFirst() 说明:将指针移动到第一条记录之前。)
  • first方法:(语法:boolean first() 说明:将记录指针移至第一条记录。)
  • isAfterlast 方法:(语法:Boolean isAfterLast() 说明:判断记录指针是否指向最后一条记录之后)
  • isBeforeFirst方法:(语法:Boolean isBeforeFirst() 说明:判断记录指针是否指向第一条记录之前。
  • isFirst方法:(语法:Boolean isFirst() 说明:判断记指针是否指向第一条记录)
  • isLast 方法:(语法:Boolean isLast() 说明:判断记录指针是否指向最后一条记录。)
  • 字段值获取方法(语法:object get…(string columnName);object get…(int columnIndex) 说明:从ResultSet对象中取出字段的值)示例:string name=rs.getstring(“use”);
  • getMetaData 方法:(语法:java.sql.ResultSetMetaData ResultSetMetaData getMetaData() 说明:取得该ResultSet对象对应的ResultSetMetaData对象。)
  • getRow方法:(语法:int getRow() 说明:取得目前记录指针指向记录的位置)
  • next方法:(语法:boolean next() 说明:将指针移动到下一条)
  • previous方法:(语法:boolean previous() 说明:将指针移到上一条)

java.util.Date

说明:Date类用于处理日期这种数据类型。所属套件:java.util

构造函数:(语法:Date();Date(long毫秒数);Date(int年,int月,int日,int时,int分,int秒) 说明:产生一个Date对象。此对象为给定的时间。如果没有输入参数的话,则此Date对象的值为目前的系统时间。)

  • getTime方法(语法:long getTime() 说明:该对象代表的时间,距离1970年1月1日午夜的毫秒数。)
  • get Year方法:(语法:int getYear() 说明:获得Date对象的年值,输出的数值以1900为基础。)
  • getMonth方法:(语法:获得Date对象的月值,输出的数值以0代表1,1代表2,其余类推)
  • getMonth方法:(语法:int getDate() 说明:获得Date对象的日值)
  • getDay方法(语法:intDay() 说明:获得Date对象的星期值。)
  • getHours方法:(语法:int getHours() 说明:获得Date对象的小时值)
  • getMinutes方法:(语法:int getMinutes() 说明:获得Date对象的 分值。)
  • getSeconds方法:(语法:int getSeconds() 说明:获得Date对象的秒值。)
  • setYear方法:(语法:void setYear(int year) 说明:设置Date 对象年值,输入的数值以1900为基准。)设置:Month\day\hours\seconds都是用这种方法。

javax.servlet.http.cookie

说明:Cookie类主要用于处理对cookie的使用。所属套件:javax.serlet.http

构造函数(语法:Cookie(“数据名称”,值) 说明:新建一个Cookie象。需要注意的是,保存到cookie的仅能为字符串,因此,对其他类型的数据需要进行转换。)

  • getDomain 方法:(java.lang.string getDomain() 说明:取得可存取该cookie变量的网站地址。)
  • getName方法:(语法:java.lang.string getName() 说明:取得Cookie变量中数据的名称。)
  • getMaxAge方法:(语法:long setMaxAge() 说明:取得Cookie的有效时间。输入的有效时间单位为秒)
  • getPath方法:(语法:java.lang.string getPath() 说明:取得COOKIE变量的存取范围)
  • setDomain方法:(语法void setDomain(java.lang.string pattern) 说明:设置可存取Cookie变量的网站。)

java.servlet.http.httpservletRequest

说明:JSP中隐含对象Request即为该类的对象。用于处理与浏览器请求有关的信息。所属的套件:javax.servlet.http

  • getattribute方法:(语法:Object getAttribute(java.lang.string变量名称) 说明:取出保存request对象内的数据。该数据是使用setAttribute方法存放在request对象中的。
  • getBufferSize方法:(语法:int getBufferSize() 说明:取得目前缓冲区的大小。)
  • getCookies 方法:(语法:javax.servlet.http.Cookie[] getCookies() 说明:取得与请求有关的Cookies.)
  • getDateHeader方法:(语法:getDateHeader(java.lang.string name) 说明:取得指定名称的、日期类型的标头。)
  • getIntHeader方法:(语法:取得指定名称的、整数类型的标头)
  • getHeader方法:(语法:java.lang.string getHeader(java.lang.string name) 说明:取得指定名称的标头。)
  • getMethod方法:(语法:java.lang.string.getMethod() 说明:取得数据发送的方法(GET或POST))
  • getParameter方法:(语法:java.lang.string getParameter(java.lang.string name) 说明:取得参数名称为name的值。返回值为string.如果参数不存在,则返回NULL。 )
  • getParameterNames方法:(语法:java.util.Enumeration getParameterNames() 说明:取得所有的参数名称。
  • getParameterValue方法:(语法:java.lang.stirng[ ] getParameterValues(string Name) 说明:取得所有参数名称为name的参数值。
  • getProtocol方法:(语法:java.lang.string getProtocol() 说明:取得使用的协议(HTTP/1.1或HTTP/1.0)
  • getQuerystring方法:(语法:java.lang.string getQuerystring() 说明:取得请求的参数字符串(数据发送的方法为get)).
  • GetRealPath 方法:(java.lang.string getRealPath(java.lang.string虚拟目录地址) 说明:取得虚拟目录对应的磁盘地址。)
  • GetRequestURL方法:(语法: java.lang.stirng getRequestURI() 说明:取得请求的URI(不包括请求字符串))
  • getRemoteAddr方法:(语法:java.lang.string. getRemoteAddr() 说明:取得发出请求的用户的IP地址/)
  • getRemoteHost方法:(语法:java.lang.string getRemoteHost() 说明:取得发出请求的用户的主机名称,如果不能确定主机名则返回用户的IP地址)
  • getRemoteUser方法:(语法:java.lang.string getRemoteUser() 说明:取得发出请求的用户名称。)
  • setAttribute方法:(语法: void setAttribute( java.lang.string 变量名称,object变量值) 说明:将数据保存到request对象内。)
  • setBufferSize方法:( 语法:void setBufferSize(int 缓冲区大小) 说明:设置缓冲区大小。
  • removeAttribute方法:(语法:void removeAttribute(java.lang.stirng变量 ) 说明:删除保存在request 对象内的数据。

javax.servlet.HttpSession

说明:JSP中隐含对象Session即为该类的对象,用于处理与当前客户联机会话有关的信息。所属套件:javax.servlet.http

  • getAttribute方法:(语法:Object getAttribute(java.lang.stirng变量) 说明:取出保存在Sesson内的变量)。
  • getCreationTime方法:(语法:long getCreation Time() 说明:取出此Sesson对象的建立的时间)
  • getid方法:(语法:java.lang.string getID() 说明:取出此Sesson对象的编号)
  • getLastAccesssedTime方法:(语法:long getLastAccessedTime() 说明:取出此Sesson对象的最后存取时间)
  • getMaxInactiovInterval方法:(语法:int getMaxInactiveInterval() 说明:取得目前设置的Sesson对象最大时间间隔,单位为秒。如果用户超过此时间间隔无动作,则Sesson对象失效)
  • invalidate方法:(语法:void invalidate() 说明:强制结束服务端代表此联机的Sesson对象)
  • isNew方法(语法:boolean isNew() 说明:判断sesson对象是否为刚刚建立的对象)
  • setAttribute方法:(语法:void setAttribute(java.lang.string变量名称,Object变量值) 说明:将数据保存到sesson对象内)
  • removeAttribute方法:(语法:void removeAttribute(java.lang.string变量) 说明:删除保存在sesson对象中的数据)

javax.servlet.jsp.jspWrite

说明:jsp中隐含对象out即为该 类的对象。所属套件:javax.servlet.jsp

  • flush()方法:(语法:void flush() 说明:强制输出缓冲区中的数据。该方法与HttpServletResponse类的flushBuffer 具有相似的效果)
  • getBufferSize方法:(语法:int getBufferSize() 说明:取得目前缓冲区的大小)
  • getRemaining文法:(语法: int Remaining() 说明:取得目前缓冲区的剩余空间。)
  • println 方法:(语法:void println(java.lang.string 输出字符串) 说明:输出字符串。)

JAVA 多态总结

什么是多态

  1. 面向对象的三大特性:
    封装继承多态(抽象)
  2. 多态的定义:
    指允许不同类的对象对同一消息做出响应。即同一消息可以根据发送对象的不同而采用多种不同的行为方式。(发送消息就是方法的调用)
    简单来说,多态就是相同的行为,不同的实现
  3. 实现多态的技术称为:
    动态绑定(dynamic binding),是指在执行期间判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。
  4. 多态的作用:
    消除类型之间的耦合关系。
  5. 现实中,关于多态的例子:
    比方说按下 F1 键这个动作,如果当前在 Word 下弹出的就是 Word 帮助;在 Windows 下弹出的就是 Windows 帮助和支持。同一个事件发生在不同的对象上会产生不同的结果。

多态的必要条件

  1. 继承关系
  2. 重写
  3. 父类引用指向子类对象

多态的表现

  • 重写overriding是父类和子类之间多态性的一种表现
  • 重载overloading是一个类中多态性的表现。

多态的分类:

  • 静态多态(使用重载实现)
    在编译期就已知方法执行的最终结果
  • 动态多态(使用动态绑定和重写实现)
    编译期未知,运行期根据绑定对象的不同,有不同的效果。

Read more

JAVA 类的高级概念

访问修饰符

每一个成员(成员变量、方法和构造器)都有一个访问修饰符,用来判断谁可以访问该成员。

本类 同包类 不同包类
子类 非子类 子类 非子类
public
protected
默认修饰符
private

封装的概念及好处

  1. 组装(定义一个类就是封装)
    类的定义:1、属性  2、行为
  2. 信息隐藏
    • 访问修饰符
      Public、Pprotected、默认、Private
    • 方法实现调用者无需知道方法的具体步骤,只关心效果(功能)的达成
    • 访问器、修改器(get、set方法)
  3. 封装的好处
    • 类的成员变量可以成为只读或者只写的提供的方法可以根据自己的意义来是否提供给使用者
    • 类可以对存储在其成员变量中的内容有一个整体的控制可以对用户传进来的参数进行判断是否符合要求,在接口处把控
    • 类的用户不需要知道类是如何存储数据的
  4. 类的任何一个方法都是封装性的体现

Static关键字

  1. 凡是使用Static修饰的,都与对象无关,与类有关
  2. 凡是使用Static修饰的,都是优先加载的(JVM加载的时候就开始加载);
  3. 构造方法是不能使用Static修饰的(因为构造是在JVM加载后执行的动作)

属性:

  1. 类属性
    • 全类共享一个值(一处更改全类改变)
    • 存在于数据段的静态区,JVM加载期既放入
    • 常量属性直接用Static
    • 变量属性一定要分析出全类共享一个值才能使用
  2. 方法(又被称之为类方法)
    • 方法中只能操作Static修饰的属性或方法
    • 工具类的工具方法一般设置成Static(不改变属性值,只做处理操作)
  3. 初始化块
    1. 静态初始化块:
      • 在类加载期被执行,仅执行一次(因为加载是只做一次的)
      • 可以在类准备期间书写一些准备工作的代码,所以经常使用
      • 使用频率常常比静态方法和静态属性高;
    2. 实例初始化块:
      • 在产生对象的时候执行,可以被执行多次。
      • 在本类构造之前,在父类构造之后执行
      • 很少使用,功能与构造方法重合

静态类成员(方法)别名:类方法

  1. Static修饰的方法:可以直接用类进行调用。与对象无关,属于类级别;
  2. Static修饰的方法和属性在加载期会被优先加载;Static的方法不能操作费Static的属性和其他方法

使用范围:

  1. 工具类的工具方法设置为Static
  2. Static 修饰的方法叫静态方法,即类方法
    Static修饰过的方法属于类方法,它不属于这个类的实例(对象),因此在static修饰的方法中为变量赋值就会报错,因为我们内存中根本就还没有该变量。
  3. 类方法只能使用静态变量

访问方法:不用创建对象,直接使用   类名.属性

  1. 静态方法不能访问变量
  2. 非静态方法可以访问静态属性和变量

Read more

JAVA输出一组双色球

难点:红球不能一样~

实现方法:使用util库的Random获取随机数,再拼装为数组

package org.jalena;

import java.util.Random;

public class OutNumber {

	public OutNumber() {
	}

	private int[] getRedBall() {

		Random num = new Random(); // new一个随机数出来
		int[] redBall = new int[6]; // 声明一个6个数的int数组

		boolean result = false;

		do {
			int count = 0;
			result = false; // 循环赋值

			// 生成一个数组
			for (int i = 0; i < redBall.length; i++) {
				redBall[i] = num.nextInt(31) + 1;
			}

			// 判断数组是否有相同的
			for (int i = 0; i < redBall.length - 1; i++) {
				for (int j = i + 1; j < redBall.length; j++) {
					if (redBall[i] == redBall[j])
						count++;
				}
			}

			if (count > 0) {
				result = true;
			}

		} while (result);

		return redBall;
	}

	private String getBlueBall() {
		Random num = new Random();
		int blueBall = num.nextInt(31) + 1;

		String oblueBall;

		if (blueBall < 10) {
			oblueBall = "0" + blueBall;
		} else {
			oblueBall = "" + blueBall;
		}

		return oblueBall;
	}

	// 输出一组双色球号码
	public void getSsq() {

		// redBall
		System.out.print("红球是:");
		for (int a : this.getRedBall()) {
			if (a < 10) {
				System.out.print("0" + a + " ");
			} else {
				System.out.print(a + " ");
			}
		}

		// blueBall
		System.out.println("\t" + "蓝色球是:" + this.getBlueBall());

	}
}

Archives