Loading...
Navigation
Table of Contents

Java SE DevelopmentCode

常见的Java SE开发常见class使用方法

References

Tricks

  • 一个java文件里面可以有多个类, 但是只能有一个以public修饰的类, 且使用public修饰的类的类名必须与该java文件的文件名相同

Java集合框架(Java Collections Framework)

List ArrayList底层使用的是数组(数组长度是可变的, 百分之五十延长;查询很快, 但增删较慢, 线程不同步); LinkedList底层是链表(查询较慢, 增删较快)

List<String> a = new LinkedList<>();
a.add("hello");//插入元素
a.add("world");
a.add(1, "you")//原来第一个元素往后移

HashMap 三篇参考文献 #1, #2, #3

Map<Integer, String> a = new HashMap<>();
a.put(1, "a");
a.put(null, "null");
Set<Integer> set = a.keySet();
Iterator<Integer> iter = set.iterator();
System.out.println(iter.getClass().getName())
while (iter.hasNext()) {
    Integer key = iter.next();
    System.out.println(key+"===>"+all.get(key));

Others

Object Object类是Java中其他所有类的祖先, 位于java.lang包中

equals()和==

  • ==在java中用于判断存储在栈中的值是否相等, 通俗来讲, 是判断变量(基本or引用)本身是否相同

  • equals()是自行通过覆盖的方法来自行判断两个对象是否相同;但是Object.class里的原始equals()方法是直接使用的==

public boolean equals(Object obj) {
    return (this == obj);}
  • String类: String类中重写了equals()方法, 我们一般采用这个方法判断两个字符串是否相等;如果采用==会发生混乱现象:
String a = "hello";
String b = "hello";
String c = new String("hello");
System.out.println(a == b);//true
System.out.println(a == c);//false

这是因为, String这个特殊的类有2种构造方法(例子中的ac), 第一种方法用到的是字符串缓冲池: 如果缓冲池中已经存在了相同的字符串, 就不会产生新的对象, 而直接返回对缓冲池中的字符串对象的引用;第二种, JVM会创建新的内存区域存储这个字符串(实际中建议用第一种, 可以减少系统资源消耗), 所以发生了不同的判断结果.

  • Interger类: 在Interger对象判定中, 也必须采用equals()方法;如果采用==会发生混乱现象
Integer a = 1000, b = 1000;  
System.out.println(a == b);//false
Integer c = 100, d = 100;  
System.out.println(c == d);//true

这是因为在Integer类中, 对于-128~127之间的对象都采用了缓存, 所以cd都指向的同一个对象.

Last updated on Apr 22, 2018.