Java基础内容

只是简单的列一个大纲。

1、Java的跨平台原理

    java通过不同的系统,不同的版本,不同位数的java虚拟机(JVM)来屏蔽不同系统的指令集差异而对外提供统一

接口(Java API),普通java开发者只需要按照接口开始即可。当系统部署到不同版本的系统上,只需要安装系统对应版本的

java虚拟机即可。

2、搭建开发环境的步骤

    1、适合开发环境的JDK,配置环境变量,JAVA_HOME,eclipse和tomcat会依赖这个变量

    2、适应开发环境的编辑器(idea,eclipse)

    3、需要Web服务器(tomcat)

3、基本数据类型:java中一共有8中基本数据类型,4种整型,2种浮点类型,1种用于表示Unicode编码的字符单元的字符类型,1种用于表示真值的Boolean类型,1字节==32位

    1.整型
    类型              存储需求     bit数    取值范围      备注
    int                 4字节           4*8 
    short             2字节           2*8    -32768~32767
    long              8字节           8*8
    byte              1字节           1*8     -128~127

    2.浮点型
    类型              存储需求     bit数    取值范围      备注
    float              4字节           4*8                  float类型的数值有一个后缀F(例如:3.14F)
    double          8字节           8*8                       没有后缀F的浮点数值(如3.14)默认为double类型

    3.char类型
    类型              存储需求     bit数     取值范围      备注
    char              2字节          2*8

    4.boolean类型
    类型              存储需求    bit数    取值范围      备注

    boolean        1字节          1*8      false、true

4、面向对象的特性:继承、封装、多态(举例说明)

5、基本数据类型和包装类型

    装箱:把基本数据类型转换成包装类型

    自动装箱:Integer a = 10,编译时会调用Integer.valueOf(10)装箱

    自动拆箱:int b = a,编译时会调用a.intValue()拆箱

    拆箱:把包装类型转换成基本数据类型

    基本数据类型不具备面向对象的特性(包装类型封装了一些方法)

缓存值:Integer缓存-128到127的值

6、“==”与equals方法的比较

    1、“==”比较两个变量的值是否相等,变量可以是基本数据类型,可以是引用类型。如果是基本数据类型,直接比较的是

变量的值,引用类型比较的是比较的是对应引用的内存的首地址。 

    2、equals比较的是两个对象的某些特征是否一样,一般需要重写equals方法

7、String、StringBuilder、StringBuffer

    String:final修饰,内容不可变。底层是使用不可变的数据(final char[])

    StringBuilder:内容可变,线程不安全

    StringBuffer:内容可变,线程安全

8、集合:Collection、Map

    List:有序,可重复

    Set:无序,不可重复。根据equals和hashcode判断,如果一个对象要存储到set中必须重写 equals和hashCode方法

    Map:以key-value形式存储数据

9、ArrayList和LinkedList

    ArrayList:底层使用数组,查询速度快,增加和删除慢。数组在内存中是一块连续的内存,插入和删除需要移动内存。

    LinkedList:底层使用链表,查询效率低,插入和删除效率高,只需要改变引用指向即可。

10、HashMap和HashTable

    1、都用以key-value形式存储数据

    2、HashMap:线程不安全,效率高

    3、HashTable:线程安全,效率低

    4、ConcurrentHashMap:线程安全,效率高。原理,将整个Map分成多个Segment(类似HashTable),存在多个锁,

默认提升16倍效率。

11、实现一个拷贝文件的工具类使用字节流还是字符流

    1、字符流传递的是字符,字节流传递的是二级制文件

    2、由于拷贝的文件不确定性只包含字符,可能拷贝图片、视频等字节流文件,为了通用性,使用字节流

12、多线程基础

    1、实现方式:

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

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

    2、调用方式

        调用start()方法启动线程,执行run()方法

    3、thread.setName("设置一个线程名称");

13、线程并发库

   1、 java通过Executors提供四种线程池,分别为: 

        newCachedThreadPool:创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可

回收,则新建线程。

        newFixedThreadPool:创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。

        newScheduledThreadPool:创建一个定长线程池,支持定时及周期性任务执行。

        newSingleThreadExecutor:创建一个单线程化的线程池,它只会用唯一的工作线程来执行任务,保证虽有任务

按照指定顺序(FIFO,UFO 优先级)执行。

    2、线程池的作用:限制线程的个数,不会导致由于线程过多导致系统执行缓慢或奔溃

14、设计模式

    1、常用:单例模式、工厂模式、代理模式、包装模式    

    2、单例模式:饱汉模式,饿汉模式  


    


    



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值