java基础
1、方法重载和方法重写的区别
| 比较点 | 重载 | 重写 | |
| 1 | 单词 | Overload | Override |
| 2 | 方法的声明 | 方法名相同,参数列表不同 | 方法名相同,参数列表相同 |
| 3 | 返回值 | 没有要求 | 返回值必须相同或者子类 |
| 4 | 访问权限 | 没有要求 | 比父类大 |
| 5 | 异常范围 | 没有要求 | 比父类小或者与父类相同 |
| 6 | 范围 | 同一个类中 | 继承关系中 |
2、在别人博客看到一篇文章,说写一个方法:指定一个整数n,返回一组随机数,包含0--( n-1),不能重复。
评论里有人收用Set可以直接返回,因为HashSet存的元素是无序的,觉得想法有新意。
但是还是验证了下:
public static void getRandomList(int len) {
Set set = new HashSet();
for (int i = 0; i < len; i++) {
set.add(i);
}
Iterator iterator = set.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
}
发现传入10,100,1000...都是顺序返回,后来传入1000,000 发现总体是递增的,局部有乱序。
HashSet是不保证有序,但不是保证无序,这是有区别的。
评论下其他的方法:
public static void getRandomList(int len) {
List list = new ArrayList(len);
List list2 = new ArrayList(len);
for (int i = 0; i < len; i++) {
list.add(i);
}
Random r = new Random();
while (list.size() > 0) {
list2.add(list.remove(r.nextInt(list.size())));
}
System.out.println(list2);
}
2、代码执行顺序
public class Pa {
public static void static_method() {
System.out.println("Pa:static_method");
}
static {
System.out.println("Pa:static_area");
}
{
System.out.println("Pa:normal_area");
}
public Pa() {
System.out.println("Pa:constructor");
}
}
public class A extends Pa {
public static void static_method() {
System.out.println("A:static_method");
}
static {
System.out.println("A:static_area");
}
{
System.out.println("A:normal_area");
}
public A() {
System.out.println("A:constructor");
}
}
public static void main(String[] args) {
A a = new A();
}
结果:
Pa:static_area A:static_area Pa:normal_area Pa:constructor A:normal_area A:constructor

浙公网安备 33010602011771号