java基础总结

来源:互联网 发布:知乎的运营模式 编辑:程序博客网 时间:2024/06/05 06:50
 

 
 
    
一.  面向对象: {
 1.面向对象的思想 :基于面向过程的编程思想
    特点:符合我们思想的
         将复杂的简单化
         将我们从执行者变为指挥者
    开发:不断创建对象使用对象指挥对象做事情
    设计:就是管理和维护对象之间的关系
    特征:封装,继承,多态     
 2.类与对象及其使用 :
    类:java中基本单位
    类:相关属性和行为的集合
    对象:该类事物的具体的表现形式,new出来的,类的具体存在的个体
 3.成员变量和局部变量的区别 ?
    在类中的位置不同  
        成员变量 类中方法外
        局部变量 方法中或者是方法声明中
    在内存中的位置不同
       成员变量 堆内存
       局部变量 栈内存
    生命周期不同
        成员变量 随着对象的创建而创建,随着对象的消失而消失
        局部变量 随着方法的调用而创建,随着方法的调用完毕而销毁
    初始化值不同
        成员变量 有初始化值
        局部变量 没有初始化值,必须赋值之后才可以使用
 4.匿名对象
     就是没有名字的对象 使用场景: 匿名对象作为实际参数传递;调用方法,仅仅只是调用一次的时候
    
 5.this关键字 当前对象的引用 {局部变量隐藏成员变量的时候使用this,就是说局部变量和成员变量名一样的时候,使用this,代表的成员位置的那个变量}
 6.构造方法 :用于对对象的数据进行初始化 {方法名和类名相同;没有返回值,连void都没有;}  对于构造方法,其实是可以后面写上return,仅仅表示方法结束,其实其他的任意void方法都可以后面写上return
 7.static关键字: 存在方法区的静态区
        随着类的加载而加载
        优先于对象存在
        被类的所有对象共享
        可以通过类名和对象名调用
    在静态方法中,没有this关键字,static是随着类的加载而加载的,this是随着对象的创建而存在,静态比对象先存在    
 8.静态变量和成员变量的区别:
    所属不同
    内存中的位置不同
    内存出现的时间不同
    调用不同    
 9.代码块
    局部代码块:在方法中出现,限定变量的生命周期,及早释放,提高内存利用率
    构造代码块:在类中方法外,多个构造方法中的相同的代码放到一起,每次调用构造都执行,并且在构造方法前执行
    静态代码块:在类中方法外,加static修饰,用于给类初始化,在类加载的时候执行一次,并且执行一次
    静态代码块>>构造代码块>>构造方法
 10.继承中构造方法的关系:
        子类的所有的构造方法都会默认去访问父类中的空参构造,因为子类继承父类中的数据,可能还会使用父类中的数据,所以子类初始化之前,一定要完成父类的数据初始化 ,每一个构造方法的第一条语句默认都是super()
 11.抽象类中可以不定义抽象方法吗?
        可以,抽象类的作用仅仅是为了不让该类创建对象
 12.类与类,类与接口,接口与接口的关系?
    类与类:继承关系,只能单继承,可以多重继承
    类与接口:实现关系
    接口与接口:继承关系,可以多继承
 13.final的特点
    可以修饰类,方法,变量
    修饰类,类不能被继承
    修饰方法,方法不能被复写
    修饰变量,变量就成了常量,只能被赋值一次
 14.final修饰变量的初始化时机:
    在对象构造完毕之前初始化即可
    常见的给值:1.定义的时候直接给值 2.构造方法中
}
二 .常见类 {
  1.object类
    hashcode方法: 返回该对象的哈希码值 ,将对象的内部地址值转换为一个整数.根据哈希算法计算出来的一个值,这个值和地址值有关,但是不是实际地址值.
    getClass方法: 返回次object的运行时类/就是字节码文件的对象
    equals方法: 这个此方法被重写的时候,默认情况下比较的是地址值,当此方法重写的时候,通常要重写hashcode方法.字符串的equals的方法比较的是内容是否相同   ./我们重写equals方法,就是比较成员变量的值
               基于的原理就是字符串的equals的比较的是内容
    toString方法: 返回该对象的字符串表示形式.方法值等价于getClass().getname()+@+integer.toHexString(hashCode()), 直接输出一个对象名,其实就是调用对象的toString方法
  2.Sting类 { (获取功能)
    1,遍历 charAt(索引)
    2,length  获取长度
    3.统计大小写以及数字的次数.遍历判断范围 'a' 'z' '0''9' 'A' 'Z'
  String类(转换功能)
    1.getBytes
    2.toCharArray
    3.valueOf 方法重载 任意类型的数据转为字符串
    4.大小写转换  toLowerCase
    5.concat把字符串拼接
    其他的功能  
     1.替换 replace  
     2.去除空格
     3.按照字典顺序比较大小
     字符串反转案例:
  }
  3.StringBuffer类
  4.StringBuilder类
}
三 . 集合 {
  1.集合 collection map
  2.collection集合里面包含list和set集合 list集合是重复,有序的集合 set集合是不重复,无序的集合  list集合下有分支 arrayList linkedList set下面分 HashSet TreeSet
  3.map集合是以键值对存在的 hashMap HashTable Treemap
  4.collection是最基本的集合接口,所有的子类都必须实现两个构造方法 无参{创建新的空collection} 带参{传入一个集合,相当于复制}
  5.collection的方法:  
     添加  add方法 addAll
     删除 clear 清空 remove 删除 removeAll(传入集合 )
     判断  contains 包含 isEmpty()  containsAll( 传入集合) 包含      
    size() 集合中元素的个数
集合转换为数组 toArray();

    list集合 {
arrayList  数组结构 查询快 增删慢 不同步 { 队列 先进先出}
linkedList  链表结构  查询慢 增删快  不同步 {堆栈 先进后出}
方法 :  get(index)  set(index,dement)
        subList(index,index) 截取
linkedList的特有方法: 围绕着头和尾展开的方法  
                     addFrist  addLast getFrist getLast
                     removeFrist  removeLast 获取头部或者是尾部的元素 并且删除
                    
}
    set集合{
        HashSet 哈希表结构 查询快,不同步
        保证元素的唯一性,依赖于 hashCode()方法 和 equals()方法
        
        HashSet还有一个子类是linkedHashSet {
        存取的顺序一致 底层结构是 哈希表+链表
        }

        TreeSet 底层数据结构是 红黑树(一种自平衡的二叉树)
    }
    
    Map集合{
        注意的就是间是唯一的,值可以重复 ,每个键只有一个值.键值对的形式而存在
        遍历 1.根据键找值 获取键集keyset() 遍历键集,找值 get(key)  
             2.根据键值对找键值 获取键值对对象的集合 entrySet() 遍历集合,获取键值对对象的集合,然后根据键值对对象找到键值         
        map集合的删除方法 可以根据键来删除 remove(key)
    }
    
    collections 工具类 针对集合操作的工具类  sort reverse max min
    }
四 . 异常
        错误和异常
             
五 . IO流 {
    1.File 文件和目录路径名的抽象表现形式  
        方法 :
            创建文件 creatNewFile()
            创建文件夹 mkdir()  创建多级文件夹 mkdirs()
            删除 delete()
            重命名 reNameTo()
            判断功能{
                isDirectory() 是否是文件夹
                isFile()       是否是文件
                exists()       是否存在
                canRead()     是否可读
                canWrite()    是否可写
                isHidden()    是否隐藏
            }
            获取功能{
                getAbsolutepath() 获取绝对路径
                getpath()         获取相对路径
                getLength()       获取文件长度
                getName()         获取文件名
                lastModified()    获取最后修改时间
                List()            获取目录中的文件名
                ListFiles()       获取目录中的文件
                
            }
            
            字节流 inputStream  outPutStream
            字符流 reader       writer  
            方法 就是read  write read方法 当读取到文件末尾的时候返回-1  write方法写入数据的时候,可以按照字节数组写入 fos.write( byte[]) fos.write( byte[],int off ,int len)
        字节缓冲流 bufferedoutputStream bufferedInputStream  
                   输出流的刷新功能 flush()
            对象序列化流     objectoutputstream   向流中写入数据
            对象反序列化流   objectinputstream    从流中读取数据
            对象序列化一定要是实现serializable接口  
            如果对象中有的成员变量不需要被序列化,使用关键字transient声明
}
六 . 网络编程
     OSI参考模型 {
     应用层
     表示层
     会话层
     传输层
     网络层
     数据链路层
     物理层
     }
     TCP/IP参考模型  {
         应用层
         传输层
         网际层
         主机至网络层
     }
     网络编程的三要素{
         ip
         端口(0-65535)
         协议 (tcp 建立数据通道,无限制,效率低但是可靠  udp 数据打包有限制,不连接,不可靠)
     }
      socket机制 : 通信两端都有socket对象; 所有通信都是通过socket之间的io进行操作的 socket用于将应用程序和端口连接起来  
    
七 . 多线程
     多线程的创建方式 {
         方式1.继承Thread,调用start方法  
         方式2.实现runnable接口 ,实现run方法,start开启
     }
     同步锁:多个线程想保证线程安全,使用的是同一个锁对象
     关键字: synchronize
    

八 . 数据库 {
      数据库的启动和关闭 {
      net start mysql;
      net stop  mysql;
      }   
      登录{
          mysql -user=用户名 --host=ip地址 --password=密码
      }
    sql语句{
        结构化查询语句,关系数据库语言的国际标准
        sql分类{
            数据定义语言{(DDL) create alter drop }
            数据操作语言{(DML) insert delete update}
            数据控制语言{(DCL) grant}}
            数据查询语言{(DQL) select from where }
        }
        
    
    数据库操作 {
        创建数据库 create database 数据库名; (character set 编码)
        查看数据库 show databases;
                   show create database 数据库名;
        删除数据库 drop database 数据库名 ;
        切换数据库 use数据库名;
        查看正在使用的数据库 select database;
    }
    
    表操作 {
        创建表 create table 表名(字段名 类型 约束,字段名 类型 约束)
        查看表 查看所有的表 show tables;
                查看表结构 desc 表名;
        删除表 drop table 表名 ;
        修改表 alter  {
            添加列
            修改列的类型长度以及约束
            修改列名
            删除列
            修改表名
              这几个方法差不多,alter table 表名 +后面的不一样 add  change drop
        }
    }
    
    插入记录 {
        insert into 表名 (列名1 ,列名2...)values (值1,值2...)
    }
    更新记录{
        update 表名 set 字段名=值 where 条件;
    }
    删除记录{
        
        delete from 表名 where 条件;  /delete from 表名 having 后面可以是聚合函数
    }
    分组查询 Group by
    limit 从第几条开始查询,查询几条数据 从第几条开始查询但是不包含当前的第几条
    
    }
    Android
一.数据解析  
xml解析 {
    1.DOM解析:{
        特点: 可以读写
              整个文件加载,在内存中形成DOM树结构
              将xml中每一个节点,都当做node对象处理
              方便对文件内容进行修改
        缺点: 当数据很大的时候,超过300kb容易内存溢出       
    }
    2.SAX解析 {
        特点 : 可以读写
               基于事件驱动方式,只能一行一行读取
               读取的时候进行解析,读取一行解析一行
        缺点: 不可以回读        
    }
    3.pull解析 {
        特点 : 基于sax解析
        和SAX的区别:个人理解 {pull解析更容易控制,当我们判断事件满足的时候可以停止解析 }
        
    }
    
    
    
    
}     
   
0 0
原创粉丝点击