No.1
- 对属性使用getter和setter方法,体现的是注入性。
No.2
- jar 将许多文件组合成一个jar文件
- javac 编译
- javadoc 它从程序源代码中抽取类、方法、成员等注释形成一个和源代码配套的API帮助文档。
- javah 把java代码声明的JNI方法转化成C\C++头文件。 如 :
public class HelloNative {
public static native void greeting();
}
使用javah后生成
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class javaTest_semaphore_HelloNative */
#ifndef _Included_javaTest_semaphore_HelloNative
#define _Included_javaTest_semaphore_HelloNative
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: javaTest_semaphore_HelloNative
* Method: greeting
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_javaTest_semaphore_HelloNative_greeting(JNIEnv *, jclass);
#ifdef __cplusplus
}
#endif
#endif
No.3
- protected一个特点是只要子类都能访问,不管在不在一个包。
- default只能访问同一包。
No.4
- 抽象类也可以调用静态方法,不一定要被继承
- 抽象类不可以实例化,接口也不可以。
No.5
- Statement 每次执行sql语句,数据库都要执行sql语句的编译 ,最好用于仅执行一次查询并返回结果的情形,效率高于PreparedStatement.
- PreparedStatement是预编译的,使用PreparedStatement有几个好处
a. 在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。
b. 安全性好,有效防止Sql注入等问题。
c. 对于多次重复执行的语句,使用PreparedStament效率会更高一点,并且在这种情况下也比较适合使用batch;
d. 代码的可读性和可维护性。 - CallableStatement接口扩展 PreparedStatement,用来调用存储过程,它提供了对输出和输入/输出参数的支持。CallableStatement 接口还具有对 PreparedStatement 接口提供的输入参数的支持。
No.6
- 顶层容器是指可以不能被其他容器包含 ,是容纳其他容器的容器组件,
顶层容器包含JApplet、JDialog、JFrame和JWindow及其子类.
JFrame中就可以放Jtree(树形组件)
No.7
- 字符流=字节流+编码集
所以和字符流有关的类都拥有操作编码集(unicode)的能力。 - 字节流继承于InputStream OutputStream,字符流继承于InputStreamReader OutputStreamWriter
- 字节流:
InputStream
|-- FileInputStream (基本文件流)
|-- BufferedInputStream
|-- DataInputStream
|-- ObjectInputStream
字符流
Reader
|-- InputStreamReader (byte->char 桥梁)
|-- BufferedReader (常用)
Writer
|-- OutputStreamWriter (char->byte 桥梁)
|-- BufferedWriter
|-- PrintWriter (常用)
No.8
JDK8中,接口中的方法可以被default和static修饰,但是被修饰的方法必须有方法体。
No.9
Java中用正则表达式截取字符串中第一个出现的英文左括号之前的字符串。比如:北京市(海淀区)(朝阳区)(西城区),截取结果为:北京市。正则表达式为()
以下来自牛客网yoho66 的解答,微做修改:
- 什么是正则表达式的贪婪与非贪婪匹配
如:String str=“abcaxc”;
Patter p="abc";
贪婪匹配:正则表达式一般趋向于最大长度匹配,也就是所谓的贪婪匹配。如上面使用模式p匹配字符串str,结果就是匹配到:abcaxc(abc)。
非贪婪匹配:就是匹配到结果就好,就少的匹配字符。如上面使用模式p匹配字符串str,结果就是匹配到:abc(ab*c)。 - 编程中如何区分两种模式
默认是贪婪模式;在量词后面直接加上一个问号?就是非贪婪模式。
量词:{m,n}:m到n个
*:任意多个
+:一个到多个
?:0或一个
以上来自博主的博客,然后这道题目
.表示除\n之外的任意字符
表示匹配0-无穷
+表示匹配1-无穷
(?=Expression) 顺序环视,(?=\\()就是匹配正括号
懒惰模式正则:
src=".? (?=\\() "
结果:北京市
因为匹配到第一个"就结束了一次匹配。不会继续向后匹配。因为他懒惰嘛。 - (?<=Expression)
逆序肯定环视,表示所在位置左侧能够匹配Expression
(?<!Expression)
逆序否定环视,表示所在位置左侧不能匹配Expression
(?=Expression)
顺序肯定环视,表示所在位置右侧能够匹配Expression
(?!Expression)
顺序否定环视,表示所在位置右侧不能匹配Expression
No.10
在线程中调用 notify() 方法或 notifyAll() 方法,将通知其他线程从 wait() 方法处返回。
No.11
- throws用于在方法上声明该方法不需要处理的异常类型,用在方法上后面跟异常类名 可以是多个异常类
- throw用于抛出具体异常类的对象,用在方法内 后面跟异常对象只能是一个异常类型实体.
- try块必须和catch块或和finally同在,不能单独存在,二者必须出现一个.