杀死端口
编程过程中,如果某一个端口已经被别的程序占用,
可以进行杀死端口操作,windows命令行窗口下执行过程
1.查看指定端口的占用情况
netstat -aon|findstr "8080"
2 .直接强制杀死指定端口
taskkill /pid 4136 -t -f
java中的拆箱与装箱
自动装箱:
把基本类型 包装成对应的 包装类型 的过程:
Integer a = 5;//a是引用类型,引用了包装对象的地址。
编译器会完成对象的自动装箱:Integer a = Integer.valueOf(5);
自动拆箱:
从包装类型的值,自动变成 基本类型的值
int i = a;//a现在是包装类型,没法给变量赋值,需要把5取出来。
编译器会完成自动拆箱:int i = a.intValue();
==和equals区别:
1、 ==比较时,如果相比较的两个变量是引用类型,那么比较的是两者的物理地
值(内存地址),如果相比较的两个变量都是数值类型,那么比较的是具体数值是否相 等。
2、 当使用equals()方法进行比较时,比较的结果实际上取决于equals()方法的具体实现。
众所周知,任何类都继承自Object类,因此所有的类均具有Object类的特性,比如String、integer等,他们在自己的类中重写了equals()方法,此时他们进行的是数值的比较,而在Object类的默认实现中,equals()方法的底层是通过==来实现的。
//==和equals区别
public class Test7 {
public static void main(String[] args) {
Person p1 = new Person("jack",10);
Person p2 = new Person("jack",10);
//==如果比较的是对象,就是比对象的地址值
System.out.println( p1 == p2 );//false
//==如果比较的是基本类型,就是比较值本身是否相等
System.out.println(p1.age==p2.age);//true
System.out.println(p1.equals(p2));
//此时,我们并没有提供equals()也就是说在使用Object的功能,也就是默认使用的==比较
//重写equals()后,就会使用重写后的功能,也就是比较的不再是地址值,而是,属性值。
}
}
class Person{
String name;
int age;
public Person() {}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
//比较两个对象的属性值,如果属性值都一样,就是同一个对象,要求equals()比完返回true
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Person other = (Person) obj;
if (age != other.age)
return false;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}