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.集合和数组区别:
- 长度方面:数组长度固定,定义短可能不够用,定义长造成空间的浪费,而集合大小可以改变。
- 内容方面:数组存储基本数据类型和引用数据类型,而集合中存储引用数据类型。
- 元素方面:数组中只能存储同一类型的成员,而集合中可以存储不同的类型的数据。
每一个不同的集合,底层对应不同的数据结构,往不同的集合中存储元素就等于将数据放到了不同的数据结构中。
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)
- 整体是一个数组;
- 数组每个位置是一个链表;
- 链表每个节点中的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