java基础知识查漏 四

1.JAVA多线程实现方式

(1)继承Thread类,并重写run()方法

(2)实现Runnable接口,,实现run()方法

(3)使用ExecutorService、Callable、Future实现有返回结果的多线程。

其中前两种方式线程执行完后都没有返回值,只有最后一种是带返回值的。





2.java中的数据类型分类:

基本数据类型(或叫做原生类、内置类型)8种:

整数:byte,short,int,long(默认是int类型)

浮点类型: float,double(默认是double类型)

字符类型:char

布尔类型:boolean

引用数据类型3种:数组,类,接口

其中,基本数据类型之间除了boolean,其他数据类型之间可以任意的相互转换(强制转化或默认转换)。





3、关于java同步化

构造方法不需要同步化,因为构造方法每次都是构造出新的对象,不存在多个线程同时读写同一对象中的属性的问题,所以不需要同步。

如果父类中的某个方法使用了synchronized关键字,而子类中也覆盖了这个方法,默认情况下子类中的这个方法并不是同步的,必须显示的在子类的这个方法中加上 synchronized关键字才可。当然,也可以在子类中调用父类中相应的方法,这样虽然子类中的方法并不是同步的,但子类调用了父类中的同步方法,也就相当子类方法也同步了。





4、java相关工具的作用

javac.exe是编译.java文件

java.exe是执行编译好的.class文件

javadoc.exe是生成Java说明文档

jdb.exe是Java调试器

javaprof.exe是剖析工具





5.java关键字和保留字

goto和const是保留字也是关键字。

Java 关键字列表 (依字母排序 共50组):

abstract, assert, boolean, break, byte, case, catch, char, class, const(保留关键字), continue, default, do, double, else, enum, extends, final, finally, float, for, goto(保留关键字), if, implements, import, instanceof, int, interface, long, native, new, package, private,
protected, public, return, short, static, strictfp, super, switch, synchronized, this, throw, throws, transient, try, void, volatile, while

java保留字列表 (依字母排序 共14组),Java保留字是指现有Java版本尚未使用,但以后版本可能会作为关键字使用:

byValue, cast, false, future, generic, inner, operator, outer, rest, true, var, goto (保留关键字) , const (保留关键字) , null

注意:java中没有sizeof这个敏感词。





6、java中加载驱动的方法

1.Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

2. DriverManager.registerDriver(new com.mysql.jdbc.Driver());

3.System.setProperty("jdbc.drivers", "com.mysql.jdbc.Driver");





7、java连接数据库的流程

加载驱动 DriverManager. registerDriver(Driver driver)

获取连接  Connection conn = DriverManager.getConnection(url,user,pass);

通过连接创建statement   Statement st = conn.createStatement();

解析sql获取结果集  ResultSet rs = st.excuteQuery(sql);

遍历结果集,获得数据  rs.getobject(xx)

释放资源,关闭连接

8、关于instanceof运算符

instanceof是java的二元运算符,用来判断他左边的对象是否为右面类(接口,抽象类,父类)的实例





9、java中的方法是对象的成员,而非类的成员。只有静态方法才属于类,可以不通过对象而只通过类名来直接调用。





10、关于静态方法的调用

public class TestClass {

   private static void testMethod(){

        System.out.println("testMethod");

   }

   public static void main(String[] args) {

        ((TestClass)null).testMethod();

   }

}

上述代码能否编译执行?答案:可以

方法是static静态方法,直接使用"类.方法"即可,因为静态方法使用不依赖对象是否被创建。null可以被强制类型转换成任意类型(注意不是任意类型的对象),于是可以通过它来执行静态方法。

非静态的方法用"对象.方法"的方式,必须依赖对象被创建后才能使用,若将testMethod()方法前的static去掉,虽然编译可以通过,但是运行时会报空指针异常。





11、getAttribute()和getParameter()

(1)HttpServletRequest类有setAttribute()方法,而没有setParameter()方法。

(2)当两个Web组件之间为链接关系时,被链接的组件通过getParameter()方法来获得请求参数。

如String username=request.getParameter("username");

(3)当两个Web组件之间为转发关系时,转发目标组件通过getAttribute()方法来和转发源组件共享request范围内的数据。

(4)request.getParameter()方法传递的数据,会从Web客户端传到Web服务器端,代表HTTP请求数据。request.getParameter()方法返回String类型的数据。request.setAttribute()和getAttribute()方法传递的数据只会存在于Web容器内部,在具有转发关系的Web组件之间共享。这两个方法能够设置Object类型的共享数据。

(5)request.getAttribute()方法返回request范围内存在的对象,而request.getParameter()方法是获取http提交过来的String类型数据。





12、集合的同步

HashMap,TreeMap 未进行同步考虑,是线程不安全的。

HashTable 和 ConcurrentHashMap 都是线程安全的。区别在于他们对加锁的范围不同,HashTable 对整张Hash表进行加锁,而ConcurrentHashMap将Hash表分为16桶(segment),每次只对需要的桶进行加锁。

Collections 类提供了synchronizedXxx()方法,可以将指定的集合包装成线程同步的集合。比如,

List  list = Collections.synchronizedList(new ArrayList());

Set  set = Collections.synchronizedSet(new HashSet());

上一篇:Yii2-自适应切换模板


下一篇:photoshopCS4换中文