zoukankan      html  css  js  c++  java
  • 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());










  • 相关阅读:
    LeetCode刷题--只出现一次的数
    Java进阶--多线程
    .NETCore :正则表达式
    .net core多线程:Thread
    .NETCore : Linq简介
    .NET Core:List,ArrayList和Dictionary
    .NET Core 装箱与拆箱
    .NET Core 泛型、逆变与协变
    .NET Core 类的生命周期
    .NET Core 类的多态与继承
  • 原文地址:https://www.cnblogs.com/kangsir/p/6653282.html
Copyright © 2011-2022 走看看