查漏补缺(一)

1.int和integer 的区别

  • Int是java的一种基本数据类型,它用于表示整数。而integer时java中的一个包装类,是引用数据类型,也是用于表示整数。
  • Int的默认值是0;integer的默认值是null,也就是integer是可以区分出未赋值和值为0的区别,而int则无法表达出未赋值的情况。
  • integer必须实例化之后才能引用,而int变量不需要实例化。
  • integer实际是对象的引用,当new一个integer时,实际上是生成一个指针指向次对象,而int则是直接存储数据值。
  • 另外,Integer提供了多个与整数相关的操作方法,比如,把一个字符串转换成整数,integer中还定义了表示整数的最大值和最小值的常量。
  • Int的取值范围是-231 ~231-1(-2147483648~2147483647),在计算机中占4个字节,integer的取值范围是-128-127。

注:在比较两个基本类型的值时,可以使用“==”和“!=”运算符;在比较两个包装类型的值时,不能使用“==”和“!=”运算符,而是应该使用equals()方法来比较它们的值是否相等。


2.java中集合

  1.集合和数组区别:

  1. 长度方面:数组长度固定,定义短可能不够用,定义长造成空间的浪费,而集合大小可以改变。
  2. 内容方面:数组存储基本数据类型和引用数据类型,而集合中存储引用数据类型。
  3. 元素方面:数组中只能存储同一类型的成员,而集合中可以存储不同的类型的数据。

每一个不同的集合,底层对应不同的数据结构,往不同的集合中存储元素就等于将数据放到了不同的数据结构中。

  2.集合分类

     1.单列集合collection

         List可以重复  ArrayList  LinkedList

         Set不可重复 HashSet   TreeSet

List:存储元素有序可重复,存进去和取出来的顺序相同。(list集合都有下标)

  • ArrayList:底层采用数组去存储数据,它适合查询,不适合做频繁的增删元素,所以查询效率高,增删效率低。(它是非线程安全的。)
  • LinkedList:底层采用双向链表来存储元素,链表在空间山没有顺序,在查询时候只能从头结点开始查找,所以查询效率低,增删效率高。(它是非线程安全的)
  • Vector:底层和ArrayList相同,但是这个集合在多线程环境下是安全的,效率低下。

Set:存储元素无序,不可重复,存进去和取出来的顺序不同。(Set集合没有下标)

  • HashSet:底层是一个哈希表或者叫做散列表,HashSet底层实际上是一个HashMap,向HashSet集合中存储元素,实际上是存储到了HashMap的key中了。(是非线程安全的)
  • SortedSet:存储元素无序不可重复(由于继承了set集合),但是存进去的元素可以自动按照元素大小顺序排序。(它是非线程安全的)
  •           TreeSet:底层实际上是TreeMap二叉树数据结构。TreeSet集合在new的时候,底层实际上是new了一个TreeMap集合。向TreeSet集合中存储元素,实际上是存储到了 TreeMap的key中了。(它是非线程安全的)

2.双列集合 map   HashMap  TreeMap
  • HashMap:HashMap集合底层为哈希表数据结构。(是非线程安全的)(hashmap中的key和value允许时null
  • HashTable:该集合底层也是哈希表数据结构,其中所有的方法都带有synchronized关键字,效率较低。(是线程安全的)(hashtable中的key和value不允许null
  •               Properties:(实现类,HashTable的子类,因为继承自HashTable,所以是线程安全 的)存储数据也是键值对的形式存储,且key和value只支持String类型,不支持其他类型。Properties被称为属性类。
  • SortedMap:SortedMap集合的key存储元素的特点,首先无序不可重复的,另外key部分元素会按照大小顺序排序。(它是非线程安全的)
  •              TreeMap:集合底层的数据结构是一个二叉树。(它是非线程安全的)

3..HashMap

数据结构 数组+链表,其中:链表的节点存储的是一个 Entry 对象,每个Entry 对象存储四个属性(hash,key,value,next)

  1. 整体是一个数组;
  2. 数组每个位置是一个链表;
  3. 链表每个节点中的Value即我们存储的Object;

方法:

   1.Put方法:put(K key, V value) 将键(key)/值(value)映射存放到Map集合中

HashMap<String,Integer>map=new HashMap<String,Integer>();

Map.put(“Tom”,100);

Map.put(“Bob”,95);

注:Key不允许重复,否则覆盖已有的key对应的值

    2.get(Object key) 返回指定键所映射的值,没有该key对应的值则返回 null。

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

int a=map.get("Tom");

System.out.println(a);

输出:100

    3.size()  返回Map集合中数据数量

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

int a=map.get("Tom");

System.out.println(a);

        System.out.println(map.size());

输出3

   4.clear() 清空Map集合

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

int a=map.get("Tom");

System.out.println(a);

        System.out.println(map.size());

        map.clear();

    5.isEmpty () 判断Map集合中是否有数据,如果没有则返回true,否则返回false

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

int a=map.get("Tom");

System.out.println(a);

        System.out.println(map.size());

        map.clear();

System.out.println(map.isEmpty());

输出:false

    6.remove(Object key) 删除Map集合中键为key的数据并返回其所对应value值。

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

System.out.println(map.remove("Tom"));

输出:100

     7.values()  返回Map集合中所有value组成的以Collection数据类型格式数据。

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

Collection<Integer> con = map.values();//(了解)有HashMap value值组成的集合

for (int score : con) {

System.out.println(score);

     8.containsKey(Object key)  判断集合中是否包含指定键,包含返回 true,否则返回false

     9. containsValue(Object value)  判断集合中是否包含指定值,包含返回 true,否则返回false

HashMap<String,Integer> map=new HashMap<String,Integer>();

map.put("Tom", 100);

map.put("Jim", 90);

map.put("Bob", 95);

    boolean a =containsKey(Object key)//判断集合中是否包含指定键,包含返回 true,否则返回false

    boolean b=containsValue(Object value)//判断集合中是否包含指定值,包含返回 true,否则返回false

   10.keySet()  返回Map集合中所有key组成的Set集合

   11.entrySet()  将Map集合每个key-value转换为一个Entry对象并返回由所有的Entry对象组成的Set集合


4..MySQL实现数据库分页

LIMIT函数:(适用于数据较少的情况)LIMIT子句可以用来限制由SELECT语句返回过来的数据数量,它有一个或两个参数,如果给出两个参数, 第一个参数指定返回的第一行在所有数据中的位置,从0开始(注意不是1),第二个参数指定最多返回行数。

select * from table WHERE … LIMIT 10; #返回前10行

select * from table WHERE … LIMIT 0,10; #返回前10行

select * from table WHERE … LIMIT 10,20; #返回第10-20行数据


5.左连接,内连接,右连接,全连接

内连接表示两个表或者多个表的交集

外连接表示以一表为主,左连接以左表为基础,根据ON后的条件把两表连接起来,结果会将左表所有的查询信息列出,而右表只列出ON后条件与左表满足的部分,叫做左外连接。

右连接表示以右表为基础,根据ON后的给出的两表的条件将两表连接起来,将右表所有的查询信息列出,而左表只列出ON后条件与右表满足的部分,叫做右外连接。

内连接是同时将两表作为参考对象,根据ON后给出的两表的条件连接起来,两表同时满足ON后的条件的部分才会被列出。


指路集合:http://t.csdnimg.cn/8iuBK

指路HashMap:http://t.csdnimg.cn/vB3s4  

http://t.csdnimg.cn/JQxPW

(方法)http://t.csdnimg.cn/fWK2n

指路 分页:http://t.csdnimg.cn/rmxEu

指路 连接:http://t.csdnimg.cn/IHlty

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值