dsfg

JAVA基本语法

 

JAVA面向对象

三大特征:

封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。

继承:继承是指这样一种能力:它可以使用现有类的所有功能,并在无需重新编写原来的类的情况下对这些功能进行扩展。通过继承创建的新类称为子类派生类,被继承的类称为基类父类超类。继承的过程,就是从一般到特殊的过程。

多态:就是指一个类实例的相同方法在不同情形有不同表现形式。多态机制使具有不同内部结构的对象可以共享相同的外部接口。

 

JAVA包装类及Stringjson数据格式

包装类:

包装类和基本数据类型转换:自动装箱自动拆箱

基本数据类型和String转换:

  public static Xxx  parseXxx(String s)   //Xxx指的是,包装类对应的基本数据类型

String

1. StringStringBuilderStringBuffer三者的区别

区别主要是在两个方面,即运行速度和线程安全这两方面。

1)运行速度(执行速度)速度快慢为:StringBuilder > StringBuffer > String

String最慢的原因:String为字符串常量,而StringBuilderStringBuffer均为字符串变量,即String对象一旦创建之后该对象是不可更改的,但后两者的对象是变量,是可以更改的。

2)在线程安全上,StringBuilder是线程不安全的,而StringBuffer是线程安全的

所以如果要进行的操作是多线程的,那么就要使用StringBuffer,但是在单线程的情况下,还是建议使用速度比较快的StringBuilder

总结一下
String:适用于少量的字符串操作的情况

StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况

StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况

2. String 比较方法(==equals比较)

==号在比较基本数据类型时比较的是值,而用==号比较两个对象时比较的是两个对象的地址值;那么,在所有没有重写equals()方法的类中,调用equals()方法其实和使用==号的效果一样,也是比较的地址值,然而,Java提供的所有类中,绝大多数类都重写了equals()方法,重写后的equals()方法一般都是比较两个对象的值: 

json数据格式

JsonJAVA对象、map集合的转换

三方工具:Jackson

ObjectMapper mapper = getDefaultObjectMapper(); 

对象、listmap转化成json

 String object2json = mapper.writeValueAsString(student1);

json转化成对象、listmap

  json2object = mapper.readValue(object4json, Student.class); 

 

ProtobufJSON互相转换

三方工具:protobuf-java-format.jar

使用:

protobufjson

Message someProto = SomeProto.getDefaultInstance();  

String jsonFormat = JsonFormat.printToString(someProto);  

jsonprotobuf

Message.Builder builder = SomeProto.newBuilder();  

String jsonFormat = load json from source;  

JsonFormat.merge(jsonFormat, builder);  

 

JAVA集合:List  Set  Map

总结:

     ArrayXxx:底层数据结构是数组,查询快,增删慢

         LinkedXxx:底层数据结构是链表,查询慢,增删快

         HashXxx:底层数据结构是哈希表。依赖两个方法:hashCode()equals()

         TreeXxx:底层数据结构是二叉树。保证元素有序(自然排序和比较器排序)

 

 

       

 

List:有序(指增加顺序),可重复:查找元素效率高,插入删除元素效率低,因为会引起其他元素位置改变。

ArrayList:底层数据结构是数组;查询快,增删慢;线程不安全,效率高。

Vector:底层数据结构是数组;查询快,增删慢;线程安全,效率低。

LinkedList:底层数据结构是链表;查询慢,增删快;线程不安全,效率高。

 

Set:无序(指增加顺序),不重复;检索元素效率低下,删除和插入效率高,插入和删除不会引起元素位置改变。
        HashSet:底层数据结构是哈希表;无序(元素顺序),不重复。依赖hashCode()equals()保证唯一性

LinkedHashSet:底层数据结构是链表和哈希表,有序(元素顺序),不重复。由链表保证元素有序  由哈希表保证元素唯一

TreeSet:底层数据结构是红黑树;有序(元素顺序),不重复。

 

Map储存键值对的数据

HashMap线程不安全性能稍高一点);HashMap可以使用null作为key(最多一个null),或Value(可有多个null)

LinkedHashMapHashMap慢一点,维护链表来保持map中的key-value时的添加顺序。
    Hashtable线程安全性能稍一点);不允许使用null作为key和value。否则会报错“NullPointerException”。

TreeMapHashMap和HashTable慢(尤其是插入和删除),因为TreeMap底层采用红黑树管理key-value对。但用TreeMap使对象总是处于有序状态,也是其优势。

 

 

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值