Java知识点总结

                                           Java知识点总结

一、 Java基础

1、Java简介

             Java是Sun公司1995年推出的Java面向对象程序设计语言和Java平台的总称。

             Java分为三个体系:JavaSE(标准版)、JavaEE(企业版)、JavaME(微型版)

 

2、基本数据类型

(1)、整数型

             byte:8位带符号二进制

            short:16位带符号二进制

            int:32位带符号二进制

            long:64位带符号二进制

(2)、浮点数类型

            float:32位带符号二进制,后缀F或f,8位指数,23位有效尾数

            double:64位带符号二进制,后缀D或d,11位指数,52位有效尾数

(3)、字符类型

            char:16位无符号二进制,使用Unicode码表示字符(可以为中文)

(4)、布尔类型

             boolean:true或false

 

3、Java数组

             Java数组实在内存中存储相同类型的连续的空间,声明一个数组就是在内存空间中划出一串联系的空间。

             数组名代表的是连续空间的首地址,数组的下标从0开始。数组长度一旦声明,不可改变,不可追加。

             测试如下图所示

 

 

4、String类和StringBuffer类

(1)、String类

             String类用于字符串操作,本质是char[]。

             String对象的值是不可变的,当修改一个String对象的内容,JVM不会改变原来的对象,而是生成一个新的String对象。

             使用String str = "ABCD"时,会先看常量池中是否已有值,如有则引用,没有则创建String对象。当使用String str = new   String("ABCD")生成String对象时,无论常量池中是否有字符串的值都会构造新的String对象。

 

             测试如下图所示

 

(2)、StringBuffer类

             与String类不同的是,StringBuffer类的对象能够被多次的修改,且不产生新的未使用的对象。StringBuffer的内部使用字符数组,当放入StringBuffer对象的字符长度超过初始化时设置的字符数组长度时,需要重新开辟长度增加两倍的字符数组,并把原来的字符数组内容复制到新字符数组中。所以设置合适的长度,对StringBuffer的性能影响很大。

             测试如下图所示

(3)、String和StringBuffer相互互换

 

 

5、接口

             接口(英文:Interface),在JAVA编程语言中是一个抽象类型,是抽象方法的集合,接口通常以interface来声明。一个类通过继承接口的方式,从而来继承接口的抽象方法。

             声明接口:

            接口实现:当类实现接口的时候,类要实现接口中所有的方法。否则,类必须声明为抽象的类。类使用implements关键字实现接口,例public class test implements TestInterface。

            接口的继承:一个接口能继承另一个接口,与类继承不同的是,接口允许多继承。接口的继承使用extends关键字,子接口继承父接口的方法。

 

6、泛型

            泛型的本质是为了参数化类型(在不创建新的类型的情况下,通过泛型指定的不同类型来控制形参具体限制的类型)。也就是说在泛型使用过程中,操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法中,分别被称为泛型类、泛型接口、泛型方法。

            泛型类:

           泛型接口:泛型接口与泛型类的定义及使用基本相同。

           泛型方法:是在调用方法的时候指明泛型的具体类型。

 

7、常用的数据结构

           Java中有几种常用的数据结构,主要分为Collection和Map两个主要接口。

 

(1)、几个常用类的区别

           ArrayList:实现了可变大小的数组,元素允许为null,ArrayList是非同步。

           Vector:Vector与ArrayList类似,但Vector是同步的。由Vector创建的Iterator正在被使用,另一个线程改变了Vector的状态(例如添加或删除了一些元素),这时调用Iterator的方法会抛出ConcurrentModificationException异常。

           LinkedList:实现了List接口,元素允许为null。LinkedList提供额外的get、remove、insert方法在LinkedList的首部或尾部。这些方法使LinkedList可被用作堆栈(stack)、队列(queue)或双向队列。

           注意:注意LinkedList没有同步方法。如果多个线程同时访问一个List,则必须自己实现访问同步。一种解决方法是在创建List时构造一个同步的List:
           List list = Collections.synchronizedList(new LinkedList(...));

           HashTable:Hashtable继承Map接口,实现一个key-value映射的哈希表。任何非空的对象都可作为key或者value。添加数据使用put(key, value),取出数据使用get(key),这两个基本操作的时间开销为常数。此外,HashTable是同步的。

           HashMap:HashMap与HashTable类似,不同之处在于HashMap是非同步的,且允许null(null value和null key)。

(2)、Vertor、ArrayList和LinkedList

           如果能用数组的时候(元素类型固定,数组长度固定),尽量使用数组来代替List; 

           如果没有频繁的删除插入操作,又不用考虑多线程问题,优先选择ArrayList; 
           如果在多线程条件下使用,可以考虑Vector; 
           如果需要频繁地删除插入,选择LinkedList; 

           大多数情况下,ArrayList的性能最好。

  • 7
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值