Java 基础部分

Java 基础部分

object对象中默认的方法

名称功能
1wait线程通信,阻塞线程,默认释放锁,sleep不释放
2notify唤醒线程
3notifyAll唤醒所有线程
4hashCode返回对象哈希码,一般要重写,相同对象的hashcode一定相同,hashcode相同的对象不一定相同
5equals一般用来比较两个对象是否相等,如在map、set中要重写eqauls,重写之后判断对象是否相等
6clone浅拷贝,拷贝的是一个引用,深拷贝,重新开辟内存地址,一般实现cloneable接口重写clone函数
7finalize垃圾回收时会执行一次,会被加入一个FQueue,但不保证一定会执行,执行完毕后被回收,可能在此方法中重新获得引用产生逃逸
8getClass获得calss对象
9toString生成String对象,主要用作日志等信息的打印展示等

Arrays.sort( );

         * Arrays.sort 对基本类型是三向切分排序,引用类型是并归排序
         * 也可传入自己的比较器

String相关

/ * 后两个继承AbstractStringBuilder
         * string是final char value[],不可变!!!,可以用来存哈希值*/
new StringBuffer();//synchronized 修饰方法
new StringBuilder();//线程不安全

new StringBuffer();//synchronized 修饰方法
        new StringBuilder();//线程不安全
        String str = "offer";//自动放入字符串常量池
        String str1 = new String("offer");//两个对象,字符串常量池中一个,对象一个
        String intern = str1.intern();//入池,返回的是常量池中对象引用
        System.out.println(str == intern);//true

基本类型

 * 基本类型
     * byte 8
     * char 16
     * short 16
     * int 32
     * float 32
     * double 64
     * long 64
     * boolean 不确定,编译后会变成int ture=1,false=0

自动装箱与拆箱

     * 自动装箱与拆箱
     * integer缓存池大小是-128-127,但是它特殊在上届可调-XX:AutoBoxCacheMax=<size>
     * Integer a=1;内部会调用valueOf方法从缓存池返回值同一个对象引用,没有就new Integer()
     * Integer b = new Integer():创建两个对象缓存池中一个字面量、堆上一个对象、引用
     * int c=1,引用缓存池

抽象类与接口:

     * 抽象类和抽象方法用Abstract,抽象类可以没有抽象方法,抽象方法必须在抽象类中,可以有自己的私有方法,不能直接实例化,只能被子类继承在实例化
     * 接口可以看成完全的抽象类,java8以后也可以有默认的实现,方法都是public,字段默认static final;
     *
     * 子类必须必须能替换掉所有父抽象类,接口只是提供约定
     * 接口可以多继承,抽象类只能单继承
     * 接口可以让不相关的类实现同一种方法
     * 抽象类适合几个相关类之间共享代码,继承非静态和常量字段,权限非public

重写与重载:

     * 重写出现在继承中,跟原方法一致  动态分派,关注实例类型,主要区分的是调用者,访问权限宽于父类,返回值类型等于父类或小于,异常范围大于调用父类的构造方法super,和普通方法super.XXX()
     * 重载是在本类中,方 法名称相同但是参数类型个数顺序至少有一个不同,返回值不同不算,静态分派,关注的是静态类型,主要区分参数的类型问题

参数传递问题:

基本类型和引用类型都是值传递,传的是对象的地址,基本类型传的是值的拷贝,传完后不相关,引用传递传的是引用的地址值

反射:

     * 反射:class对象与java.lang.reflect
     * 三种方式获取class对象:XXX.class、Class.forname(XXX.XXX。XXX)、getclass()
     *
     * field:get\set参数相关
     * method:与invoke方法连用,实现方法调用
     * constuctor:利用constructor穿件新对象
     *
     * 扩展性高,性能开销大
     *
     * Spring中利用反射
        distributed dis = new distributed();
        Class<? extends distributed> aClass = dis.getClass();
        Class<distributed> distributedClass = distributed.class;
//        Class<?> forName = Class.forName(com.cht.originalCode.design_partterns);
//        for (Field field : forName.getDeclaredFields()) {
//            System.out.println(field);
//        }

        for (Constructor<?> constructor : distributedClass.getConstructors()) {
            System.out.println(constructor);
        }

        Method[] methods = aClass.getDeclaredMethods();

异常处理

     * throwable:
     *  error:错误,jvm无法处理  stackoverflowError、outofmemeroyError
     *  Exception:异常
     *      runtimeException:运行时异常-->算数运算、数据下标越界,非法参数、空指针异常、字符串转数字异常
     *      IOException:io异常
     * 
     * 异常处理方式
     *  throws 方法声明,方法不处理交由调用处理
     *  throw 直接跑出异常的实例 throw new IOException;
     *  try  catch 捕获并处理
     *      try{
     *          return;
     *      }catch(){
     *
     *      }finally{
     *
     *      }
     *      return;
     *
     *     先执行try中有异常就catch,没异常就return,然后是finally,
     *     此时return值为返回保存在内存中,finally执行完之后在执行tyr中return
     *     最后的return 不执行
     *
     *     return1-finallu-return1;
     *     如果return在finally中 return1-finally-return2
     *
     * 任何执行try 或者catch中的return语句之前,都会先执行finally语句,如果finally存在的话。
     * 如果finally中有return语句,那么程序就return了,所以finally中的return是一定会被return的,
     * 编译器把finally中的return实现为一个warning。

泛型

     * 泛型
     *  例如集合类中约束使用同一类型,编译时期擦出,避免ClassCastException
     *
     *  通配符:
     *      非限定:<?>代表任意类型
     *      限定:<? extends T>类型必须是t的子类、<? super T>类型必须是t的父类
     *
	//泛型方法:未在类上声明泛型
    public<K,V> V  put(K key,V value){
        return put(key,value);
   }
		//泛型类
        class obj<T> {
            private T obj;
            public T getObj() {
                return obj;
            }
            public void setObj(T obj) {
                this.obj = obj;
            }
        }

Java8 新特性

     * java8新特性:
     *  lambda     (XXXX,XXXXX)-> sout("XXXXX")
     *
     *  接口写默认方法实现
     *
     * Stream
     *  filter:过滤流
     *  map:流一一映射
     *  limit:指定数量流
     *  sorted:A排序流
     *  collect:流归约(collectors.XXX())
     *  summaryStatistics:统计返回值.getMax/getMin/getAverage......
     *  parallelStream 并行流处理
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值